(left *ast.ArrayLiteral)
| 1421 | } |
| 1422 | |
| 1423 | func (self *_parser) reinterpretAsArrayAssignmentPattern(left *ast.ArrayLiteral) ast.Expression { |
| 1424 | value := left.Value |
| 1425 | var rest ast.Expression |
| 1426 | for i, item := range value { |
| 1427 | if spread, ok := item.(*ast.SpreadElement); ok { |
| 1428 | if i != len(value)-1 { |
| 1429 | self.error(item.Idx0(), "Rest element must be last element") |
| 1430 | return &ast.BadExpression{From: left.Idx0(), To: left.Idx1()} |
| 1431 | } |
| 1432 | self.checkComma(spread.Expression.Idx1(), left.RightBracket) |
| 1433 | rest = self.reinterpretAsDestructAssignTarget(spread.Expression) |
| 1434 | value = value[:len(value)-1] |
| 1435 | } else { |
| 1436 | value[i] = self.reinterpretAsAssignmentElement(item) |
| 1437 | } |
| 1438 | } |
| 1439 | return &ast.ArrayPattern{ |
| 1440 | LeftBracket: left.LeftBracket, |
| 1441 | RightBracket: left.RightBracket, |
| 1442 | Elements: value, |
| 1443 | Rest: rest, |
| 1444 | } |
| 1445 | } |
| 1446 | |
| 1447 | func (self *_parser) reinterpretArrayAssignPatternAsBinding(pattern *ast.ArrayPattern) *ast.ArrayPattern { |
| 1448 | for i, item := range pattern.Elements { |
no test coverage detected