@@ -97,7 +97,7 @@ class MethodInvocationResolver {
97
97
if (receiver is SimpleIdentifier ) {
98
98
var receiverElement = receiver.staticElement;
99
99
if (receiverElement is PrefixElement ) {
100
- _resolveReceiverPrefix (node, receiver, receiverElement, nameNode, name);
100
+ _resolveReceiverPrefix (node, receiverElement, nameNode, name);
101
101
return ;
102
102
}
103
103
}
@@ -236,11 +236,13 @@ class MethodInvocationResolver {
236
236
}
237
237
238
238
void _reportUndefinedFunction (
239
- MethodInvocation node, Identifier ignorableIdentifier) {
239
+ MethodInvocation node, {
240
+ @required String prefix,
241
+ @required String name,
242
+ }) {
240
243
_setDynamicResolution (node);
241
244
242
- // TODO(scheglov) This is duplication.
243
- if (nameScope.shouldIgnoreUndefined (ignorableIdentifier)) {
245
+ if (nameScope.shouldIgnoreUndefined2 (prefix: prefix, name: name)) {
244
246
return ;
245
247
}
246
248
@@ -513,7 +515,11 @@ class MethodInvocationResolver {
513
515
} else if (_resolver.enclosingExtension != null ) {
514
516
receiverType = _resolver.enclosingExtension.extendedType;
515
517
} else {
516
- return _reportUndefinedFunction (node, node.methodName);
518
+ return _reportUndefinedFunction (
519
+ node,
520
+ prefix: null ,
521
+ name: node.methodName.name,
522
+ );
517
523
}
518
524
519
525
_resolveReceiverType (
@@ -526,8 +532,8 @@ class MethodInvocationResolver {
526
532
);
527
533
}
528
534
529
- void _resolveReceiverPrefix (MethodInvocation node, SimpleIdentifier receiver ,
530
- PrefixElement prefix, SimpleIdentifier nameNode, String name) {
535
+ void _resolveReceiverPrefix (MethodInvocation node, PrefixElement prefix ,
536
+ SimpleIdentifier nameNode, String name) {
531
537
// Note: prefix?.bar is reported as an error in ElementResolver.
532
538
533
539
if (name == FunctionElement .LOAD_LIBRARY_NAME ) {
@@ -543,9 +549,6 @@ class MethodInvocationResolver {
543
549
}
544
550
}
545
551
546
- // TODO(scheglov) I don't like how we resolve prefixed names.
547
- // But maybe this is the only one solution.
548
- var prefixedName = PrefixedIdentifierImpl .temp (receiver, nameNode);
549
552
var element = prefix.scope.lookup2 (name).getter;
550
553
element = _resolver.toLegacyElement (element);
551
554
nameNode.staticElement = element;
@@ -563,7 +566,11 @@ class MethodInvocationResolver {
563
566
return _setResolution (node, element.type);
564
567
}
565
568
566
- _reportUndefinedFunction (node, prefixedName);
569
+ _reportUndefinedFunction (
570
+ node,
571
+ prefix: prefix.name,
572
+ name: name,
573
+ );
567
574
}
568
575
569
576
void _resolveReceiverSuper (MethodInvocation node, SuperExpression receiver,
0 commit comments