From d5a02960d8beef851c0598348febb5bc653fee05 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 16 Jun 2023 11:52:32 +0200 Subject: [PATCH] K2 plugins: set proper 'expect' flag for all member declarations Related to KT-59299 --- .../jetbrains/kotlin/fir/plugin/ClassBuildingContext.kt | 6 +++++- .../kotlin/fir/plugin/ConstructorBuildingContext.kt | 7 ++++++- .../jetbrains/kotlin/fir/plugin/PropertyBuildingContext.kt | 7 ++++++- .../kotlin/fir/plugin/SimpleFunctionBuildingContext.kt | 7 ++++++- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/compiler/fir/plugin-utils/src/org/jetbrains/kotlin/fir/plugin/ClassBuildingContext.kt b/compiler/fir/plugin-utils/src/org/jetbrains/kotlin/fir/plugin/ClassBuildingContext.kt index 22b9b61aaf3..085b56f35b1 100644 --- a/compiler/fir/plugin-utils/src/org/jetbrains/kotlin/fir/plugin/ClassBuildingContext.kt +++ b/compiler/fir/plugin-utils/src/org/jetbrains/kotlin/fir/plugin/ClassBuildingContext.kt @@ -136,7 +136,11 @@ public fun FirExtension.createNestedClass( classKind: ClassKind = ClassKind.CLASS, config: ClassBuildingContext.() -> Unit = {} ): FirRegularClass { - return ClassBuildingContext(session, key, owner, owner.classId.createNestedClassId(name), classKind).apply(config).build() + return ClassBuildingContext(session, key, owner, owner.classId.createNestedClassId(name), classKind).apply(config).apply { + status { + isExpect = owner.isExpect + } + }.build() } /** diff --git a/compiler/fir/plugin-utils/src/org/jetbrains/kotlin/fir/plugin/ConstructorBuildingContext.kt b/compiler/fir/plugin-utils/src/org/jetbrains/kotlin/fir/plugin/ConstructorBuildingContext.kt index a8e79950700..cd0aa2a6764 100644 --- a/compiler/fir/plugin-utils/src/org/jetbrains/kotlin/fir/plugin/ConstructorBuildingContext.kt +++ b/compiler/fir/plugin-utils/src/org/jetbrains/kotlin/fir/plugin/ConstructorBuildingContext.kt @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef import org.jetbrains.kotlin.fir.declarations.builder.* import org.jetbrains.kotlin.fir.declarations.origin +import org.jetbrains.kotlin.fir.declarations.utils.isExpect import org.jetbrains.kotlin.fir.declarations.utils.isInner import org.jetbrains.kotlin.fir.expressions.buildResolvedArgumentList import org.jetbrains.kotlin.fir.expressions.builder.buildDelegatedConstructorCall @@ -122,7 +123,11 @@ public fun FirExtension.createConstructor( generateDelegatedNoArgConstructorCall: Boolean = false, config: ConstructorBuildingContext.() -> Unit = {} ): FirConstructor { - return ConstructorBuildingContext(session, key, owner, isPrimary).apply(config).build().also { + return ConstructorBuildingContext(session, key, owner, isPrimary).apply(config).apply { + status { + isExpect = owner.isExpect + } + }.build().also { if (generateDelegatedNoArgConstructorCall) { it.generateNoArgDelegatingConstructorCall() } diff --git a/compiler/fir/plugin-utils/src/org/jetbrains/kotlin/fir/plugin/PropertyBuildingContext.kt b/compiler/fir/plugin-utils/src/org/jetbrains/kotlin/fir/plugin/PropertyBuildingContext.kt index d6547500795..b4c4903d588 100644 --- a/compiler/fir/plugin-utils/src/org/jetbrains/kotlin/fir/plugin/PropertyBuildingContext.kt +++ b/compiler/fir/plugin-utils/src/org/jetbrains/kotlin/fir/plugin/PropertyBuildingContext.kt @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.fir.declarations.builder.buildReceiverParameter import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyBackingField import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyGetter import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertySetter +import org.jetbrains.kotlin.fir.declarations.utils.isExpect import org.jetbrains.kotlin.fir.extensions.FirExtension import org.jetbrains.kotlin.fir.moduleData import org.jetbrains.kotlin.fir.resolve.defaultType @@ -156,7 +157,11 @@ public fun FirExtension.createMemberProperty( config: PropertyBuildingContext.() -> Unit = {} ): FirProperty { val callableId = CallableId(owner.classId, name) - return PropertyBuildingContext(session, key, owner, callableId, returnTypeProvider, isVal, hasBackingField).apply(config).build() + return PropertyBuildingContext(session, key, owner, callableId, returnTypeProvider, isVal, hasBackingField).apply(config).apply { + status { + isExpect = owner.isExpect + } + }.build() } /** diff --git a/compiler/fir/plugin-utils/src/org/jetbrains/kotlin/fir/plugin/SimpleFunctionBuildingContext.kt b/compiler/fir/plugin-utils/src/org/jetbrains/kotlin/fir/plugin/SimpleFunctionBuildingContext.kt index ce0d65b8532..fbe8fd3927f 100644 --- a/compiler/fir/plugin-utils/src/org/jetbrains/kotlin/fir/plugin/SimpleFunctionBuildingContext.kt +++ b/compiler/fir/plugin-utils/src/org/jetbrains/kotlin/fir/plugin/SimpleFunctionBuildingContext.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.declarations.builder.buildReceiverParameter import org.jetbrains.kotlin.fir.declarations.builder.buildSimpleFunction import org.jetbrains.kotlin.fir.declarations.origin +import org.jetbrains.kotlin.fir.declarations.utils.isExpect import org.jetbrains.kotlin.fir.extensions.FirExtension import org.jetbrains.kotlin.fir.moduleData import org.jetbrains.kotlin.fir.resolve.defaultType @@ -113,7 +114,11 @@ public fun FirExtension.createMemberFunction( config: SimpleFunctionBuildingContext.() -> Unit = {} ): FirSimpleFunction { val callableId = CallableId(owner.classId, name) - return SimpleFunctionBuildingContext(session, key, owner, callableId, returnTypeProvider).apply(config).build() + return SimpleFunctionBuildingContext(session, key, owner, callableId, returnTypeProvider).apply(config).apply { + status { + isExpect = owner.isExpect + } + }.build() } /**