< prev index next >

src/java.base/share/classes/java/lang/invoke/MemberName.java

Print this page
rev 15090 : 8161588: MemberName::resolveOrNull cause and hide NoSuchMethodErrors
Reviewed-by: mhaupt

@@ -1080,14 +1080,17 @@
          *  If lookup fails or access is not permitted, return null.
          *  Otherwise a fresh copy of the given member is returned, with modifier bits filled in.
          */
         public
         MemberName resolveOrNull(byte refKind, MemberName m, Class<?> lookupClass) {
-            MemberName result = resolve(refKind, m, lookupClass);
-            if (result.isResolved())
-                return result;
+            assert(refKind == m.getReferenceKind());
+            m = MethodHandleNatives.resolveOrNull(m.clone(), lookupClass);
+            if (m == null)
             return null;
+            m.checkForTypeAlias(m.getDeclaringClass());
+            m.resolution = null;
+            return m;
         }
         /** Return a list of all methods defined by the given class.
          *  Super types are searched (for inherited members) if {@code searchSupers} is true.
          *  Access checking is performed on behalf of the given {@code lookupClass}.
          *  Inaccessible members are not added to the last.
< prev index next >