| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/parsing/parser.h" | 5 #include "src/parsing/parser.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "src/api.h" | 9 #include "src/api.h" |
| 10 #include "src/ast/ast-expression-rewriter.h" | 10 #include "src/ast/ast-expression-rewriter.h" |
| (...skipping 1582 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1593 Declaration* decl = DeclareVariable(variable_name, LET, pos, CHECK_OK); | 1593 Declaration* decl = DeclareVariable(variable_name, LET, pos, CHECK_OK); |
| 1594 decl->proxy()->var()->set_initializer_position(position()); | 1594 decl->proxy()->var()->set_initializer_position(position()); |
| 1595 Assignment* assignment = | 1595 Assignment* assignment = |
| 1596 factory()->NewAssignment(Token::INIT, decl->proxy(), value, pos); | 1596 factory()->NewAssignment(Token::INIT, decl->proxy(), value, pos); |
| 1597 Statement* assignment_statement = | 1597 Statement* assignment_statement = |
| 1598 factory()->NewExpressionStatement(assignment, kNoSourcePosition); | 1598 factory()->NewExpressionStatement(assignment, kNoSourcePosition); |
| 1599 if (names) names->Add(variable_name, zone()); | 1599 if (names) names->Add(variable_name, zone()); |
| 1600 return assignment_statement; | 1600 return assignment_statement; |
| 1601 } | 1601 } |
| 1602 | 1602 |
| 1603 Block* Parser::ParseBlock(ZoneList<const AstRawString*>* labels, bool* ok) { | |
| 1604 // The harmony mode uses block elements instead of statements. | |
| 1605 // | |
| 1606 // Block :: | |
| 1607 // '{' StatementList '}' | |
| 1608 | |
| 1609 // Construct block expecting 16 statements. | |
| 1610 Block* body = factory()->NewBlock(labels, 16, false, kNoSourcePosition); | |
| 1611 | |
| 1612 // Parse the statements and collect escaping labels. | |
| 1613 Expect(Token::LBRACE, CHECK_OK); | |
| 1614 { | |
| 1615 BlockState block_state(&scope_state_); | |
| 1616 block_state.set_start_position(scanner()->location().beg_pos); | |
| 1617 ParserTarget target(this, body); | |
| 1618 | |
| 1619 while (peek() != Token::RBRACE) { | |
| 1620 Statement* stat = ParseStatementListItem(CHECK_OK); | |
| 1621 if (stat && !stat->IsEmpty()) { | |
| 1622 body->statements()->Add(stat, zone()); | |
| 1623 } | |
| 1624 } | |
| 1625 | |
| 1626 Expect(Token::RBRACE, CHECK_OK); | |
| 1627 block_state.set_end_position(scanner()->location().end_pos); | |
| 1628 body->set_scope(block_state.FinalizedBlockScope()); | |
| 1629 } | |
| 1630 return body; | |
| 1631 } | |
| 1632 | |
| 1633 Block* Parser::BuildInitializationBlock( | 1603 Block* Parser::BuildInitializationBlock( |
| 1634 DeclarationParsingResult* parsing_result, | 1604 DeclarationParsingResult* parsing_result, |
| 1635 ZoneList<const AstRawString*>* names, bool* ok) { | 1605 ZoneList<const AstRawString*>* names, bool* ok) { |
| 1636 Block* result = factory()->NewBlock( | 1606 Block* result = factory()->NewBlock( |
| 1637 NULL, 1, true, parsing_result->descriptor.declaration_pos); | 1607 NULL, 1, true, parsing_result->descriptor.declaration_pos); |
| 1638 for (auto declaration : parsing_result->declarations) { | 1608 for (auto declaration : parsing_result->declarations) { |
| 1639 PatternRewriter::DeclareAndInitializeVariables( | 1609 PatternRewriter::DeclareAndInitializeVariables( |
| 1640 this, result, &(parsing_result->descriptor), &declaration, names, | 1610 this, result, &(parsing_result->descriptor), &declaration, names, |
| 1641 CHECK_OK); | 1611 CHECK_OK); |
| 1642 } | 1612 } |
| (...skipping 4548 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6191 node->Print(Isolate::Current()); | 6161 node->Print(Isolate::Current()); |
| 6192 } | 6162 } |
| 6193 #endif // DEBUG | 6163 #endif // DEBUG |
| 6194 | 6164 |
| 6195 #undef CHECK_OK | 6165 #undef CHECK_OK |
| 6196 #undef CHECK_OK_VOID | 6166 #undef CHECK_OK_VOID |
| 6197 #undef CHECK_FAILED | 6167 #undef CHECK_FAILED |
| 6198 | 6168 |
| 6199 } // namespace internal | 6169 } // namespace internal |
| 6200 } // namespace v8 | 6170 } // namespace v8 |
| OLD | NEW |