| Index: runtime/vm/parser.cc
|
| ===================================================================
|
| --- runtime/vm/parser.cc (revision 43843)
|
| +++ runtime/vm/parser.cc (working copy)
|
| @@ -6677,10 +6677,9 @@
|
| ASSERT(IsIdentifier());
|
| const intptr_t ident_pos = TokenPos();
|
| const String& ident = *CurrentLiteral();
|
| - LocalVariable* variable = new(Z) LocalVariable(
|
| - ident_pos, ident, type);
|
| ConsumeToken(); // Variable identifier.
|
| AstNode* initialization = NULL;
|
| + LocalVariable* variable = NULL;
|
| if (CurrentToken() == Token::kASSIGN) {
|
| // Variable initialization.
|
| const intptr_t assign_pos = TokenPos();
|
| @@ -6687,6 +6686,9 @@
|
| ConsumeToken();
|
| AstNode* expr = ParseAwaitableExpr(
|
| is_const, kConsumeCascades, await_preamble);
|
| + const intptr_t expr_end_pos = TokenPos();
|
| + variable = new(Z) LocalVariable(
|
| + expr_end_pos, ident, type);
|
| initialization = new(Z) StoreLocalNode(
|
| assign_pos, variable, expr);
|
| if (is_const) {
|
| @@ -6698,6 +6700,8 @@
|
| "missing initialization of 'final' or 'const' variable");
|
| } else {
|
| // Initialize variable with null.
|
| + variable = new(Z) LocalVariable(
|
| + ident_pos, ident, type);
|
| AstNode* null_expr = new(Z) LiteralNode(ident_pos, Instance::ZoneHandle(Z));
|
| initialization = new(Z) StoreLocalNode(
|
| ident_pos, variable, null_expr);
|
| @@ -6705,7 +6709,7 @@
|
|
|
| ASSERT(current_block_ != NULL);
|
| const intptr_t previous_pos =
|
| - current_block_->scope->PreviousReferencePos(ident);
|
| + current_block_->scope->PreviousReferencePos(ident);
|
| if (previous_pos >= 0) {
|
| ASSERT(!script_.IsNull());
|
| if (previous_pos > ident_pos) {
|
|
|