From cd5f6d12077048e5e68a6a01b63de410d413aea8 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Fri, 23 Sep 2022 20:08:35 +0200 Subject: [PATCH] [decompiler stubs] fix missing expect modifier on declarations --- .../kotlin/analysis/decompiler/stub/CallableClsStubBuilder.kt | 4 ++-- .../kotlin/analysis/decompiler/stub/ClassClsStubBuilder.kt | 1 + .../jetbrains/kotlin/analysis/decompiler/stub/flags/flags.kt | 4 ++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/analysis/decompiled/decompiler-to-stubs/src/org/jetbrains/kotlin/analysis/decompiler/stub/CallableClsStubBuilder.kt b/analysis/decompiled/decompiler-to-stubs/src/org/jetbrains/kotlin/analysis/decompiler/stub/CallableClsStubBuilder.kt index 40e1824c49a..4f52ca416c4 100644 --- a/analysis/decompiled/decompiler-to-stubs/src/org/jetbrains/kotlin/analysis/decompiler/stub/CallableClsStubBuilder.kt +++ b/analysis/decompiled/decompiler-to-stubs/src/org/jetbrains/kotlin/analysis/decompiler/stub/CallableClsStubBuilder.kt @@ -155,7 +155,7 @@ private class FunctionClsStubBuilder( val modalityModifier = if (isTopLevel) listOf() else listOf(MODALITY) val modifierListStubImpl = createModifierListStubForDeclaration( callableStub, functionProto.flags, - listOf(VISIBILITY, OPERATOR, INFIX, EXTERNAL_FUN, INLINE, TAILREC, SUSPEND) + modalityModifier + listOf(VISIBILITY, OPERATOR, INFIX, EXTERNAL_FUN, INLINE, TAILREC, SUSPEND, EXPECT_FUNCTION) + modalityModifier ) // If function is marked as having no annotations, we don't create stubs for it @@ -215,7 +215,7 @@ private class PropertyClsStubBuilder( val modifierListStubImpl = createModifierListStubForDeclaration( callableStub, propertyProto.flags, - listOf(VISIBILITY, LATEINIT, EXTERNAL_PROPERTY) + constModifier + modalityModifier + listOf(VISIBILITY, LATEINIT, EXTERNAL_PROPERTY, EXPECT_PROPERTY) + constModifier + modalityModifier ) // If field is marked as having no annotations, we don't create stubs for it diff --git a/analysis/decompiled/decompiler-to-stubs/src/org/jetbrains/kotlin/analysis/decompiler/stub/ClassClsStubBuilder.kt b/analysis/decompiled/decompiler-to-stubs/src/org/jetbrains/kotlin/analysis/decompiler/stub/ClassClsStubBuilder.kt index 2c53061df26..5c31ab3e158 100644 --- a/analysis/decompiled/decompiler-to-stubs/src/org/jetbrains/kotlin/analysis/decompiler/stub/ClassClsStubBuilder.kt +++ b/analysis/decompiled/decompiler-to-stubs/src/org/jetbrains/kotlin/analysis/decompiler/stub/ClassClsStubBuilder.kt @@ -94,6 +94,7 @@ private class ClassClsStubBuilder( private fun createModifierListForClass(parent: StubElement): KotlinModifierListStubImpl { val relevantFlags = arrayListOf(VISIBILITY) relevantFlags.add(EXTERNAL_CLASS) + relevantFlags.add(EXPECT_CLASS) if (isClass()) { relevantFlags.add(INNER) relevantFlags.add(DATA) diff --git a/analysis/decompiled/decompiler-to-stubs/src/org/jetbrains/kotlin/analysis/decompiler/stub/flags/flags.kt b/analysis/decompiled/decompiler-to-stubs/src/org/jetbrains/kotlin/analysis/decompiler/stub/flags/flags.kt index a6784086c92..0eb8974ab51 100644 --- a/analysis/decompiled/decompiler-to-stubs/src/org/jetbrains/kotlin/analysis/decompiler/stub/flags/flags.kt +++ b/analysis/decompiled/decompiler-to-stubs/src/org/jetbrains/kotlin/analysis/decompiler/stub/flags/flags.kt @@ -52,6 +52,10 @@ val FUN_INTERFACE = createBooleanFlagToModifier(Flags.IS_FUN_INTERFACE, KtTokens val TAILREC = createBooleanFlagToModifier(Flags.IS_TAILREC, KtTokens.TAILREC_KEYWORD) val SUSPEND = createBooleanFlagToModifier(Flags.IS_SUSPEND, KtTokens.SUSPEND_KEYWORD) +val EXPECT_CLASS = createBooleanFlagToModifier(Flags.IS_EXPECT_CLASS, KtTokens.EXPECT_KEYWORD) +val EXPECT_FUNCTION = createBooleanFlagToModifier(Flags.IS_EXPECT_FUNCTION, KtTokens.EXPECT_KEYWORD) +val EXPECT_PROPERTY = createBooleanFlagToModifier(Flags.IS_EXPECT_PROPERTY, KtTokens.EXPECT_KEYWORD) + private fun createBooleanFlagToModifier( flagField: Flags.BooleanFlagField, ktModifierKeywordToken: KtModifierKeywordToken ): FlagsToModifiers = BooleanFlagToModifier(flagField, ktModifierKeywordToken)