Fine. Request specific members by name in havingMemberWithBaseName().

Iterating over all members adds too many dependencies.

Change-Id: Ic960d48fda02a7d2b192751b44cdc68f16e236cf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/444640
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/src/dart/resolver/applicable_extensions.dart b/pkg/analyzer/lib/src/dart/resolver/applicable_extensions.dart
index bfa8e83..2a0521b 100644
--- a/pkg/analyzer/lib/src/dart/resolver/applicable_extensions.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/applicable_extensions.dart
@@ -134,15 +134,8 @@
     var result = <_NotInstantiatedExtensionWithMember>[];
     for (var extension in this) {
       if (baseName.name == '[]') {
-        ExecutableElement? getter;
-        ExecutableElement? setter;
-        for (var method in extension.methods) {
-          if (method.name == '[]') {
-            getter = method;
-          } else if (method.name == '[]=') {
-            setter = method;
-          }
-        }
+        var getter = extension.getMethod('[]');
+        var setter = extension.getMethod('[]=');
         if (getter != null || setter != null) {
           result.add(
             _NotInstantiatedExtensionWithMember(
@@ -155,12 +148,9 @@
           );
         }
       } else {
-        for (var field in extension.fields) {
-          if (field.isStatic) {
-            continue;
-          }
-          var fieldName = Name.forElement(field);
-          if (fieldName == baseName) {
+        var field = extension.getField(baseName.name);
+        if (field != null && !field.isStatic) {
+          if (Name.forElement(field) == baseName) {
             result.add(
               _NotInstantiatedExtensionWithMember(
                 // TODO(paulberry): eliminate this cast by changing the
@@ -170,15 +160,12 @@
                 setter: field.setter,
               ),
             );
-            break;
           }
         }
-        for (var method in extension.methods) {
-          if (method.isStatic) {
-            continue;
-          }
-          var methodName = Name.forElement(method);
-          if (methodName == baseName) {
+
+        var method = extension.getMethod(baseName.name);
+        if (method != null && !method.isStatic) {
+          if (Name.forElement(method) == baseName) {
             result.add(
               _NotInstantiatedExtensionWithMember(
                 // TODO(paulberry): eliminate this cast by changing the
@@ -187,7 +174,6 @@
                 getter: method,
               ),
             );
-            break;
           }
         }
       }