Write typeinfo annotations of generated componentN methods
Add some LoadKotlin testcases to test that.
This commit is contained in:
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user