Index: runtime/vm/parser.cc |
diff --git a/runtime/vm/parser.cc b/runtime/vm/parser.cc |
index 47cb001d25d3675f6412a3c1fbe19a843a27422f..f14f0b5a4cb7b826f017a872419309f7cadb684c 100644 |
--- a/runtime/vm/parser.cc |
+++ b/runtime/vm/parser.cc |
@@ -1311,7 +1311,7 @@ SequenceNode* Parser::ParseInstanceGetter(const Function& func) { |
LoadInstanceFieldNode* load_field = |
new LoadInstanceFieldNode(ident_pos, load_receiver, field); |
- ReturnNode* return_node = new ReturnNode(Scanner::kNoSourcePos, load_field); |
+ ReturnNode* return_node = new ReturnNode(ident_pos, load_field); |
current_block_->statements->Add(return_node); |
return CloseBlock(); |
} |
@@ -1355,7 +1355,7 @@ SequenceNode* Parser::ParseInstanceSetter(const Function& func) { |
StoreInstanceFieldNode* store_field = |
new StoreInstanceFieldNode(ident_pos, receiver, field, value); |
current_block_->statements->Add(store_field); |
- current_block_->statements->Add(new ReturnNode(Scanner::kNoSourcePos)); |
+ current_block_->statements->Add(new ReturnNode(ident_pos)); |
return CloseBlock(); |
} |
@@ -1483,7 +1483,7 @@ SequenceNode* Parser::ParseMethodExtractor(const Function& func) { |
ParamList params; |
const intptr_t ident_pos = func.token_pos(); |
- ASSERT(func.token_pos() == 0); |
+ ASSERT(func.token_pos() == ClassifyingTokenPositions::kMethodExtractor); |
ASSERT(current_class().raw() == func.Owner()); |
params.AddReceiver(ReceiverType(current_class()), ident_pos); |
ASSERT(func.num_fixed_parameters() == 1); // Receiver. |
@@ -1503,7 +1503,7 @@ SequenceNode* Parser::ParseMethodExtractor(const Function& func) { |
load_receiver, |
NULL); |
- ReturnNode* return_node = new ReturnNode(Scanner::kNoSourcePos, closure); |
+ ReturnNode* return_node = new ReturnNode(ident_pos, closure); |
current_block_->statements->Add(return_node); |
return CloseBlock(); |
} |
@@ -2920,20 +2920,20 @@ SequenceNode* Parser::MakeImplicitConstructor(const Function& func) { |
// Prepare user-defined arguments to be forwarded to super call. |
// The first user-defined argument is at position 1. |
- forwarding_args = new ArgumentListNode(Scanner::kNoSourcePos); |
+ forwarding_args = new ArgumentListNode(ctor_pos); |
for (int i = 1; i < func.NumParameters(); i++) { |
LocalVariable* param = new LocalVariable( |
Scanner::kNoSourcePos, |
String::ZoneHandle(Z, func.ParameterNameAt(i)), |
Object::dynamic_type()); |
current_block_->scope->InsertParameterAt(i, param); |
- forwarding_args->Add(new LoadLocalNode(Scanner::kNoSourcePos, param)); |
+ forwarding_args->Add(new LoadLocalNode(ctor_pos, param)); |
} |
} |
AstNode* super_call = GenerateSuperConstructorCall( |
current_class(), |
- Scanner::kNoSourcePos, |
+ ctor_pos, |
receiver, |
forwarding_args); |
if (super_call != NULL) { |
@@ -2942,7 +2942,7 @@ SequenceNode* Parser::MakeImplicitConstructor(const Function& func) { |
CheckFieldsInitialized(current_class()); |
// Empty constructor body. |
- current_block_->statements->Add(new ReturnNode(Scanner::kNoSourcePos)); |
+ current_block_->statements->Add(new ReturnNode(ctor_pos)); |
SequenceNode* statements = CloseBlock(); |
return statements; |
} |
@@ -7084,14 +7084,14 @@ SequenceNode* Parser::CloseAsyncFunction(const Function& closure, |
// Add to AST: |
// :async_completer = new Completer.sync(); |
ArgumentListNode* empty_args = |
- new (Z) ArgumentListNode(Scanner::kNoSourcePos); |
+ new (Z) ArgumentListNode(closure_body->token_pos()); |
ConstructorCallNode* completer_constructor_node = new (Z) ConstructorCallNode( |
- Scanner::kNoSourcePos, |
+ closure_body->token_pos(), |
TypeArguments::ZoneHandle(Z), |
completer_constructor, |
empty_args); |
StoreLocalNode* store_completer = new (Z) StoreLocalNode( |
- Scanner::kNoSourcePos, |
+ closure_body->token_pos(), |
async_completer, |
completer_constructor_node); |
current_block_->statements->Add(store_completer); |
@@ -7100,18 +7100,19 @@ SequenceNode* Parser::CloseAsyncFunction(const Function& closure, |
LocalVariable* jump_var = |
current_block_->scope->LookupVariable(Symbols::AwaitJumpVar(), false); |
LiteralNode* init_value = |
- new(Z) LiteralNode(Scanner::kNoSourcePos, Smi::ZoneHandle(Smi::New(-1))); |
+ new(Z) LiteralNode(closure_body->token_pos(), |
+ Smi::ZoneHandle(Smi::New(-1))); |
current_block_->statements->Add( |
- new(Z) StoreLocalNode(Scanner::kNoSourcePos, jump_var, init_value)); |
+ new(Z) StoreLocalNode(closure_body->token_pos(), jump_var, init_value)); |
// Add to AST: |
// :async_op = <closure>; (containing the original body) |
LocalVariable* async_op_var = current_block_->scope->LookupVariable( |
Symbols::AsyncOperation(), false); |
ClosureNode* cn = new(Z) ClosureNode( |
- Scanner::kNoSourcePos, closure, NULL, closure_body->scope()); |
+ closure_body->token_pos(), closure, NULL, closure_body->scope()); |
StoreLocalNode* store_async_op = new (Z) StoreLocalNode( |
- Scanner::kNoSourcePos, |
+ closure_body->token_pos(), |
async_op_var, |
cn); |
current_block_->statements->Add(store_async_op); |
@@ -7123,18 +7124,18 @@ SequenceNode* Parser::CloseAsyncFunction(const Function& closure, |
Symbols::AsyncThenWrapperHelper())); |
ASSERT(!async_then_wrapper_helper.IsNull()); |
ArgumentListNode* async_then_wrapper_helper_args = new (Z) ArgumentListNode( |
- Scanner::kNoSourcePos); |
+ closure_body->token_pos()); |
async_then_wrapper_helper_args->Add( |
- new (Z) LoadLocalNode(Scanner::kNoSourcePos, async_op_var)); |
+ new (Z) LoadLocalNode(closure_body->token_pos(), async_op_var)); |
StaticCallNode* then_wrapper_call = new (Z) StaticCallNode( |
- Scanner::kNoSourcePos, |
+ closure_body->token_pos(), |
async_then_wrapper_helper, |
async_then_wrapper_helper_args); |
LocalVariable* async_then_callback_var = |
current_block_->scope->LookupVariable( |
Symbols::AsyncThenCallback(), false); |
StoreLocalNode* store_async_then_callback = new (Z) StoreLocalNode( |
- Scanner::kNoSourcePos, |
+ closure_body->token_pos(), |
async_then_callback_var, |
then_wrapper_call); |
@@ -7147,18 +7148,18 @@ SequenceNode* Parser::CloseAsyncFunction(const Function& closure, |
Symbols::AsyncErrorWrapperHelper())); |
ASSERT(!async_error_wrapper_helper.IsNull()); |
ArgumentListNode* async_error_wrapper_helper_args = new (Z) ArgumentListNode( |
- Scanner::kNoSourcePos); |
+ closure_body->token_pos()); |
async_error_wrapper_helper_args->Add( |
- new (Z) LoadLocalNode(Scanner::kNoSourcePos, async_op_var)); |
+ new (Z) LoadLocalNode(closure_body->token_pos(), async_op_var)); |
StaticCallNode* error_wrapper_call = new (Z) StaticCallNode( |
- Scanner::kNoSourcePos, |
+ closure_body->token_pos(), |
async_error_wrapper_helper, |
async_error_wrapper_helper_args); |
LocalVariable* async_catch_error_callback_var = |
current_block_->scope->LookupVariable( |
Symbols::AsyncCatchErrorCallback(), false); |
StoreLocalNode* store_async_catch_error_callback = new (Z) StoreLocalNode( |
- Scanner::kNoSourcePos, |
+ closure_body->token_pos(), |
async_catch_error_callback_var, |
error_wrapper_call); |
@@ -7166,22 +7167,23 @@ SequenceNode* Parser::CloseAsyncFunction(const Function& closure, |
// Add to AST: |
// new Future.microtask(:async_op); |
- ArgumentListNode* arguments = new (Z) ArgumentListNode(Scanner::kNoSourcePos); |
+ ArgumentListNode* arguments = |
+ new (Z) ArgumentListNode(closure_body->token_pos()); |
arguments->Add(new (Z) LoadLocalNode( |
- Scanner::kNoSourcePos, async_op_var)); |
+ closure_body->token_pos(), async_op_var)); |
ConstructorCallNode* future_node = new (Z) ConstructorCallNode( |
- Scanner::kNoSourcePos, TypeArguments::ZoneHandle(Z), constructor, |
+ closure_body->token_pos(), TypeArguments::ZoneHandle(Z), constructor, |
arguments); |
current_block_->statements->Add(future_node); |
// Add to AST: |
// return :async_completer.future; |
ReturnNode* return_node = new (Z) ReturnNode( |
- Scanner::kNoSourcePos, |
+ closure_body->token_pos(), |
new (Z) InstanceGetterNode( |
- Scanner::kNoSourcePos, |
+ closure_body->token_pos(), |
new (Z) LoadLocalNode( |
- Scanner::kNoSourcePos, |
+ closure_body->token_pos(), |
async_completer), |
Symbols::CompleterFuture())); |
current_block_->statements->Add(return_node); |