diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ClassGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ClassGenerator.kt index 65c2f05f608..f19928ae083 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ClassGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ClassGenerator.kt @@ -75,14 +75,15 @@ class ClassGenerator( } } - fun generateClass(ktClassOrObject: KtPureClassOrObject): IrClass { + fun generateClass(ktClassOrObject: KtPureClassOrObject, visibility_: Visibility? = null): IrClass { val classDescriptor = ktClassOrObject.findClassDescriptor(this.context.bindingContext) val startOffset = ktClassOrObject.getStartOffsetOfClassDeclarationOrNull() ?: ktClassOrObject.pureStartOffset val endOffset = ktClassOrObject.pureEndOffset + val visibility = visibility_ ?: classDescriptor.visibility return context.symbolTable.declareClass( startOffset, endOffset, IrDeclarationOrigin.DEFINED, classDescriptor, - getEffectiveModality(ktClassOrObject, classDescriptor) + getEffectiveModality(ktClassOrObject, classDescriptor), visibility ).buildWithScope { irClass -> declarationGenerator.generateGlobalTypeParametersDeclarations(irClass, classDescriptor.declaredTypeParameters) @@ -492,7 +493,7 @@ class ClassGenerator( } if (ktEnumEntry.hasMemberDeclarations()) { - irEnumEntry.correspondingClass = generateClass(ktEnumEntry) + irEnumEntry.correspondingClass = generateClass(ktEnumEntry, Visibilities.PRIVATE) } } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrClassImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrClassImpl.kt index 57fea2812a6..e60e9922fbb 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrClassImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrClassImpl.kt @@ -59,12 +59,13 @@ class IrClassImpl( endOffset: Int, origin: IrDeclarationOrigin, symbol: IrClassSymbol, - modality: Modality = symbol.descriptor.modality + modality: Modality = symbol.descriptor.modality, + visibility: Visibility = symbol.descriptor.visibility ) : this( startOffset, endOffset, origin, symbol, symbol.descriptor.name, symbol.descriptor.kind, - symbol.descriptor.visibility, + visibility, modality = modality, isCompanion = symbol.descriptor.isCompanionObject, isInner = symbol.descriptor.isInner, diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt index addc403ffe2..460ce7d883c 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt @@ -344,9 +344,9 @@ open class SymbolTable(val mangler: KotlinMangler? = null) : ReferenceSymbolTabl fun declareClass( startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor, - modality: Modality = descriptor.modality, + modality: Modality = descriptor.modality, visibility: Visibility = descriptor.visibility, classFactory: (IrClassSymbol) -> IrClass = { - IrClassImpl(startOffset, endOffset, origin, it, modality).apply { metadata = MetadataSource.Class(it.descriptor) } + IrClassImpl(startOffset, endOffset, origin, it, modality, visibility).apply { metadata = MetadataSource.Class(it.descriptor) } } ): IrClass { return classSymbolTable.declare(