From 12f596c6204e95c4c2070fc2316c166f9cf58d99 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 19 May 2020 15:52:58 +0300 Subject: [PATCH] [IR] Unbind construction methods of IR file/enum entry/type alias from symbol.descriptor --- .../psi2ir/generators/DeclarationGenerator.kt | 3 ++- .../generators/StandaloneDeclarationGenerator.kt | 14 +++++++++++--- .../kotlin/ir/declarations/impl/IrEnumEntryImpl.kt | 8 -------- .../kotlin/ir/declarations/impl/IrFileImpl.kt | 4 ++++ .../kotlin/ir/declarations/impl/IrTypeAliasImpl.kt | 9 +++++---- 5 files changed, 22 insertions(+), 16 deletions(-) diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/DeclarationGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/DeclarationGenerator.kt index 9958285952a..428e60f079e 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/DeclarationGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/DeclarationGenerator.kt @@ -86,7 +86,8 @@ class DeclarationGenerator(override val context: GeneratorContext) : Generator { ktTypeAlias.startOffsetSkippingComments, ktTypeAlias.endOffset, symbol, typeAliasDescriptor.expandedType.toIrType(), - IrDeclarationOrigin.DEFINED + IrDeclarationOrigin.DEFINED, + typeAliasDescriptor ) } generateGlobalTypeParametersDeclarations(irTypeAlias, typeAliasDescriptor.declaredTypeParameters) diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/StandaloneDeclarationGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/StandaloneDeclarationGenerator.kt index afcb08f00ee..4c0544f2e28 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/StandaloneDeclarationGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/StandaloneDeclarationGenerator.kt @@ -99,13 +99,21 @@ class StandaloneDeclarationGenerator(private val context: GeneratorContext) { fun generateEnumEntry(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor, symbol: IrEnumEntrySymbol): IrEnumEntry { // TODO: corresponging class? - val irEntry = IrEnumEntryImpl(startOffset, endOffset, origin, symbol) + val irEntry = IrEnumEntryImpl(startOffset, endOffset, origin, symbol, descriptor.name) return irEntry } - fun generateTypeAlias(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: TypeAliasDescriptor, symbol: IrTypeAliasSymbol): IrTypeAlias { - val irAlias = IrTypeAliasImpl.fromSymbolDescriptor(startOffset, endOffset, symbol, descriptor.expandedType.toIrType(), origin) + fun generateTypeAlias( + startOffset: Int, + endOffset: Int, + origin: IrDeclarationOrigin, + descriptor: TypeAliasDescriptor, + symbol: IrTypeAliasSymbol + ): IrTypeAlias { + val irAlias = IrTypeAliasImpl.fromSymbolDescriptor( + startOffset, endOffset, symbol, descriptor.expandedType.toIrType(), origin, descriptor + ) generateGlobalTypeParametersDeclarations(irAlias, descriptor.declaredTypeParameters) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrEnumEntryImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrEnumEntryImpl.kt index 34f88b665e3..efc8dd514fb 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrEnumEntryImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrEnumEntryImpl.kt @@ -38,14 +38,6 @@ class IrEnumEntryImpl( IrEnumEntry, EnumEntryCarrier { - constructor( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, - symbol: IrEnumEntrySymbol - ) : - this(startOffset, endOffset, origin, symbol, symbol.descriptor.name) - init { symbol.bind(this) } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFileImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFileImpl.kt index e7d386e11c5..b98fdd4a3ff 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFileImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFileImpl.kt @@ -35,6 +35,10 @@ class IrFileImpl( IrElementBase(0, fileEntry.maxOffset), IrFile { + @Deprecated( + "This constructor is left for native compilation purpose only. It uses symbol.descriptor attributes " + + "Please provide FqName explicitly" + ) constructor( fileEntry: SourceManager.FileEntry, symbol: IrFileSymbol diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrTypeAliasImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrTypeAliasImpl.kt index 2f02c3dc8a1..4dd05634e93 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrTypeAliasImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrTypeAliasImpl.kt @@ -66,15 +66,16 @@ class IrTypeAliasImpl( endOffset: Int, symbol: IrTypeAliasSymbol, expandedType: IrType, - origin: IrDeclarationOrigin + origin: IrDeclarationOrigin, + descriptor: TypeAliasDescriptor ) = IrTypeAliasImpl( startOffset, endOffset, symbol, - symbol.descriptor.name, - symbol.descriptor.visibility, + descriptor.name, + descriptor.visibility, expandedType, - symbol.descriptor.isActual, + descriptor.isActual, origin ) }