[Psi2Ir] Make IrEnumEntry corresponding class always privite

This commit is contained in:
Roman Artemev
2020-01-27 15:27:54 +03:00
committed by romanart
parent d51b14fe3c
commit 45f036548b
3 changed files with 9 additions and 7 deletions
@@ -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 classDescriptor = ktClassOrObject.findClassDescriptor(this.context.bindingContext)
val startOffset = ktClassOrObject.getStartOffsetOfClassDeclarationOrNull() ?: ktClassOrObject.pureStartOffset val startOffset = ktClassOrObject.getStartOffsetOfClassDeclarationOrNull() ?: ktClassOrObject.pureStartOffset
val endOffset = ktClassOrObject.pureEndOffset val endOffset = ktClassOrObject.pureEndOffset
val visibility = visibility_ ?: classDescriptor.visibility
return context.symbolTable.declareClass( return context.symbolTable.declareClass(
startOffset, endOffset, IrDeclarationOrigin.DEFINED, classDescriptor, startOffset, endOffset, IrDeclarationOrigin.DEFINED, classDescriptor,
getEffectiveModality(ktClassOrObject, classDescriptor) getEffectiveModality(ktClassOrObject, classDescriptor), visibility
).buildWithScope { irClass -> ).buildWithScope { irClass ->
declarationGenerator.generateGlobalTypeParametersDeclarations(irClass, classDescriptor.declaredTypeParameters) declarationGenerator.generateGlobalTypeParametersDeclarations(irClass, classDescriptor.declaredTypeParameters)
@@ -492,7 +493,7 @@ class ClassGenerator(
} }
if (ktEnumEntry.hasMemberDeclarations()) { if (ktEnumEntry.hasMemberDeclarations()) {
irEnumEntry.correspondingClass = generateClass(ktEnumEntry) irEnumEntry.correspondingClass = generateClass(ktEnumEntry, Visibilities.PRIVATE)
} }
} }
@@ -59,12 +59,13 @@ class IrClassImpl(
endOffset: Int, endOffset: Int,
origin: IrDeclarationOrigin, origin: IrDeclarationOrigin,
symbol: IrClassSymbol, symbol: IrClassSymbol,
modality: Modality = symbol.descriptor.modality modality: Modality = symbol.descriptor.modality,
visibility: Visibility = symbol.descriptor.visibility
) : ) :
this( this(
startOffset, endOffset, origin, symbol, startOffset, endOffset, origin, symbol,
symbol.descriptor.name, symbol.descriptor.kind, symbol.descriptor.name, symbol.descriptor.kind,
symbol.descriptor.visibility, visibility,
modality = modality, modality = modality,
isCompanion = symbol.descriptor.isCompanionObject, isCompanion = symbol.descriptor.isCompanionObject,
isInner = symbol.descriptor.isInner, isInner = symbol.descriptor.isInner,
@@ -344,9 +344,9 @@ open class SymbolTable(val mangler: KotlinMangler? = null) : ReferenceSymbolTabl
fun declareClass( fun declareClass(
startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor, startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor,
modality: Modality = descriptor.modality, modality: Modality = descriptor.modality, visibility: Visibility = descriptor.visibility,
classFactory: (IrClassSymbol) -> IrClass = { 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 { ): IrClass {
return classSymbolTable.declare( return classSymbolTable.declare(