[IR] Avoid depending from fir2ir on ir.actualization module

^KT-62292
This commit is contained in:
Pavel Kunyavskiy
2023-11-14 14:26:04 +01:00
committed by Space Team
parent cf6792ec65
commit 021a00f4ff
17 changed files with 28 additions and 28 deletions
@@ -280,7 +280,7 @@ private class Fir2KlibSerializer(
} }
private val actualizedExpectDeclarations by lazy { private val actualizedExpectDeclarations by lazy {
fir2IrActualizedResult.irActualizedResult.extractFirDeclarations() fir2IrActualizedResult.irActualizedResult?.actualizedExpectDeclarations?.extractFirDeclarations()
} }
private val metadataVersion = moduleStructure.compilerConfiguration.metadataVersion() private val metadataVersion = moduleStructure.compilerConfiguration.metadataVersion()
@@ -37,6 +37,7 @@ import org.jetbrains.kotlin.config.CommonConfigurationKeys.LOOKUP_TRACKER
import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector
import org.jetbrains.kotlin.fir.backend.extractFirDeclarations
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendClassResolver import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendClassResolver
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendExtension import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendExtension
import org.jetbrains.kotlin.fir.backend.jvm.JvmFir2IrExtensions import org.jetbrains.kotlin.fir.backend.jvm.JvmFir2IrExtensions
@@ -188,7 +189,8 @@ object KotlinToJVMBytecodeCompiler {
NoScopeRecordCliBindingTrace().bindingContext, NoScopeRecordCliBindingTrace().bindingContext,
FirJvmBackendClassResolver(fir2IrAndIrActualizerResult.components), FirJvmBackendClassResolver(fir2IrAndIrActualizerResult.components),
FirJvmBackendExtension( FirJvmBackendExtension(
fir2IrAndIrActualizerResult.components, fir2IrAndIrActualizerResult.irActualizedResult fir2IrAndIrActualizerResult.components,
fir2IrAndIrActualizerResult.irActualizedResult?.actualizedExpectDeclarations?.extractFirDeclarations()
) )
) )
} }
@@ -47,6 +47,7 @@ import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector
import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration
import org.jetbrains.kotlin.fir.backend.Fir2IrExtensions import org.jetbrains.kotlin.fir.backend.Fir2IrExtensions
import org.jetbrains.kotlin.fir.backend.extractFirDeclarations
import org.jetbrains.kotlin.fir.backend.jvm.* import org.jetbrains.kotlin.fir.backend.jvm.*
import org.jetbrains.kotlin.fir.extensions.FirAnalysisHandlerExtension import org.jetbrains.kotlin.fir.extensions.FirAnalysisHandlerExtension
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
@@ -262,7 +263,10 @@ fun generateCodeFromIr(
input.components.symbolTable, input.components.symbolTable,
input.components.irProviders, input.components.irProviders,
input.extensions, input.extensions,
FirJvmBackendExtension(input.components, input.irActualizedResult), FirJvmBackendExtension(
input.components,
input.irActualizedResult?.actualizedExpectDeclarations?.extractFirDeclarations()
),
input.pluginContext input.pluginContext
) { ) {
performanceManager?.notifyIRLoweringFinished() performanceManager?.notifyIRLoweringFinished()
-1
View File
@@ -15,7 +15,6 @@ dependencies {
compileOnly(project(":compiler:fir:tree")) compileOnly(project(":compiler:fir:tree"))
compileOnly(project(":compiler:ir.tree")) compileOnly(project(":compiler:ir.tree"))
compileOnly(project(":compiler:ir.backend.common")) compileOnly(project(":compiler:ir.backend.common"))
compileOnly(project(":compiler:ir.actualization"))
compileOnly(project(":compiler:ir.serialization.common")) compileOnly(project(":compiler:ir.serialization.common"))
compileOnly(project(":compiler:fir:fir-serialization")) compileOnly(project(":compiler:fir:fir-serialization"))
compileOnly(project(":compiler:fir:fir-deserialization")) compileOnly(project(":compiler:fir:fir-deserialization"))
@@ -17,7 +17,6 @@ dependencies {
compileOnly(project(":compiler:ir.tree")) compileOnly(project(":compiler:ir.tree"))
compileOnly(project(":compiler:backend")) compileOnly(project(":compiler:backend"))
compileOnly(project(":compiler:backend.jvm")) compileOnly(project(":compiler:backend.jvm"))
implementation(project(":compiler:ir.actualization"))
api(project(":compiler:ir.serialization.common")) api(project(":compiler:ir.serialization.common"))
compileOnly(intellijCore()) compileOnly(intellijCore())
@@ -5,18 +5,18 @@
package org.jetbrains.kotlin.fir.backend.jvm package org.jetbrains.kotlin.fir.backend.jvm
import org.jetbrains.kotlin.backend.common.actualizer.IrActualizedResult
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
import org.jetbrains.kotlin.backend.jvm.JvmBackendExtension import org.jetbrains.kotlin.backend.jvm.JvmBackendExtension
import org.jetbrains.kotlin.backend.jvm.metadata.MetadataSerializer import org.jetbrains.kotlin.backend.jvm.metadata.MetadataSerializer
import org.jetbrains.kotlin.codegen.serialization.JvmSerializationBindings import org.jetbrains.kotlin.codegen.serialization.JvmSerializationBindings
import org.jetbrains.kotlin.fir.backend.Fir2IrComponents import org.jetbrains.kotlin.fir.backend.Fir2IrComponents
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.IrClass
import org.jetbrains.org.objectweb.asm.Type import org.jetbrains.org.objectweb.asm.Type
class FirJvmBackendExtension( class FirJvmBackendExtension(
private val components: Fir2IrComponents, private val components: Fir2IrComponents,
private val irActualizedResult: IrActualizedResult? private val actualizedExpectDeclarations: Set<FirDeclaration>?
) : JvmBackendExtension { ) : JvmBackendExtension {
override fun createSerializer( override fun createSerializer(
context: JvmBackendContext, context: JvmBackendContext,
@@ -32,7 +32,7 @@ class FirJvmBackendExtension(
bindings, bindings,
components, components,
parentSerializer, parentSerializer,
irActualizedResult actualizedExpectDeclarations
) )
} }
} }
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.fir.backend.jvm package org.jetbrains.kotlin.fir.backend.jvm
import org.jetbrains.kotlin.KtFakeSourceElementKind import org.jetbrains.kotlin.KtFakeSourceElementKind
import org.jetbrains.kotlin.backend.common.actualizer.IrActualizedResult
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin
import org.jetbrains.kotlin.backend.jvm.metadata.MetadataSerializer import org.jetbrains.kotlin.backend.jvm.metadata.MetadataSerializer
@@ -16,7 +15,6 @@ import org.jetbrains.kotlin.config.*
import org.jetbrains.kotlin.fir.* import org.jetbrains.kotlin.fir.*
import org.jetbrains.kotlin.fir.backend.Fir2IrComponents import org.jetbrains.kotlin.fir.backend.Fir2IrComponents
import org.jetbrains.kotlin.fir.backend.FirMetadataSource import org.jetbrains.kotlin.fir.backend.FirMetadataSource
import org.jetbrains.kotlin.fir.backend.extractFirDeclarations
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.builder.* import org.jetbrains.kotlin.fir.declarations.builder.*
import org.jetbrains.kotlin.fir.resolve.ScopeSession import org.jetbrains.kotlin.fir.resolve.ScopeSession
@@ -46,7 +44,7 @@ fun makeFirMetadataSerializerForIrClass(
serializationBindings: JvmSerializationBindings, serializationBindings: JvmSerializationBindings,
components: Fir2IrComponents, components: Fir2IrComponents,
parent: MetadataSerializer?, parent: MetadataSerializer?,
irActualizedResult: IrActualizedResult? actualizedExpectDeclarations: Set<FirDeclaration>?
): FirMetadataSerializer { ): FirMetadataSerializer {
val approximator = TypeApproximatorForMetadataSerializer(session) val approximator = TypeApproximatorForMetadataSerializer(session)
val localDelegatedProperties = context.localDelegatedProperties[irClass.attributeOwnerId]?.mapNotNull { val localDelegatedProperties = context.localDelegatedProperties[irClass.attributeOwnerId]?.mapNotNull {
@@ -64,7 +62,7 @@ fun makeFirMetadataSerializerForIrClass(
irClass.metadata, components.session, components.scopeSession, firSerializerExtension, approximator, parent, irClass.metadata, components.session, components.scopeSession, firSerializerExtension, approximator, parent,
context.config.languageVersionSettings, context.config.languageVersionSettings,
), ),
irActualizedResult actualizedExpectDeclarations
) )
} }
@@ -76,7 +74,7 @@ fun makeLocalFirMetadataSerializerForMetadataSource(
parent: MetadataSerializer?, parent: MetadataSerializer?,
targetId: TargetId, targetId: TargetId,
configuration: CompilerConfiguration, configuration: CompilerConfiguration,
irActualizedResult: IrActualizedResult? actualizedExpectDeclarations: Set<FirDeclaration>?
): FirMetadataSerializer { ): FirMetadataSerializer {
val serializationBindings = JvmSerializationBindings() val serializationBindings = JvmSerializationBindings()
val approximator = TypeApproximatorForMetadataSerializer(session) val approximator = TypeApproximatorForMetadataSerializer(session)
@@ -110,7 +108,7 @@ fun makeLocalFirMetadataSerializerForMetadataSource(
metadata, session, scopeSession, firSerializerExtension, approximator, parent, metadata, session, scopeSession, firSerializerExtension, approximator, parent,
configuration.languageVersionSettings configuration.languageVersionSettings
), ),
irActualizedResult actualizedExpectDeclarations
) )
} }
@@ -119,9 +117,8 @@ class FirMetadataSerializer(
private val serializationBindings: JvmSerializationBindings, private val serializationBindings: JvmSerializationBindings,
private val approximator: AbstractTypeApproximator, private val approximator: AbstractTypeApproximator,
internal val serializer: FirElementSerializer?, internal val serializer: FirElementSerializer?,
irActualizedResult: IrActualizedResult? private val actualizedExpectDeclarations: Set<FirDeclaration>?
) : MetadataSerializer { ) : MetadataSerializer {
private val actualizedExpectDeclarations = irActualizedResult.extractFirDeclarations()
override fun serialize(metadata: MetadataSource): Pair<MessageLite, JvmStringTable>? { override fun serialize(metadata: MetadataSource): Pair<MessageLite, JvmStringTable>? {
val message = when (metadata) { val message = when (metadata) {
@@ -9,7 +9,6 @@ import com.intellij.psi.PsiCompiledElement
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import com.intellij.psi.tree.IElementType import com.intellij.psi.tree.IElementType
import org.jetbrains.kotlin.* import org.jetbrains.kotlin.*
import org.jetbrains.kotlin.backend.common.actualizer.IrActualizedResult
import org.jetbrains.kotlin.builtins.StandardNames.DATA_CLASS_COMPONENT_PREFIX import org.jetbrains.kotlin.builtins.StandardNames.DATA_CLASS_COMPONENT_PREFIX
import org.jetbrains.kotlin.descriptors.ValueClassRepresentation import org.jetbrains.kotlin.descriptors.ValueClassRepresentation
import org.jetbrains.kotlin.diagnostics.startOffsetSkippingComments import org.jetbrains.kotlin.diagnostics.startOffsetSkippingComments
@@ -770,8 +769,8 @@ fun FirCallableDeclaration.contextReceiversForFunctionOrContainingProperty(): Li
else else
this.contextReceivers this.contextReceivers
fun IrActualizedResult?.extractFirDeclarations(): Set<FirDeclaration>? { fun List<IrDeclaration>.extractFirDeclarations(): Set<FirDeclaration> {
return this?.actualizedExpectDeclarations?.mapNotNullTo(mutableSetOf()) { ((it as IrMetadataSourceOwner).metadata as FirMetadataSource).fir } return this.mapNotNullTo(mutableSetOf()) { ((it as IrMetadataSourceOwner).metadata as FirMetadataSource).fir }
} }
// This method is intended to be used for default values of annotation parameters (compile-time strings, numbers, enum values, KClasses) // This method is intended to be used for default values of annotation parameters (compile-time strings, numbers, enum values, KClasses)
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.KtFakeSourceElementKind
import org.jetbrains.kotlin.KtPsiSourceFileLinesMapping import org.jetbrains.kotlin.KtPsiSourceFileLinesMapping
import org.jetbrains.kotlin.KtSourceFileLinesMappingFromLineStartOffsets import org.jetbrains.kotlin.KtSourceFileLinesMappingFromLineStartOffsets
import org.jetbrains.kotlin.backend.common.CommonBackendErrors import org.jetbrains.kotlin.backend.common.CommonBackendErrors
import org.jetbrains.kotlin.backend.common.actualizer.FakeOverrideRebuilder import org.jetbrains.kotlin.ir.overrides.FakeOverrideRebuilder
import org.jetbrains.kotlin.backend.common.sourceElement import org.jetbrains.kotlin.backend.common.sourceElement
import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.config.LanguageFeature
@@ -53,7 +53,7 @@ internal fun collectNewDirtySources(
data.lastOrNull(), data.lastOrNull(),
targetId, targetId,
configuration, configuration,
irActualizedResult = null actualizedExpectDeclarations = null
) )
data.push(serializer) data.push(serializer)
body(serializer) body(serializer)
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.ir.IrDiagnosticReporter
import org.jetbrains.kotlin.backend.common.actualizer.checker.IrExpectActualCheckers import org.jetbrains.kotlin.backend.common.actualizer.checker.IrExpectActualCheckers
import org.jetbrains.kotlin.incremental.components.ExpectActualTracker import org.jetbrains.kotlin.incremental.components.ExpectActualTracker
import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.overrides.FakeOverrideRebuilder
import org.jetbrains.kotlin.ir.overrides.IrFakeOverrideBuilder import org.jetbrains.kotlin.ir.overrides.IrFakeOverrideBuilder
import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.symbols.IrSymbol
import org.jetbrains.kotlin.ir.types.IrTypeSystemContext import org.jetbrains.kotlin.ir.types.IrTypeSystemContext
@@ -3,7 +3,7 @@
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
package org.jetbrains.kotlin.backend.common.actualizer package org.jetbrains.kotlin.ir.overrides
import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.*
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.ir.expressions.IrCall
import org.jetbrains.kotlin.ir.expressions.IrFunctionReference import org.jetbrains.kotlin.ir.expressions.IrFunctionReference
import org.jetbrains.kotlin.ir.expressions.IrLocalDelegatedPropertyReference import org.jetbrains.kotlin.ir.expressions.IrLocalDelegatedPropertyReference
import org.jetbrains.kotlin.ir.expressions.IrPropertyReference import org.jetbrains.kotlin.ir.expressions.IrPropertyReference
import org.jetbrains.kotlin.ir.overrides.IrFakeOverrideBuilder
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.symbols.IrSymbol
import org.jetbrains.kotlin.ir.types.getClass import org.jetbrains.kotlin.ir.types.getClass
@@ -131,7 +131,7 @@ class Fir2IrJsResultsConverter(
val (firFile, components) = firFilesAndComponentsBySourceFile[file] val (firFile, components) = firFilesAndComponentsBySourceFile[file]
?: error("cannot find FIR file by source file ${file.name} (${file.path})") ?: error("cannot find FIR file by source file ${file.name} (${file.path})")
if (actualizedExpectDeclarations == null && irActualizedResult != null) { if (actualizedExpectDeclarations == null && irActualizedResult != null) {
actualizedExpectDeclarations = irActualizedResult.extractFirDeclarations() actualizedExpectDeclarations = irActualizedResult.actualizedExpectDeclarations.extractFirDeclarations()
} }
serializeSingleFirFile( serializeSingleFirFile(
firFile, firFile,
@@ -131,7 +131,7 @@ class Fir2IrJvmResultsConverter(
phaseConfig, phaseConfig,
components.irProviders, components.irProviders,
fir2IrExtensions, fir2IrExtensions,
FirJvmBackendExtension(components, irActualizedResult = null), FirJvmBackendExtension(components, actualizedExpectDeclarations = null),
pluginContext, pluginContext,
notifyCodegenStart = {}, notifyCodegenStart = {},
) )
@@ -132,7 +132,7 @@ class Fir2IrWasmResultsConverter(
val (firFile, components) = firFilesAndComponentsBySourceFile[file] val (firFile, components) = firFilesAndComponentsBySourceFile[file]
?: error("cannot find FIR file by source file ${file.name} (${file.path})") ?: error("cannot find FIR file by source file ${file.name} (${file.path})")
if (actualizedExpectDeclarations == null && irActualizedResult != null) { if (actualizedExpectDeclarations == null && irActualizedResult != null) {
actualizedExpectDeclarations = irActualizedResult.extractFirDeclarations() actualizedExpectDeclarations = irActualizedResult.actualizedExpectDeclarations.extractFirDeclarations()
} }
serializeSingleFirFile( serializeSingleFirFile(
firFile, firFile,
@@ -176,7 +176,7 @@ object GenerationUtils {
generationState.oldBEInitTrace(files) generationState.oldBEInitTrace(files)
codegenFactory.generateModuleInFrontendIRMode( codegenFactory.generateModuleInFrontendIRMode(
generationState, moduleFragment, components.symbolTable, components.irProviders, generationState, moduleFragment, components.symbolTable, components.irProviders,
fir2IrExtensions, FirJvmBackendExtension(components, irActualizedResult = null), pluginContext, fir2IrExtensions, FirJvmBackendExtension(components, actualizedExpectDeclarations = null), pluginContext,
) {} ) {}
generationState.factory.done() generationState.factory.done()
@@ -64,7 +64,7 @@ internal fun PhaseContext.firSerializerBase(
} }
} }
val actualizedFirDeclarations = fir2IrInput?.irActualizedResult?.extractFirDeclarations() val actualizedFirDeclarations = fir2IrInput?.irActualizedResult?.actualizedExpectDeclarations?.extractFirDeclarations()
return serializeNativeModule( return serializeNativeModule(
configuration = configuration, configuration = configuration,
messageLogger = configuration.get(IrMessageLogger.IR_MESSAGE_LOGGER) ?: IrMessageLogger.None, messageLogger = configuration.get(IrMessageLogger.IR_MESSAGE_LOGGER) ?: IrMessageLogger.None,