blob: 1f7c2728f5e6426f642ee6e3aefb8ad7afc7887f [file] [log] [blame]
package org.codehaus.groovy.classgen.asm
import java.util.List;
import org.codehaus.groovy.ast.ClassHelper;
import org.codehaus.groovy.ast.ClassNode;
import org.codehaus.groovy.ast.Parameter;
import org.codehaus.groovy.ast.expr.MethodCallExpression;
import org.codehaus.groovy.ast.stmt.BlockStatement;
import org.codehaus.groovy.ast.stmt.ExpressionStatement;
import org.codehaus.groovy.ast.stmt.Statement;
/**
* @author Jochen Theodorou
*/
class DirectMethodCallTest extends AbstractBytecodeTestCase {
void testVirtual() {
def target = ClassHelper.Integer_TYPE.getMethod("toString", new Parameter[0])
def makeDirectCall = {su ->
su. getAST().classes[0].
getMethod("run", new Parameter[0]).code.
statements.last().expression.methodTarget = target;
}
assert compile (method:"run", conversionAction: makeDirectCall, """
def a = 1;
a.toString()
""").hasSequence([
"INVOKEVIRTUAL java/lang/Integer.toString ()Ljava/lang/String;"
])
}
}