src/java.base/share/classes/java/lang/constant/MethodTypeDescImpl.java
changeset 55502 bdaec4628ea9
parent 54965 e022b9cb35a5
child 58078 41f119856e7c
--- a/src/java.base/share/classes/java/lang/constant/MethodTypeDescImpl.java	Tue Jun 25 09:41:03 2019 -0700
+++ b/src/java.base/share/classes/java/lang/constant/MethodTypeDescImpl.java	Tue Jun 25 18:21:21 2019 -0400
@@ -131,8 +131,14 @@
     }
 
     @Override
-    public MethodType resolveConstantDesc(MethodHandles.Lookup lookup) {
-        return MethodType.fromMethodDescriptorString(descriptorString(), lookup.lookupClass().getClassLoader());
+    public MethodType resolveConstantDesc(MethodHandles.Lookup lookup) throws ReflectiveOperationException {
+        MethodType mtype = MethodType.fromMethodDescriptorString(descriptorString(), lookup.lookupClass().getClassLoader());
+        // let's check that the lookup has access to all the types in the method type
+        lookup.accessClass(mtype.returnType());
+        for (Class<?> paramType: mtype.parameterArray()) {
+            lookup.accessClass(paramType);
+        }
+        return mtype;
     }
 
     /**