()
| 811 | } |
| 812 | |
| 813 | func (self *_parser) parseDoWhileStatement() ast.Statement { |
| 814 | inIteration := self.scope.inIteration |
| 815 | self.scope.inIteration = true |
| 816 | defer func() { |
| 817 | self.scope.inIteration = inIteration |
| 818 | }() |
| 819 | |
| 820 | node := &ast.DoWhileStatement{} |
| 821 | node.Do = self.expect(token.DO) |
| 822 | if self.token == token.LEFT_BRACE { |
| 823 | node.Body = self.parseBlockStatement() |
| 824 | } else { |
| 825 | self.scope.allowLet = false |
| 826 | node.Body = self.parseStatement() |
| 827 | } |
| 828 | |
| 829 | self.expect(token.WHILE) |
| 830 | self.expect(token.LEFT_PARENTHESIS) |
| 831 | node.Test = self.parseExpression() |
| 832 | node.RightParenthesis = self.expect(token.RIGHT_PARENTHESIS) |
| 833 | if self.token == token.SEMICOLON { |
| 834 | self.next() |
| 835 | } |
| 836 | |
| 837 | return node |
| 838 | } |
| 839 | |
| 840 | func (self *_parser) parseWhileStatement() ast.Statement { |
| 841 | idx := self.expect(token.WHILE) |
no test coverage detected