From 2e92fe9be9a8b874c2f57f19f571eaf1d5a5e19b Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Sun, 16 Aug 2020 21:01:55 +0300 Subject: [PATCH] [FIR2IR] Add fir2ir component for converting fir visibility to FE 1.0 --- .../compiler/KotlinToJVMBytecodeCompiler.kt | 4 ++- .../fir/fir2ir/jvm-backend/build.gradle.kts | 1 + .../backend/jvm/FirJvmVisibilityConverter.kt | 24 +++++++++++++ .../kotlin/fir/backend/ConversionUtils.kt | 14 -------- .../fir/backend/Fir2IrClassifierStorage.kt | 6 ++-- .../kotlin/fir/backend/Fir2IrComponents.kt | 1 + .../fir/backend/Fir2IrComponentsStorage.kt | 1 + .../kotlin/fir/backend/Fir2IrConverter.kt | 4 ++- .../fir/backend/Fir2IrDeclarationStorage.kt | 20 ++++++----- .../fir/backend/Fir2IrVisibilityConverter.kt | 35 +++++++++++++++++++ .../kotlin/fir/lazy/Fir2IrLazyClass.kt | 3 +- .../kotlin/fir/lazy/Fir2IrLazyConstructor.kt | 3 +- .../kotlin/fir/lazy/Fir2IrLazyProperty.kt | 7 ++-- .../fir/lazy/Fir2IrLazySimpleFunction.kt | 2 +- .../kotlin/fir/AbstractFir2IrTextTest.kt | 2 ++ .../kotlin/codegen/GenerationUtils.kt | 2 ++ 16 files changed, 93 insertions(+), 36 deletions(-) create mode 100644 compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmVisibilityConverter.kt create mode 100644 compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisibilityConverter.kt diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt index 97e79d87a05..77cbeec26d8 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt @@ -63,6 +63,7 @@ import org.jetbrains.kotlin.fir.backend.Fir2IrConverter import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendClassResolver import org.jetbrains.kotlin.fir.backend.jvm.FirJvmClassCodegen import org.jetbrains.kotlin.fir.backend.jvm.FirJvmKotlinMangler +import org.jetbrains.kotlin.fir.backend.jvm.FirJvmVisibilityConverter import org.jetbrains.kotlin.fir.builder.RawFirBuilder import org.jetbrains.kotlin.fir.extensions.BunchOfRegisteredExtensions import org.jetbrains.kotlin.fir.extensions.extensionService @@ -405,7 +406,8 @@ object KotlinToJVMBytecodeCompiler { Fir2IrConverter.createModuleFragment( session, resolveTransformer.scopeSession, firFiles, moduleConfiguration.languageVersionSettings, signaturer, - JvmGeneratorExtensions(), FirJvmKotlinMangler(session), IrFactoryImpl + JvmGeneratorExtensions(), FirJvmKotlinMangler(session), IrFactoryImpl, + FirJvmVisibilityConverter ) performanceManager?.notifyIRTranslationFinished() diff --git a/compiler/fir/fir2ir/jvm-backend/build.gradle.kts b/compiler/fir/fir2ir/jvm-backend/build.gradle.kts index 45eb5c59f9b..851eafc6a25 100644 --- a/compiler/fir/fir2ir/jvm-backend/build.gradle.kts +++ b/compiler/fir/fir2ir/jvm-backend/build.gradle.kts @@ -7,6 +7,7 @@ dependencies { compileOnly(project(":core:descriptors")) compileOnly(project(":compiler:fir:cones")) compileOnly(project(":compiler:fir:resolve")) + compileOnly(project(":compiler:fir:jvm")) compileOnly(project(":compiler:fir:tree")) compileOnly(project(":compiler:fir:fir2ir")) compileOnly(project(":compiler:fir:fir-serialization")) diff --git a/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmVisibilityConverter.kt b/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmVisibilityConverter.kt new file mode 100644 index 00000000000..edfb88a5a18 --- /dev/null +++ b/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmVisibilityConverter.kt @@ -0,0 +1,24 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * 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.fir.backend.jvm + +import org.jetbrains.kotlin.fir.JavaVisibilities +import org.jetbrains.kotlin.fir.Visibility +import org.jetbrains.kotlin.fir.backend.Fir2IrVisibilityConverter +import org.jetbrains.kotlin.descriptors.Visibility as OldVisibility +import org.jetbrains.kotlin.load.java.JavaVisibilities as OldJavaVisibilities + + +object FirJvmVisibilityConverter : Fir2IrVisibilityConverter() { + override fun convertPlatformVisibility(visibility: Visibility): OldVisibility { + return when (visibility) { + JavaVisibilities.PackageVisibility -> OldJavaVisibilities.PACKAGE_VISIBILITY + JavaVisibilities.ProtectedStaticVisibility -> OldJavaVisibilities.PROTECTED_STATIC_VISIBILITY + JavaVisibilities.ProtectedAndPackage -> OldJavaVisibilities.PROTECTED_AND_PACKAGE + else -> error("Unknown visibility: $this") + } + } +} diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt index cde9cfc94f9..763b79d9858 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt @@ -50,8 +50,6 @@ import org.jetbrains.kotlin.types.AbstractTypeChecker import org.jetbrains.kotlin.types.AbstractTypeCheckerContext import org.jetbrains.kotlin.types.Variance import org.jetbrains.kotlin.util.OperatorNameConventions -import org.jetbrains.kotlin.descriptors.Visibilities as OldVisibilities -import org.jetbrains.kotlin.descriptors.Visibility as OldVisibility internal fun FirElement.convertWithOffsets( f: (startOffset: Int, endOffset: Int) -> T @@ -491,15 +489,3 @@ fun Fir2IrComponents.createTemporaryVariableForSafeCallConstruction( return Pair(receiverVariable, variableSymbol) } - -fun Visibility.toOldVisibility(): OldVisibility = when (this.normalize()) { - Visibilities.Private -> OldVisibilities.PRIVATE - Visibilities.PrivateToThis -> OldVisibilities.PRIVATE_TO_THIS - Visibilities.Protected -> OldVisibilities.PROTECTED - Visibilities.Internal -> OldVisibilities.INTERNAL - Visibilities.Public -> OldVisibilities.PUBLIC - Visibilities.Local -> OldVisibilities.LOCAL - Visibilities.InvisibleFake -> OldVisibilities.INVISIBLE_FAKE - Visibilities.Unknown -> OldVisibilities.UNKNOWN - else -> error("Unknown visiblity: $this") -} diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt index 9a16f8b588a..232ef801df8 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt @@ -192,7 +192,7 @@ class Fir2IrClassifierStorage( declareIrTypeAlias(signature) { symbol -> val irTypeAlias = irFactory.createTypeAlias( startOffset, endOffset, symbol, - typeAlias.name, typeAlias.visibility.toOldVisibility(), + typeAlias.name, components.visibilityConverter.convertToOldVisibility(typeAlias.visibility), typeAlias.expandedTypeRef.toIrType(), typeAlias.isActual, IrDeclarationOrigin.DEFINED ).apply { @@ -237,7 +237,7 @@ class Fir2IrClassifierStorage( symbol, regularClass.name, regularClass.classKind, - visibility.toOldVisibility(), + components.visibilityConverter.convertToOldVisibility(visibility), modality, isCompanion = regularClass.isCompanion, isInner = regularClass.isInner, @@ -277,7 +277,7 @@ class Fir2IrClassifierStorage( startOffset, endOffset, origin, symbol, name, // NB: for unknown reason, IR uses 'CLASS' kind for simple anonymous objects anonymousObject.classKind.takeIf { it == ClassKind.ENUM_ENTRY } ?: ClassKind.CLASS, - visibility.toOldVisibility(), modality + components.visibilityConverter.convertToOldVisibility(visibility), modality ).apply { metadata = FirMetadataSource.Class(anonymousObject) setThisReceiver(anonymousObject.typeParameters) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrComponents.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrComponents.kt index 9e431117c21..62766f002b3 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrComponents.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrComponents.kt @@ -26,4 +26,5 @@ interface Fir2IrComponents { val signatureComposer: Fir2IrSignatureComposer val callGenerator: CallAndReferenceGenerator val fakeOverrideGenerator: FakeOverrideGenerator + val visibilityConverter: Fir2IrVisibilityConverter } diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrComponentsStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrComponentsStorage.kt index f49171a61a2..873ded8266b 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrComponentsStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrComponentsStorage.kt @@ -28,6 +28,7 @@ class Fir2IrComponentsStorage( override lateinit var typeConverter: Fir2IrTypeConverter override lateinit var callGenerator: CallAndReferenceGenerator override lateinit var fakeOverrideGenerator: FakeOverrideGenerator + override lateinit var visibilityConverter: Fir2IrVisibilityConverter override lateinit var builtIns: Fir2IrBuiltIns override val signatureComposer = FirBasedSignatureComposer(mangler) 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 96771bc161c..ee9ecf19f8e 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 @@ -255,6 +255,7 @@ class Fir2IrConverter( generatorExtensions: GeneratorExtensions, mangler: FirMangler, irFactory: IrFactory, + visibilityConverter: Fir2IrVisibilityConverter ): Fir2IrResult { val moduleDescriptor = FirModuleDescriptor(session) val symbolTable = SymbolTable(signaturer, irFactory) @@ -279,6 +280,7 @@ class Fir2IrConverter( components.declarationStorage = declarationStorage components.classifierStorage = classifierStorage components.typeConverter = typeConverter + components.visibilityConverter = visibilityConverter components.builtIns = builtIns val irFiles = mutableListOf() @@ -330,4 +332,4 @@ class Fir2IrConverter( return Fir2IrResult(irModuleFragment, symbolTable, sourceManager, components) } } -} \ No newline at end of file +} diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt index d1c51dff766..568fdde2789 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt @@ -406,7 +406,7 @@ class Fir2IrDeclarationStorage( val result = declareIrSimpleFunction(signature, simpleFunction?.containerSource) { symbol -> irFactory.createFunction( startOffset, endOffset, updatedOrigin, symbol, - name, visibility.toOldVisibility(), + name, components.visibilityConverter.convertToOldVisibility(visibility), simpleFunction?.modality ?: Modality.FINAL, function.returnTypeRef.toIrType(), isInline = simpleFunction?.isInline == true, @@ -483,7 +483,7 @@ class Fir2IrDeclarationStorage( declareIrConstructor(signature) { symbol -> irFactory.createConstructor( startOffset, endOffset, origin, symbol, - Name.special(""), constructor.visibility.toOldVisibility(), + Name.special(""), components.visibilityConverter.convertToOldVisibility(constructor.visibility), constructor.returnTypeRef.toIrType(), isInline = false, isExternal = false, isPrimary = isPrimary, isExpect = constructor.isExpect ).apply { @@ -535,10 +535,13 @@ class Fir2IrDeclarationStorage( isGetter = !isSetter ) { symbol -> val accessorReturnType = if (isSetter) irBuiltIns.unitType else propertyType + val visibility = propertyAccessor?.visibility?.let { + components.visibilityConverter.convertToOldVisibility(it) + } irFactory.createFunction( startOffset, endOffset, origin, symbol, Name.special("<$prefix-${correspondingProperty.name}>"), - propertyAccessor?.visibility?.toOldVisibility() ?: correspondingProperty.visibility, + visibility ?: correspondingProperty.visibility, correspondingProperty.modality, accessorReturnType, isInline = propertyAccessor?.isInline == true, isExternal = propertyAccessor?.isExternal == true, @@ -650,7 +653,7 @@ class Fir2IrDeclarationStorage( val result = declareIrProperty(signature, property.containerSource) { symbol -> irFactory.createProperty( startOffset, endOffset, origin, symbol, - property.name, property.visibility.toOldVisibility(), property.modality!!, + property.name, components.visibilityConverter.convertToOldVisibility(property.visibility), property.modality!!, isVar = property.isVar, isConst = property.isConst, isLateinit = property.isLateInit, @@ -678,8 +681,8 @@ class Fir2IrDeclarationStorage( ) { backingField = createBackingField( property, IrDeclarationOrigin.PROPERTY_BACKING_FIELD, descriptor, - property.fieldVisibility.toOldVisibility(), property.name, property.isVal, initializer, - type + components.visibilityConverter.convertToOldVisibility(property.fieldVisibility), + property.name, property.isVal, initializer, type ).also { field -> if (initializer is FirConstExpression<*>) { // TODO: Normally we shouldn't have error type here @@ -690,7 +693,8 @@ class Fir2IrDeclarationStorage( } else if (delegate != null) { backingField = createBackingField( property, IrDeclarationOrigin.PROPERTY_DELEGATE, descriptor, - property.fieldVisibility.toOldVisibility(), Name.identifier("${property.name}\$delegate"), true, delegate + components.visibilityConverter.convertToOldVisibility(property.fieldVisibility), + Name.identifier("${property.name}\$delegate"), true, delegate ) } if (irParent != null) { @@ -770,7 +774,7 @@ class Fir2IrDeclarationStorage( ) { symbol -> irFactory.createField( startOffset, endOffset, origin, symbol, - field.name, type, field.visibility.toOldVisibility(), + field.name, type, components.visibilityConverter.convertToOldVisibility(field.visibility), isFinal = field.modality == Modality.FINAL, isExternal = false, isStatic = field.isStatic diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisibilityConverter.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisibilityConverter.kt new file mode 100644 index 00000000000..65d90f2c529 --- /dev/null +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisibilityConverter.kt @@ -0,0 +1,35 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * 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.fir.backend + +import org.jetbrains.kotlin.fir.Visibilities +import org.jetbrains.kotlin.fir.Visibility +import org.jetbrains.kotlin.descriptors.Visibility as OldVisibility +import org.jetbrains.kotlin.descriptors.Visibilities as OldVisibilities + +abstract class Fir2IrVisibilityConverter { + object Default : Fir2IrVisibilityConverter() { + override fun convertPlatformVisibility(visibility: Visibility): OldVisibility { + error("Unknown visibility: $this") + } + } + + fun convertToOldVisibility(visibility: Visibility): OldVisibility { + return when (visibility) { + Visibilities.Private -> OldVisibilities.PRIVATE + Visibilities.PrivateToThis -> OldVisibilities.PRIVATE_TO_THIS + Visibilities.Protected -> OldVisibilities.PROTECTED + Visibilities.Internal -> OldVisibilities.INTERNAL + Visibilities.Public -> OldVisibilities.PUBLIC + Visibilities.Local -> OldVisibilities.LOCAL + Visibilities.InvisibleFake -> OldVisibilities.INVISIBLE_FAKE + Visibilities.Unknown -> OldVisibilities.UNKNOWN + else -> convertPlatformVisibility(visibility) + } + } + + protected abstract fun convertPlatformVisibility(visibility: Visibility): OldVisibility +} diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt index 37af31661da..14255170f9b 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt @@ -12,7 +12,6 @@ import org.jetbrains.kotlin.descriptors.SourceElement import org.jetbrains.kotlin.fir.backend.Fir2IrComponents import org.jetbrains.kotlin.fir.backend.declareThisReceiverParameter import org.jetbrains.kotlin.fir.backend.toIrType -import org.jetbrains.kotlin.fir.backend.toOldVisibility import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope import org.jetbrains.kotlin.fir.symbols.Fir2IrClassSymbol @@ -57,7 +56,7 @@ class Fir2IrLazyClass( get() = fir.name @Suppress("SetterBackingFieldAssignment") - override var visibility: OldVisibility = fir.visibility.toOldVisibility() + override var visibility: OldVisibility = components.visibilityConverter.convertToOldVisibility(fir.visibility) set(_) { error("Mutating Fir2Ir lazy elements is not possible") } diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyConstructor.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyConstructor.kt index 8403aad70f3..9cb618cc6be 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyConstructor.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyConstructor.kt @@ -9,7 +9,6 @@ import org.jetbrains.kotlin.descriptors.ClassConstructorDescriptor import org.jetbrains.kotlin.fir.backend.Fir2IrComponents import org.jetbrains.kotlin.fir.backend.declareThisReceiverParameter import org.jetbrains.kotlin.fir.backend.toIrType -import org.jetbrains.kotlin.fir.backend.toOldVisibility import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.symbols.Fir2IrConstructorSymbol import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI @@ -63,7 +62,7 @@ class Fir2IrLazyConstructor( get() = Name.special("") @Suppress("SetterBackingFieldAssignment") - override var visibility: OldVisibility = fir.visibility.toOldVisibility() + override var visibility: OldVisibility = components.visibilityConverter.convertToOldVisibility(fir.visibility) set(_) { error("Mutating Fir2Ir lazy elements is not possible") } diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyProperty.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyProperty.kt index 68e192d9667..7f9fa7d0430 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyProperty.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyProperty.kt @@ -9,7 +9,6 @@ import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.PropertyDescriptor import org.jetbrains.kotlin.fir.backend.Fir2IrComponents import org.jetbrains.kotlin.fir.backend.toIrConst -import org.jetbrains.kotlin.fir.backend.toOldVisibility import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyGetter import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertySetter @@ -71,7 +70,7 @@ class Fir2IrLazyProperty( get() = fir.name @Suppress("SetterBackingFieldAssignment") - override var visibility: OldVisibility = fir.visibility.toOldVisibility() + override var visibility: OldVisibility = components.visibilityConverter.convertToOldVisibility(fir.visibility) set(_) { error("Mutating Fir2Ir lazy elements is not possible") } @@ -95,7 +94,7 @@ class Fir2IrLazyProperty( with(declarationStorage) { createBackingField( fir, IrDeclarationOrigin.PROPERTY_BACKING_FIELD, descriptor, - fir.fieldVisibility.toOldVisibility(), fir.name, fir.isVal, fir.initializer, + components.visibilityConverter.convertToOldVisibility(fir.visibility), fir.name, fir.isVal, fir.initializer, type ).also { field -> val initializer = fir.initializer @@ -111,7 +110,7 @@ class Fir2IrLazyProperty( with(declarationStorage) { createBackingField( fir, IrDeclarationOrigin.PROPERTY_DELEGATE, descriptor, - fir.fieldVisibility.toOldVisibility(), Name.identifier("${fir.name}\$delegate"), true, fir.delegate + components.visibilityConverter.convertToOldVisibility(fir.visibility), Name.identifier("${fir.name}\$delegate"), true, fir.delegate ) } } diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazySimpleFunction.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazySimpleFunction.kt index 0ddfc44ff40..163c3d6e4d0 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazySimpleFunction.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazySimpleFunction.kt @@ -72,7 +72,7 @@ class Fir2IrLazySimpleFunction( get() = fir.name @Suppress("SetterBackingFieldAssignment") - override var visibility: OldVisibility = fir.visibility.toOldVisibility() + override var visibility: OldVisibility = components.visibilityConverter.convertToOldVisibility(fir.visibility) set(_) { error("Mutating Fir2Ir lazy elements is not possible") } diff --git a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/AbstractFir2IrTextTest.kt b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/AbstractFir2IrTextTest.kt index 730f4b32a6b..f93cf745523 100644 --- a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/AbstractFir2IrTextTest.kt +++ b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/AbstractFir2IrTextTest.kt @@ -16,6 +16,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.fir.backend.Fir2IrConverter import org.jetbrains.kotlin.fir.backend.jvm.FirJvmKotlinMangler +import org.jetbrains.kotlin.fir.backend.jvm.FirJvmVisibilityConverter import org.jetbrains.kotlin.fir.builder.RawFirBuilder import org.jetbrains.kotlin.fir.resolve.firProvider import org.jetbrains.kotlin.fir.resolve.providers.impl.FirProviderImpl @@ -93,6 +94,7 @@ abstract class AbstractFir2IrTextTest : AbstractIrTextTestCase() { JvmGeneratorExtensions(generateFacades = false), FirJvmKotlinMangler(session), IrFactoryImpl, + FirJvmVisibilityConverter ).irModuleFragment } } diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt index 3649d3752ae..dc57436df3f 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt @@ -45,6 +45,7 @@ import org.jetbrains.kotlin.fir.backend.Fir2IrConverter import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendClassResolver import org.jetbrains.kotlin.fir.backend.jvm.FirJvmClassCodegen import org.jetbrains.kotlin.fir.backend.jvm.FirJvmKotlinMangler +import org.jetbrains.kotlin.fir.backend.jvm.FirJvmVisibilityConverter import org.jetbrains.kotlin.fir.builder.RawFirBuilder import org.jetbrains.kotlin.fir.createSession import org.jetbrains.kotlin.fir.resolve.firProvider @@ -150,6 +151,7 @@ object GenerationUtils { JvmGeneratorExtensions(), FirJvmKotlinMangler(session), IrFactoryImpl, + FirJvmVisibilityConverter ) val dummyBindingContext = NoScopeRecordCliBindingTrace().bindingContext