| 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);
|
|
|