[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 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)
}
}
@@ -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,
@@ -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(