diff --git a/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/AdditionalMembersGenerator.kt b/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/AdditionalMembersGenerator.kt index c44701872d3..b0fb047e026 100644 --- a/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/AdditionalMembersGenerator.kt +++ b/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/AdditionalMembersGenerator.kt @@ -11,12 +11,15 @@ import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirPluginKey +import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.builder.buildRegularClass import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension import org.jetbrains.kotlin.fir.extensions.FirDeclarationPredicateRegistrar import org.jetbrains.kotlin.fir.extensions.predicate.DeclarationPredicate import org.jetbrains.kotlin.fir.extensions.predicate.has +import org.jetbrains.kotlin.fir.extensions.predicate.metaHas +import org.jetbrains.kotlin.fir.extensions.predicate.or import org.jetbrains.kotlin.fir.extensions.predicateBasedProvider import org.jetbrains.kotlin.fir.moduleData import org.jetbrains.kotlin.fir.plugin.fqn @@ -61,6 +64,7 @@ class AdditionalMembersGenerator(session: FirSession) : FirDeclarationGeneration val parentClassId = classId.parentClassId ?: return null if (matchedClasses.none { it.classId == parentClassId }) return null return buildRegularClass { + resolvePhase = FirResolvePhase.BODY_RESOLVE moduleData = session.moduleData origin = Key.origin classKind = ClassKind.CLASS diff --git a/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/CompanionGenerator.kt b/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/CompanionGenerator.kt index 661fc540e94..b28600e1861 100644 --- a/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/CompanionGenerator.kt +++ b/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/CompanionGenerator.kt @@ -12,6 +12,7 @@ import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirPluginKey +import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.builder.buildRegularClass import org.jetbrains.kotlin.fir.declarations.builder.buildSimpleFunction import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl @@ -49,6 +50,7 @@ class CompanionGenerator(session: FirSession) : FirDeclarationGenerationExtensio val owner = matchedClasses.firstOrNull { it.classId == classId.outerClassId } ?: return null if (owner.companionObjectSymbol != null) return null val regularClass = buildRegularClass { + resolvePhase = FirResolvePhase.BODY_RESOLVE moduleData = session.moduleData origin = Key.origin classKind = ClassKind.OBJECT @@ -71,6 +73,7 @@ class CompanionGenerator(session: FirSession) : FirDeclarationGenerationExtensio if (owner == null || owner.origin != Key.origin) return emptyList() if (callableId.callableName != FOO_NAME) return emptyList() val function = buildSimpleFunction { + resolvePhase = FirResolvePhase.BODY_RESOLVE moduleData = session.moduleData origin = Key.origin status = FirResolvedDeclarationStatusImpl( diff --git a/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/ExternalClassGenerator.kt b/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/ExternalClassGenerator.kt index 71b58230b1c..397d7adb34a 100644 --- a/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/ExternalClassGenerator.kt +++ b/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/ExternalClassGenerator.kt @@ -106,6 +106,7 @@ class ExternalClassGenerator(session: FirSession) : FirDeclarationGenerationExte private fun buildClass(classId: ClassId): FirRegularClass { return buildRegularClass { + resolvePhase = FirResolvePhase.BODY_RESOLVE moduleData = session.moduleData origin = Key.origin classKind = ClassKind.CLASS diff --git a/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/TopLevelDeclarationsGenerator.kt b/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/TopLevelDeclarationsGenerator.kt index 333b422abc8..78a6ae02b19 100644 --- a/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/TopLevelDeclarationsGenerator.kt +++ b/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/TopLevelDeclarationsGenerator.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirPluginKey +import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.builder.buildSimpleFunction import org.jetbrains.kotlin.fir.declarations.builder.buildValueParameter import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl @@ -44,6 +45,7 @@ class TopLevelDeclarationsGenerator(session: FirSession) : FirDeclarationGenerat if (owner != null) return emptyList() val matchedClassSymbol = findMatchedClassForFunction(callableId) ?: return emptyList() val function = buildSimpleFunction { + resolvePhase = FirResolvePhase.BODY_RESOLVE moduleData = session.moduleData origin = Key.origin status = FirResolvedDeclarationStatusImpl( @@ -53,6 +55,7 @@ class TopLevelDeclarationsGenerator(session: FirSession) : FirDeclarationGenerat ) returnTypeRef = session.builtinTypes.stringType valueParameters += buildValueParameter { + resolvePhase = FirResolvePhase.BODY_RESOLVE moduleData = session.moduleData origin = Key.origin returnTypeRef = buildResolvedTypeRef { diff --git a/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/generationUtils.kt b/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/generationUtils.kt index eca409035bb..76134080680 100644 --- a/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/generationUtils.kt +++ b/plugins/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/generationUtils.kt @@ -9,10 +9,7 @@ import org.jetbrains.kotlin.descriptors.EffectiveVisibility import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.fir.containingClassForStaticMemberAttr -import org.jetbrains.kotlin.fir.declarations.FirClass -import org.jetbrains.kotlin.fir.declarations.FirConstructor -import org.jetbrains.kotlin.fir.declarations.FirPluginKey -import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction +import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.builder.buildPrimaryConstructor import org.jetbrains.kotlin.fir.declarations.builder.buildSimpleFunction import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl @@ -39,6 +36,7 @@ fun FirDeclarationGenerationExtension.buildMaterializeFunction( key: FirPluginKey ): FirSimpleFunction { return buildSimpleFunction { + resolvePhase = FirResolvePhase.BODY_RESOLVE moduleData = session.moduleData origin = key.origin status = FirResolvedDeclarationStatusImpl( @@ -66,6 +64,7 @@ fun FirDeclarationGenerationExtension.buildMaterializeFunction( fun FirDeclarationGenerationExtension.buildConstructor(classId: ClassId, isInner: Boolean, key: FirPluginKey): FirConstructor { val lookupTag = ConeClassLikeLookupTagImpl(classId) return buildPrimaryConstructor { + resolvePhase = FirResolvePhase.BODY_RESOLVE moduleData = session.moduleData origin = key.origin returnTypeRef = buildResolvedTypeRef {