()
| 692 | } |
| 693 | |
| 694 | func (self *_parser) parseNewExpression() ast.Expression { |
| 695 | idx := self.expect(token.NEW) |
| 696 | if self.token == token.PERIOD { |
| 697 | self.next() |
| 698 | if self.literal == "target" { |
| 699 | return &ast.MetaProperty{ |
| 700 | Meta: &ast.Identifier{ |
| 701 | Name: unistring.String(token.NEW.String()), |
| 702 | Idx: idx, |
| 703 | }, |
| 704 | Property: self.parseIdentifier(), |
| 705 | } |
| 706 | } |
| 707 | self.errorUnexpectedToken(token.IDENTIFIER) |
| 708 | } |
| 709 | callee := self.parseLeftHandSideExpression() |
| 710 | if bad, ok := callee.(*ast.BadExpression); ok { |
| 711 | bad.From = idx |
| 712 | return bad |
| 713 | } |
| 714 | node := &ast.NewExpression{ |
| 715 | New: idx, |
| 716 | Callee: callee, |
| 717 | } |
| 718 | if self.token == token.LEFT_PARENTHESIS { |
| 719 | argumentList, idx0, idx1 := self.parseArgumentList() |
| 720 | node.ArgumentList = argumentList |
| 721 | node.LeftParenthesis = idx0 |
| 722 | node.RightParenthesis = idx1 |
| 723 | } |
| 724 | return node |
| 725 | } |
| 726 | |
| 727 | func (self *_parser) parseLeftHandSideExpression() ast.Expression { |
| 728 |
no test coverage detected