--- 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;
}
/**