| Index: runtime/vm/parser.cc
|
| diff --git a/runtime/vm/parser.cc b/runtime/vm/parser.cc
|
| index db0b895024725164efbdc824c7868a9c1d8b7244..543c5024fa130f94e0a5702f95e757c706779527 100644
|
| --- a/runtime/vm/parser.cc
|
| +++ b/runtime/vm/parser.cc
|
| @@ -10525,16 +10525,17 @@ AstNode* Parser::ParseStaticCall(const Class& cls,
|
| arguments->NodeAt(1));
|
| }
|
| }
|
| - return new(Z) StaticCallNode(call_pos, func, arguments);
|
| + return new(Z) StaticCallNode(ident_pos, func, arguments);
|
| }
|
|
|
|
|
| -AstNode* Parser::ParseInstanceCall(AstNode* receiver, const String& func_name) {
|
| +AstNode* Parser::ParseInstanceCall(AstNode* receiver,
|
| + const String& func_name,
|
| + intptr_t ident_pos) {
|
| TRACE_PARSER("ParseInstanceCall");
|
| - const intptr_t call_pos = TokenPos();
|
| CheckToken(Token::kLPAREN);
|
| ArgumentListNode* arguments = ParseActualParameters(NULL, kAllowConst);
|
| - return new(Z) InstanceCallNode(call_pos, receiver, func_name, arguments);
|
| + return new(Z) InstanceCallNode(ident_pos, receiver, func_name, arguments);
|
| }
|
|
|
|
|
| @@ -10734,7 +10735,7 @@ AstNode* Parser::ParseSelectors(AstNode* primary, bool is_cascade) {
|
| const Class& cls = Class::Cast(left->AsPrimaryNode()->primary());
|
| selector = ParseStaticCall(cls, *ident, ident_pos);
|
| } else {
|
| - selector = ParseInstanceCall(left, *ident);
|
| + selector = ParseInstanceCall(left, *ident, ident_pos);
|
| }
|
| } else {
|
| // Field access.
|
| @@ -10828,7 +10829,9 @@ AstNode* Parser::ParseSelectors(AstNode* primary, bool is_cascade) {
|
| "from static function",
|
| func_name.ToCString());
|
| }
|
| - selector = ParseInstanceCall(LoadReceiver(primary_pos), func_name);
|
| + selector = ParseInstanceCall(LoadReceiver(primary_pos),
|
| + func_name,
|
| + primary_pos);
|
| }
|
| } else if (primary_node->primary().IsString()) {
|
| // Primary is an unresolved name.
|
| @@ -10847,7 +10850,9 @@ AstNode* Parser::ParseSelectors(AstNode* primary, bool is_cascade) {
|
| NULL); // No existing function.
|
| } else {
|
| // Treat as call to unresolved (instance) method.
|
| - selector = ParseInstanceCall(LoadReceiver(primary_pos), name);
|
| + selector = ParseInstanceCall(LoadReceiver(primary_pos),
|
| + name,
|
| + primary_pos);
|
| }
|
| } else if (primary_node->primary().IsTypeParameter()) {
|
| const String& name = String::ZoneHandle(Z,
|
| @@ -10860,7 +10865,9 @@ AstNode* Parser::ParseSelectors(AstNode* primary, bool is_cascade) {
|
| name.ToCString());
|
| } else {
|
| // Treat as call to unresolved (instance) method.
|
| - selector = ParseInstanceCall(LoadReceiver(primary_pos), name);
|
| + selector = ParseInstanceCall(LoadReceiver(primary_pos),
|
| + name,
|
| + primary_pos);
|
| }
|
| } else if (primary_node->primary().IsClass()) {
|
| const Class& type_class = Class::Cast(primary_node->primary());
|
|
|