< prev index next >
test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/ResolvedJavaTypeResolveMethodTest.java
Print this page
*** 166,175 ****
--- 166,195 ----
assertEquals(v2b, c.resolveMethod(v2a, c));
assertEquals(v2b, c.resolveMethod(v2b, c));
}
+ static class ClassType {
+ }
+
+ interface InterfaceType {
+ }
+
+ @Test
+ public void testCloneAccessibility() {
+ /*
+ * The resolution machinery for clone on arrays has some hacks in that show up in odd places
+ * so make sure that resolveMethod works as expected.
+ */
+ ResolvedJavaType interfaceType = getType(InterfaceType.class);
+ ResolvedJavaType classType = getType(ClassType.class);
+ ResolvedJavaType arrayType = getType(double[].class);
+ ResolvedJavaMethod cloneMethod = getMethod(getType(Object.class), "clone");
+ assertEquals("Can't resolve clone for class", cloneMethod, arrayType.resolveMethod(cloneMethod, classType));
+ assertEquals("Can't resolve clone for interface", cloneMethod, arrayType.resolveMethod(cloneMethod, interfaceType));
+ }
+
static ResolvedJavaMethod getMethod(ResolvedJavaType type, String methodName) {
for (ResolvedJavaMethod method : type.getDeclaredMethods()) {
if (method.getName().equals(methodName)) {
return method;
}
< prev index next >