From 93bf54266aea3881e3d5886beaac7a2c3bcb0a5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steven=20Sch=C3=A4fer?= Date: Mon, 3 Oct 2022 16:49:28 +0200 Subject: [PATCH] FIR: Implement moduleDescriptor in Fir2IrPluginContext A ModuleDescriptor is needed to create external package fragments with descriptors (see JvmSymbols.kt). Descriptorless external package fragments can fail in code using obsolete descriptor based APIs. --- .../jetbrains/kotlin/fir/backend/Fir2IrConverter.kt | 2 +- .../kotlin/fir/backend/Fir2IrPluginContext.kt | 10 ++++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt index aaa15c650cc..7163b04dae4 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrConverter.kt @@ -97,7 +97,7 @@ class Fir2IrConverter( } if (irGenerationExtensions.isNotEmpty()) { - val pluginContext = Fir2IrPluginContext(components) + val pluginContext = Fir2IrPluginContext(components, irModuleFragment.descriptor) for (extension in irGenerationExtensions) { extension.generate(irModuleFragment, pluginContext) } diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrPluginContext.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrPluginContext.kt index 0ada9431e94..b3a73d9c5f2 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrPluginContext.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrPluginContext.kt @@ -34,16 +34,14 @@ import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.resolve.BindingContext -class Fir2IrPluginContext(private val components: Fir2IrComponents) : IrPluginContext { +class Fir2IrPluginContext( + private val components: Fir2IrComponents, + @property:ObsoleteDescriptorBasedAPI override val moduleDescriptor: ModuleDescriptor +) : IrPluginContext { companion object { private const val ERROR_MESSAGE = "This API is not supported for K2" } - @ObsoleteDescriptorBasedAPI - @FirIncompatiblePluginAPI - override val moduleDescriptor: ModuleDescriptor - get() = error(ERROR_MESSAGE) - @ObsoleteDescriptorBasedAPI @FirIncompatiblePluginAPI override val bindingContext: BindingContext