Write typeinfo annotations of generated componentN methods

Add some LoadKotlin testcases to test that.
This commit is contained in:
Alexander Udalov
2012-08-30 16:11:50 +04:00
parent 2c84389a45
commit 2aadfa47ee
15 changed files with 82 additions and 0 deletions
@@ -378,6 +378,14 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
"()" + componentType.getDescriptor(),
null, null);
JetMethodAnnotationWriter aw = JetMethodAnnotationWriter.visitAnnotation(mv);
BitSet kotlinFlags = getFlagsForVisibility(function.getVisibility());
aw.writeFlags(kotlinFlags);
aw.writeNullableReturnType(returnType.isNullable());
JvmMethodSignature jvmMethodSignature = typeMapper.mapToCallableMethod(function, false, kind).getSignature();
aw.writeReturnType(jvmMethodSignature.getKotlinReturnType());
aw.visitEnd();
mv.visitCode();
InstructionAdapter iv = new InstructionAdapter(mv);
if (!componentType.equals(Type.VOID_TYPE)) {
@@ -0,0 +1,3 @@
package test
data class DataClass(var x: String, y: Int, val z: Double)
@@ -0,0 +1,9 @@
namespace test
jet.data() internal final class test.DataClass : jet.Any {
public final /*constructor*/ fun <init>(/*0*/ x: jet.String, /*1*/ y: jet.Int, /*2*/ z: jet.Double): test.DataClass
internal final fun component1(): jet.String
internal final fun component2(): jet.Double
internal final var x: jet.String
internal final val z: jet.Double
}
@@ -0,0 +1,3 @@
package test
data class DataClass
@@ -0,0 +1,5 @@
namespace test
jet.data() internal final class test.DataClass : jet.Any {
public final /*constructor*/ fun <init>(): test.DataClass
}
@@ -0,0 +1,3 @@
package test
data class DataClass(val x: String)
@@ -0,0 +1,7 @@
namespace test
jet.data() internal final class test.DataClass : jet.Any {
public final /*constructor*/ fun <init>(/*0*/ x: jet.String): test.DataClass
internal final fun component1(): jet.String
internal final val x: jet.String
}
@@ -0,0 +1,3 @@
package test
open data class DataClass(val x: String)
@@ -0,0 +1,7 @@
namespace test
jet.data() internal open class test.DataClass : jet.Any {
public final /*constructor*/ fun <init>(/*0*/ x: jet.String): test.DataClass
internal final fun component1(): jet.String
internal final val x: jet.String
}
@@ -0,0 +1,3 @@
package test
open data class DataClass(open val x: String)
@@ -0,0 +1,7 @@
namespace test
jet.data() internal open class test.DataClass : jet.Any {
public final /*constructor*/ fun <init>(/*0*/ x: jet.String): test.DataClass
internal final fun component1(): jet.String
internal open val x: jet.String
}
@@ -0,0 +1,3 @@
package test
data class DataClass(val x: String, val y: Int)
@@ -0,0 +1,9 @@
namespace test
jet.data() internal final class test.DataClass : jet.Any {
public final /*constructor*/ fun <init>(/*0*/ x: jet.String, /*1*/ y: jet.Int): test.DataClass
internal final fun component1(): jet.String
internal final fun component2(): jet.Int
internal final val x: jet.String
internal final val y: jet.Int
}
@@ -0,0 +1,3 @@
package test
data class DataClass(var x: String, var y: Int)
@@ -0,0 +1,9 @@
namespace test
jet.data() internal final class test.DataClass : jet.Any {
public final /*constructor*/ fun <init>(/*0*/ x: jet.String, /*1*/ y: jet.Int): test.DataClass
internal final fun component1(): jet.String
internal final fun component2(): jet.Int
internal final var x: jet.String
internal final var y: jet.Int
}