Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1094)

Unified Diff: runtime/vm/parser.cc

Issue 11783009: Big merge from experimental to bleeding edge. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/object_store.h ('k') | runtime/vm/snapshot_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/parser.cc
diff --git a/runtime/vm/parser.cc b/runtime/vm/parser.cc
index 22d8f7cc2ea8a06c7b49bf311b1cca83e0549898..c8d4a4ea581a25c523d1c7357ade984dc3b9dec4 100644
--- a/runtime/vm/parser.cc
+++ b/runtime/vm/parser.cc
@@ -5591,17 +5591,18 @@ AstNode* Parser::ParseForInStatement(intptr_t forin_pos,
// Generate initialization of iterator variable.
ArgumentListNode* no_args = new ArgumentListNode(collection_pos);
- AstNode* get_iterator = new InstanceCallNode(
- collection_pos, collection_expr, Symbols::GetIterator(), no_args);
+ AstNode* get_iterator = new InstanceGetterNode(
+ collection_pos, collection_expr, Symbols::GetIterator());
AstNode* iterator_init =
new StoreLocalNode(collection_pos, iterator_var, get_iterator);
current_block_->statements->Add(iterator_init);
// Generate while loop condition.
- AstNode* iterator_has_next = new InstanceGetterNode(
+ AstNode* iterator_moveNext = new InstanceCallNode(
collection_pos,
new LoadLocalNode(collection_pos, iterator_var),
- Symbols::HasNext());
+ Symbols::MoveNext(),
+ no_args);
// Parse the for loop body. Ideally, we would use ParseNestedStatement()
// here, but that does not work well because we have to insert an implicit
@@ -5610,11 +5611,10 @@ AstNode* Parser::ParseForInStatement(intptr_t forin_pos,
OpenLoopBlock();
current_block_->scope->AddLabel(label);
- AstNode* iterator_next = new InstanceCallNode(
+ AstNode* iterator_current = new InstanceGetterNode(
collection_pos,
new LoadLocalNode(collection_pos, iterator_var),
- Symbols::Next(),
- no_args);
+ Symbols::Current());
// Generate assignment of next iterator value to loop variable.
AstNode* loop_var_assignment = NULL;
@@ -5622,13 +5622,13 @@ AstNode* Parser::ParseForInStatement(intptr_t forin_pos,
// The for loop declares a new variable. Add it to the loop body scope.
current_block_->scope->AddVariable(loop_var);
loop_var_assignment =
- new StoreLocalNode(loop_var_pos, loop_var, iterator_next);
+ new StoreLocalNode(loop_var_pos, loop_var, iterator_current);
} else {
AstNode* loop_var_primary =
ResolveIdent(loop_var_pos, *loop_var_name, false);
ASSERT(!loop_var_primary->IsPrimaryNode());
loop_var_assignment =
- CreateAssignmentNode(loop_var_primary, iterator_next);
+ CreateAssignmentNode(loop_var_primary, iterator_current);
if (loop_var_assignment == NULL) {
ErrorMsg(loop_var_pos, "variable or field '%s' is not assignable",
loop_var_name->ToCString());
@@ -5651,7 +5651,7 @@ AstNode* Parser::ParseForInStatement(intptr_t forin_pos,
SequenceNode* for_loop_statement = CloseBlock();
AstNode* while_statement =
- new WhileNode(forin_pos, label, iterator_has_next, for_loop_statement);
+ new WhileNode(forin_pos, label, iterator_moveNext, for_loop_statement);
current_block_->statements->Add(while_statement);
return CloseBlock(); // Implicit block around while loop.
« no previous file with comments | « runtime/vm/object_store.h ('k') | runtime/vm/snapshot_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698