Jasmin コードを生成するコンパイラを作成しており、次のように引数を使用してメソッドを呼び出したいと考えています。
val test(val x) {
return x;
}
val main (string[] args) {
test(1);
}
これは次のようにコンパイルされます。
.class public helloworld
.super java/lang/Object
.method public <init>()V
aload_0
invokenonvirtual java/lang/Object/<init>()V
return
.end method
.method public test(I)I
.limit stack 4
.limit locals 3
iload 1
ireturn
.end method
.method public static main([Ljava/lang/String;)V
.limit stack 4
.limit locals 3
aload_0
ldc 1
invokevirtual helloworld/test(I)I
return
.end method
ただし、これにより次のエラーが発生します。ここで何が間違っていますか?
java.lang.VerifyError: (class: helloworld, method: main signature: ([Ljava/lang/String;)V) Incompatible object argument for function call