Generate metadata and annotations for hidden constructor
Reflection expects to see a callable method for a hidden constructor, thus, it should be a synthetic accessor. JVM method signature in metadata should point to the synthetic accessor. Annotations for hidden constructor should be written on the synthetic accessor.
This commit is contained in:
+1
@@ -112,6 +112,7 @@ private class ClassClsStubBuilder(
|
||||
relevantFlags.add(INNER)
|
||||
relevantFlags.add(DATA)
|
||||
relevantFlags.add(MODALITY)
|
||||
relevantFlags.add(INLINE_CLASS)
|
||||
}
|
||||
val additionalModifiers = when (classKind) {
|
||||
ProtoBuf.Class.Kind.ENUM_CLASS -> listOf(KtTokens.ENUM_KEYWORD)
|
||||
|
||||
@@ -61,6 +61,7 @@ val EXTERNAL_FUN = createBooleanFlagToModifier(Flags.IS_EXTERNAL_FUNCTION, KtTok
|
||||
val EXTERNAL_PROPERTY = createBooleanFlagToModifier(Flags.IS_EXTERNAL_PROPERTY, KtTokens.EXTERNAL_KEYWORD)
|
||||
val EXTERNAL_CLASS = createBooleanFlagToModifier(Flags.IS_EXTERNAL_CLASS, KtTokens.EXTERNAL_KEYWORD)
|
||||
val INLINE = createBooleanFlagToModifier(Flags.IS_INLINE, KtTokens.INLINE_KEYWORD)
|
||||
val INLINE_CLASS = createBooleanFlagToModifier(Flags.IS_INLINE_CLASS, KtTokens.INLINE_KEYWORD)
|
||||
val TAILREC = createBooleanFlagToModifier(Flags.IS_TAILREC, KtTokens.TAILREC_KEYWORD)
|
||||
val SUSPEND = createBooleanFlagToModifier(Flags.IS_SUSPEND, KtTokens.SUSPEND_KEYWORD)
|
||||
|
||||
|
||||
Generated
+5
@@ -133,6 +133,11 @@ public class LoadJavaClsStubTestGenerated extends AbstractLoadJavaClsStubTest {
|
||||
runTest("compiler/testData/loadJava/compiledKotlin/annotations/classMembers/Getter.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("HiddenConstructorWithInlineClassParameters.kt")
|
||||
public void testHiddenConstructorWithInlineClassParameters() throws Exception {
|
||||
runTest("compiler/testData/loadJava/compiledKotlin/annotations/classMembers/HiddenConstructorWithInlineClassParameters.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("PropertyField.kt")
|
||||
public void testPropertyField() throws Exception {
|
||||
runTest("compiler/testData/loadJava/compiledKotlin/annotations/classMembers/PropertyField.kt");
|
||||
|
||||
@@ -133,6 +133,11 @@ public class ResolveByStubTestGenerated extends AbstractResolveByStubTest {
|
||||
runTest("compiler/testData/loadJava/compiledKotlin/annotations/classMembers/Getter.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("HiddenConstructorWithInlineClassParameters.kt")
|
||||
public void testHiddenConstructorWithInlineClassParameters() throws Exception {
|
||||
runTest("compiler/testData/loadJava/compiledKotlin/annotations/classMembers/HiddenConstructorWithInlineClassParameters.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("PropertyField.kt")
|
||||
public void testPropertyField() throws Exception {
|
||||
runTest("compiler/testData/loadJava/compiledKotlin/annotations/classMembers/PropertyField.kt");
|
||||
|
||||
Reference in New Issue
Block a user