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(),
|
"()" + componentType.getDescriptor(),
|
||||||
null, null);
|
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();
|
mv.visitCode();
|
||||||
InstructionAdapter iv = new InstructionAdapter(mv);
|
InstructionAdapter iv = new InstructionAdapter(mv);
|
||||||
if (!componentType.equals(Type.VOID_TYPE)) {
|
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