Files
Vitaliy.Bibaev 2cd49bb33b Update testdata after enabling extraction of generated class in compiling evaluator
GitOrigin-RevId: 1c56d0cd598b659a4269003a6f0604f2c1b8f4e5
2019-07-26 11:02:46 +03:00

69 lines
2.6 KiB
Plaintext

call text: Test.invoke();
class:
public class GeneratedEvaluationClass {
static void invoke() {
callApply1(null, () -> callMethod1(null));
}
public static void callMethod1(Object object) {
try {
Class<?> klass = Class.forName("WithReflectionAccess");
java.lang.reflect.Method member = null;
int interfaceNumber = -1;
Class<?>[] interfaces = null;
while (member == null) {
try {
member = klass.getDeclaredMethod("method");
} catch (ReflectiveOperationException e) {
if (interfaceNumber == -1) {
interfaces = klass.getInterfaces();
interfaceNumber = 0;
}
if (interfaceNumber < interfaces.length) {
klass = interfaces[interfaceNumber];
interfaceNumber += 1;
} else {
klass = klass.getSuperclass();
if (klass == null) throw e;
interfaceNumber = -1;
}
}
}
member.setAccessible(true);
member.invoke(object);
} catch (ReflectiveOperationException e) {
throw new RuntimeException(e);
}
}
public static void callApply1(Object object, Runnable runnable) {
try {
Class<?> klass = Class.forName("WithReflectionAccess");
java.lang.reflect.Method member = null;
int interfaceNumber = -1;
Class<?>[] interfaces = null;
while (member == null) {
try {
member = klass.getDeclaredMethod("apply", Class.forName("java.lang.Runnable"));
} catch (ReflectiveOperationException e) {
if (interfaceNumber == -1) {
interfaces = klass.getInterfaces();
interfaceNumber = 0;
}
if (interfaceNumber < interfaces.length) {
klass = interfaces[interfaceNumber];
interfaceNumber += 1;
} else {
klass = klass.getSuperclass();
if (klass == null) throw e;
interfaceNumber = -1;
}
}
}
member.setAccessible(true);
member.invoke(object, runnable);
} catch (ReflectiveOperationException e) {
throw new RuntimeException(e);
}
}
}