assertTrue(delegate.test());
}
@Test
public void testCompileToMethod() throws Exception {
final Expression out = field(null, Type.of(System.class).getField("out"));
final TypeBuilder<Runnable> typeBuilder = new TypeBuilder<>(
"TestCompileToMethod",
Modifier.PUBLIC | Modifier.FINAL,
Types.Object,
Type.list(Type.of(Runnable.class))
);
final MethodBuilder powerMethod = typeBuilder.defineMethod(
"power",
Modifier.PUBLIC | Modifier.FINAL,
PrimitiveTypes.Integer,
Type.list(PrimitiveTypes.Integer, PrimitiveTypes.Integer)
);
final MethodBuilder runMethod = typeBuilder.defineMethod(
"run",
Modifier.PUBLIC | Modifier.FINAL,
PrimitiveTypes.Void
);
final Expression self = self(typeBuilder);
final ParameterExpression base = variable(PrimitiveTypes.Integer, "base");
final ParameterExpression power = variable(PrimitiveTypes.Integer, "power");
final ParameterExpression accumulator = variable(PrimitiveTypes.Integer, "accumulator");
final ParameterExpression variable = variable(PrimitiveTypes.Integer, "i");