jdk/src/java.base/share/classes/java/lang/invoke/MemberName.java
changeset 36935 9a10a2c4dc13
parent 36934 590fc47a0aeb
parent 36511 9d0388c6b336
child 37343 35a2231828a7
child 37526 dc4669f222ab
--- a/jdk/src/java.base/share/classes/java/lang/invoke/MemberName.java	Thu Mar 24 11:21:21 2016 +0100
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/MemberName.java	Thu Mar 24 16:21:19 2016 +0100
@@ -33,6 +33,7 @@
 import java.lang.reflect.Method;
 import java.lang.reflect.Member;
 import java.lang.reflect.Modifier;
+import java.lang.reflect.Module;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -492,8 +493,9 @@
 
     /** Utility method to query whether this member is accessible from a given lookup class. */
     public boolean isAccessibleFrom(Class<?> lookupClass) {
+        int mode = (ALL_ACCESS|MethodHandles.Lookup.PACKAGE|MethodHandles.Lookup.MODULE);
         return VerifyAccess.isMemberAccessible(this.getDeclaringClass(), this.getDeclaringClass(), flags,
-                                               lookupClass, ALL_ACCESS|MethodHandles.Lookup.PACKAGE);
+                                               lookupClass, mode);
     }
 
     /** Initialize a query.   It is not resolved. */
@@ -889,7 +891,20 @@
 
     public IllegalAccessException makeAccessException(String message, Object from) {
         message = message + ": "+ toString();
-        if (from != null)  message += ", from " + from;
+        if (from != null)  {
+            if (from == MethodHandles.publicLookup()) {
+                message += ", from public Lookup";
+            } else {
+                Module m;
+                if (from instanceof MethodHandles.Lookup) {
+                    MethodHandles.Lookup lookup = (MethodHandles.Lookup)from;
+                    m = lookup.lookupClass().getModule();
+                } else {
+                    m = from.getClass().getModule();
+                }
+                message += ", from " + from + " (" + m + ")";
+            }
+        }
         return new IllegalAccessException(message);
     }
     private String message() {