[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 {
fir2IrActualizedResult.irActualizedResult.extractFirDeclarations()
fir2IrActualizedResult.irActualizedResult?.actualizedExpectDeclarations?.extractFirDeclarations()
}
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.diagnostics.DiagnosticReporterFactory
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.FirJvmBackendExtension
import org.jetbrains.kotlin.fir.backend.jvm.JvmFir2IrExtensions
@@ -188,7 +189,8 @@ object KotlinToJVMBytecodeCompiler {
NoScopeRecordCliBindingTrace().bindingContext,
FirJvmBackendClassResolver(fir2IrAndIrActualizerResult.components),
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.fir.backend.Fir2IrConfiguration
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.extensions.FirAnalysisHandlerExtension
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
@@ -262,7 +263,10 @@ fun generateCodeFromIr(
input.components.symbolTable,
input.components.irProviders,
input.extensions,
FirJvmBackendExtension(input.components, input.irActualizedResult),
FirJvmBackendExtension(
input.components,
input.irActualizedResult?.actualizedExpectDeclarations?.extractFirDeclarations()
),
input.pluginContext
) {
performanceManager?.notifyIRLoweringFinished()
-1
View File
@@ -15,7 +15,6 @@ dependencies {
compileOnly(project(":compiler:fir:tree"))
compileOnly(project(":compiler:ir.tree"))
compileOnly(project(":compiler:ir.backend.common"))
compileOnly(project(":compiler:ir.actualization"))
compileOnly(project(":compiler:ir.serialization.common"))
compileOnly(project(":compiler:fir:fir-serialization"))
compileOnly(project(":compiler:fir:fir-deserialization"))
@@ -17,7 +17,6 @@ dependencies {
compileOnly(project(":compiler:ir.tree"))
compileOnly(project(":compiler:backend"))
compileOnly(project(":compiler:backend.jvm"))
implementation(project(":compiler:ir.actualization"))
api(project(":compiler:ir.serialization.common"))
compileOnly(intellijCore())
@@ -5,18 +5,18 @@
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.JvmBackendExtension
import org.jetbrains.kotlin.backend.jvm.metadata.MetadataSerializer
import org.jetbrains.kotlin.codegen.serialization.JvmSerializationBindings
import org.jetbrains.kotlin.fir.backend.Fir2IrComponents
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.ir.declarations.IrClass
import org.jetbrains.org.objectweb.asm.Type
class FirJvmBackendExtension(
private val components: Fir2IrComponents,
private val irActualizedResult: IrActualizedResult?
private val actualizedExpectDeclarations: Set<FirDeclaration>?
) : JvmBackendExtension {
override fun createSerializer(
context: JvmBackendContext,
@@ -32,7 +32,7 @@ class FirJvmBackendExtension(
bindings,
components,
parentSerializer,
irActualizedResult
actualizedExpectDeclarations
)
}
}
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.fir.backend.jvm
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.JvmLoweredDeclarationOrigin
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.backend.Fir2IrComponents
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.builder.*
import org.jetbrains.kotlin.fir.resolve.ScopeSession
@@ -46,7 +44,7 @@ fun makeFirMetadataSerializerForIrClass(
serializationBindings: JvmSerializationBindings,
components: Fir2IrComponents,
parent: MetadataSerializer?,
irActualizedResult: IrActualizedResult?
actualizedExpectDeclarations: Set<FirDeclaration>?
): FirMetadataSerializer {
val approximator = TypeApproximatorForMetadataSerializer(session)
val localDelegatedProperties = context.localDelegatedProperties[irClass.attributeOwnerId]?.mapNotNull {
@@ -64,7 +62,7 @@ fun makeFirMetadataSerializerForIrClass(
irClass.metadata, components.session, components.scopeSession, firSerializerExtension, approximator, parent,
context.config.languageVersionSettings,
),
irActualizedResult
actualizedExpectDeclarations
)
}
@@ -76,7 +74,7 @@ fun makeLocalFirMetadataSerializerForMetadataSource(
parent: MetadataSerializer?,
targetId: TargetId,
configuration: CompilerConfiguration,
irActualizedResult: IrActualizedResult?
actualizedExpectDeclarations: Set<FirDeclaration>?
): FirMetadataSerializer {
val serializationBindings = JvmSerializationBindings()
val approximator = TypeApproximatorForMetadataSerializer(session)
@@ -110,7 +108,7 @@ fun makeLocalFirMetadataSerializerForMetadataSource(
metadata, session, scopeSession, firSerializerExtension, approximator, parent,
configuration.languageVersionSettings
),
irActualizedResult
actualizedExpectDeclarations
)
}
@@ -119,9 +117,8 @@ class FirMetadataSerializer(
private val serializationBindings: JvmSerializationBindings,
private val approximator: AbstractTypeApproximator,
internal val serializer: FirElementSerializer?,
irActualizedResult: IrActualizedResult?
private val actualizedExpectDeclarations: Set<FirDeclaration>?
) : MetadataSerializer {
private val actualizedExpectDeclarations = irActualizedResult.extractFirDeclarations()
override fun serialize(metadata: MetadataSource): Pair<MessageLite, JvmStringTable>? {
val message = when (metadata) {
@@ -9,7 +9,6 @@ import com.intellij.psi.PsiCompiledElement
import com.intellij.psi.PsiElement
import com.intellij.psi.tree.IElementType
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.descriptors.ValueClassRepresentation
import org.jetbrains.kotlin.diagnostics.startOffsetSkippingComments
@@ -770,8 +769,8 @@ fun FirCallableDeclaration.contextReceiversForFunctionOrContainingProperty(): Li
else
this.contextReceivers
fun IrActualizedResult?.extractFirDeclarations(): Set<FirDeclaration>? {
return this?.actualizedExpectDeclarations?.mapNotNullTo(mutableSetOf()) { ((it as IrMetadataSourceOwner).metadata as FirMetadataSource).fir }
fun List<IrDeclaration>.extractFirDeclarations(): Set<FirDeclaration> {
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)
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.KtFakeSourceElementKind
import org.jetbrains.kotlin.KtPsiSourceFileLinesMapping
import org.jetbrains.kotlin.KtSourceFileLinesMappingFromLineStartOffsets
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.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.config.LanguageFeature
@@ -53,7 +53,7 @@ internal fun collectNewDirtySources(
data.lastOrNull(),
targetId,
configuration,
irActualizedResult = null
actualizedExpectDeclarations = null
)
data.push(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.incremental.components.ExpectActualTracker
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.symbols.IrSymbol
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.
*/
package org.jetbrains.kotlin.backend.common.actualizer
package org.jetbrains.kotlin.ir.overrides
import org.jetbrains.kotlin.ir.IrElement
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.IrLocalDelegatedPropertyReference
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.IrSymbol
import org.jetbrains.kotlin.ir.types.getClass
@@ -131,7 +131,7 @@ class Fir2IrJsResultsConverter(
val (firFile, components) = firFilesAndComponentsBySourceFile[file]
?: error("cannot find FIR file by source file ${file.name} (${file.path})")
if (actualizedExpectDeclarations == null && irActualizedResult != null) {
actualizedExpectDeclarations = irActualizedResult.extractFirDeclarations()
actualizedExpectDeclarations = irActualizedResult.actualizedExpectDeclarations.extractFirDeclarations()
}
serializeSingleFirFile(
firFile,
@@ -131,7 +131,7 @@ class Fir2IrJvmResultsConverter(
phaseConfig,
components.irProviders,
fir2IrExtensions,
FirJvmBackendExtension(components, irActualizedResult = null),
FirJvmBackendExtension(components, actualizedExpectDeclarations = null),
pluginContext,
notifyCodegenStart = {},
)
@@ -132,7 +132,7 @@ class Fir2IrWasmResultsConverter(
val (firFile, components) = firFilesAndComponentsBySourceFile[file]
?: error("cannot find FIR file by source file ${file.name} (${file.path})")
if (actualizedExpectDeclarations == null && irActualizedResult != null) {
actualizedExpectDeclarations = irActualizedResult.extractFirDeclarations()
actualizedExpectDeclarations = irActualizedResult.actualizedExpectDeclarations.extractFirDeclarations()
}
serializeSingleFirFile(
firFile,
@@ -176,7 +176,7 @@ object GenerationUtils {
generationState.oldBEInitTrace(files)
codegenFactory.generateModuleInFrontendIRMode(
generationState, moduleFragment, components.symbolTable, components.irProviders,
fir2IrExtensions, FirJvmBackendExtension(components, irActualizedResult = null), pluginContext,
fir2IrExtensions, FirJvmBackendExtension(components, actualizedExpectDeclarations = null), pluginContext,
) {}
generationState.factory.done()
@@ -64,7 +64,7 @@ internal fun PhaseContext.firSerializerBase(
}
}
val actualizedFirDeclarations = fir2IrInput?.irActualizedResult?.extractFirDeclarations()
val actualizedFirDeclarations = fir2IrInput?.irActualizedResult?.actualizedExpectDeclarations?.extractFirDeclarations()
return serializeNativeModule(
configuration = configuration,
messageLogger = configuration.get(IrMessageLogger.IR_MESSAGE_LOGGER) ?: IrMessageLogger.None,