Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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/ast/ast.h" | 5 #include "src/ast/ast.h" |
| 6 #include "src/messages.h" | 6 #include "src/messages.h" |
| 7 #include "src/parsing/parameter-initializer-rewriter.h" | 7 #include "src/parsing/parameter-initializer-rewriter.h" |
| 8 #include "src/parsing/parser.h" | 8 #include "src/parsing/parser.h" |
| 9 | 9 |
| 10 namespace v8 { | 10 namespace v8 { |
| (...skipping 568 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 579 loop->Initialize(condition, body); | 579 loop->Initialize(condition, body); |
| 580 } | 580 } |
| 581 | 581 |
| 582 block_->statements()->Add(loop, zone()); | 582 block_->statements()->Add(loop, zone()); |
| 583 RecurseIntoSubpattern(spread->expression(), | 583 RecurseIntoSubpattern(spread->expression(), |
| 584 factory()->NewVariableProxy(array)); | 584 factory()->NewVariableProxy(array)); |
| 585 } | 585 } |
| 586 | 586 |
| 587 Expression* closing_condition = factory()->NewUnaryOperation( | 587 Expression* closing_condition = factory()->NewUnaryOperation( |
| 588 Token::NOT, factory()->NewVariableProxy(done), nopos); | 588 Token::NOT, factory()->NewVariableProxy(done), nopos); |
| 589 parser_->FinalizeIteratorUse(completion, closing_condition, iterator, block_, | 589 |
| 590 target); | 590 // Since assignments are being rewritten at the end of parsing, scope() may |
| 591 // already have been removed by FinalizeBlockScope in the meantime. In that | |
| 592 // case, find the first outer non-removed scope. | |
|
Dan Ehrenberg
2016/11/22 16:07:00
Should we put this logic to find the appropriate n
neis
2016/11/23 12:51:08
Done.
| |
| 593 Scope* real_scope = scope(); | |
| 594 while (real_scope != nullptr && real_scope->HasBeenRemoved()) { | |
| 595 real_scope = real_scope->outer_scope(); | |
| 596 } | |
| 597 DCHECK_NOT_NULL(real_scope); | |
|
Toon Verwaest
2016/11/22 08:30:18
What about moving this into an aptly named helper
neis
2016/11/23 12:51:08
Done.
| |
| 598 | |
| 599 parser_->FinalizeIteratorUse(real_scope, completion, closing_condition, | |
| 600 iterator, block_, target); | |
| 591 block_ = target; | 601 block_ = target; |
| 592 } | 602 } |
| 593 | 603 |
| 594 | 604 |
| 595 void Parser::PatternRewriter::VisitArrayLiteral(ArrayLiteral* node) { | 605 void Parser::PatternRewriter::VisitArrayLiteral(ArrayLiteral* node) { |
| 596 Variable* temp_var = nullptr; | 606 Variable* temp_var = nullptr; |
| 597 VisitArrayLiteral(node, &temp_var); | 607 VisitArrayLiteral(node, &temp_var); |
| 598 } | 608 } |
| 599 | 609 |
| 600 | 610 |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 687 NOT_A_PATTERN(TryFinallyStatement) | 697 NOT_A_PATTERN(TryFinallyStatement) |
| 688 NOT_A_PATTERN(UnaryOperation) | 698 NOT_A_PATTERN(UnaryOperation) |
| 689 NOT_A_PATTERN(VariableDeclaration) | 699 NOT_A_PATTERN(VariableDeclaration) |
| 690 NOT_A_PATTERN(WhileStatement) | 700 NOT_A_PATTERN(WhileStatement) |
| 691 NOT_A_PATTERN(WithStatement) | 701 NOT_A_PATTERN(WithStatement) |
| 692 NOT_A_PATTERN(Yield) | 702 NOT_A_PATTERN(Yield) |
| 693 | 703 |
| 694 #undef NOT_A_PATTERN | 704 #undef NOT_A_PATTERN |
| 695 } // namespace internal | 705 } // namespace internal |
| 696 } // namespace v8 | 706 } // namespace v8 |
| OLD | NEW |