@@ -97,7 +97,7 @@ class MethodInvocationResolver {
9797 if (receiver is SimpleIdentifier ) {
9898 var receiverElement = receiver.staticElement;
9999 if (receiverElement is PrefixElement ) {
100- _resolveReceiverPrefix (node, receiver, receiverElement, nameNode, name);
100+ _resolveReceiverPrefix (node, receiverElement, nameNode, name);
101101 return ;
102102 }
103103 }
@@ -236,11 +236,13 @@ class MethodInvocationResolver {
236236 }
237237
238238 void _reportUndefinedFunction (
239- MethodInvocation node, Identifier ignorableIdentifier) {
239+ MethodInvocation node, {
240+ @required String prefix,
241+ @required String name,
242+ }) {
240243 _setDynamicResolution (node);
241244
242- // TODO(scheglov) This is duplication.
243- if (nameScope.shouldIgnoreUndefined (ignorableIdentifier)) {
245+ if (nameScope.shouldIgnoreUndefined2 (prefix: prefix, name: name)) {
244246 return ;
245247 }
246248
@@ -513,7 +515,11 @@ class MethodInvocationResolver {
513515 } else if (_resolver.enclosingExtension != null ) {
514516 receiverType = _resolver.enclosingExtension.extendedType;
515517 } else {
516- return _reportUndefinedFunction (node, node.methodName);
518+ return _reportUndefinedFunction (
519+ node,
520+ prefix: null ,
521+ name: node.methodName.name,
522+ );
517523 }
518524
519525 _resolveReceiverType (
@@ -526,8 +532,8 @@ class MethodInvocationResolver {
526532 );
527533 }
528534
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) {
531537 // Note: prefix?.bar is reported as an error in ElementResolver.
532538
533539 if (name == FunctionElement .LOAD_LIBRARY_NAME ) {
@@ -543,9 +549,6 @@ class MethodInvocationResolver {
543549 }
544550 }
545551
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);
549552 var element = prefix.scope.lookup2 (name).getter;
550553 element = _resolver.toLegacyElement (element);
551554 nameNode.staticElement = element;
@@ -563,7 +566,11 @@ class MethodInvocationResolver {
563566 return _setResolution (node, element.type);
564567 }
565568
566- _reportUndefinedFunction (node, prefixedName);
569+ _reportUndefinedFunction (
570+ node,
571+ prefix: prefix.name,
572+ name: name,
573+ );
567574 }
568575
569576 void _resolveReceiverSuper (MethodInvocation node, SuperExpression receiver,
0 commit comments