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

Unified Diff: runtime/vm/parser.cc

Issue 933253003: VM: Fix issue with local variable values reported by the debugger. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: addressed comments Created 5 years, 10 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/platform/assert.cc ('k') | runtime/vm/parser_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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) {
« no previous file with comments | « runtime/platform/assert.cc ('k') | runtime/vm/parser_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698