Chromium Code Reviews| Index: runtime/vm/parser.cc |
| =================================================================== |
| --- runtime/vm/parser.cc (revision 1268) |
| +++ runtime/vm/parser.cc (working copy) |
| @@ -4363,6 +4363,18 @@ |
| ExpectToken(Token::kRPAREN); |
| const bool parsing_loop_body = true; |
| SequenceNode* body = ParseNestedStatement(parsing_loop_body, NULL); |
| + |
| + // Check whether any of the variables in the initializer part of |
| + // the for statement are captured by a closure. If so, we insert a |
| + // node that creates a new Context at the end of the loop body (but |
| + // before the increment expression is evaluated). |
| + for (int i = 0; i < init_scope->num_variables(); i++) { |
| + if (init_scope->VariableAt(i)->is_captured() && |
| + init_scope->VariableAt(i)->owner() == init_scope) { |
|
regis
2011/11/07 22:31:47
missing parenthesis
hausner
2011/11/07 22:36:35
Done.
|
| + body->Add(new CloneContextNode(for_pos)); |
| + break; |
| + } |
| + } |
| CloseBlock(); |
| return new ForNode(for_pos, |
| label, |