From b1f7b5e9827d4d457cabe1be46e6746196830260 Mon Sep 17 00:00:00 2001 From: Sergej Jaskiewicz Date: Wed, 14 Jun 2023 12:59:25 +0200 Subject: [PATCH] [IR] Reorder parameters in IrFactory#createTypeAlias This is to prepare for IrFactory auto-generation (KT-59308). --- .../kotlin/fir/backend/Fir2IrClassifierStorage.kt | 12 ++++++++---- .../psi2ir/generators/DeclarationGenerator.kt | 10 ++++++++-- .../generators/StandaloneDeclarationGenerator.kt | 9 ++++++++- .../jetbrains/kotlin/ir/declarations/IrFactory.kt | 6 +++--- .../kotlin/ir/declarations/impl/IrFactoryImpl.kt | 6 +++--- .../ir/declarations/impl/IrFactoryImplForJsIC.kt | 12 ++++++------ .../kotlin/ir/declarations/lazy/LazyIrFactory.kt | 8 ++++---- .../kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt | 15 ++++++++------- .../partial/MissingDeclarationStubGenerator.kt | 6 +++--- .../serialization/IrDeclarationDeserializer.kt | 15 ++++++++------- 10 files changed, 59 insertions(+), 40 deletions(-) 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 72d391edf2b..7c7669a0666 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 @@ -311,10 +311,14 @@ class Fir2IrClassifierStorage( declareIrTypeAlias(signature) { symbol -> preCacheTypeParameters(typeAlias, symbol) val irTypeAlias = irFactory.createTypeAlias( - startOffset, endOffset, symbol, - typeAlias.name, components.visibilityConverter.convertToDescriptorVisibility(typeAlias.visibility), - typeAlias.expandedTypeRef.toIrType(), - typeAlias.isActual, IrDeclarationOrigin.DEFINED + startOffset = startOffset, + endOffset = endOffset, + origin = IrDeclarationOrigin.DEFINED, + name = typeAlias.name, + visibility = components.visibilityConverter.convertToDescriptorVisibility(typeAlias.visibility), + symbol = symbol, + isActual = typeAlias.isActual, + expandedType = typeAlias.expandedTypeRef.toIrType(), ).apply { this.parent = parent setTypeParameters(typeAlias) 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 7818692caed..a8b3949486e 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 @@ -111,8 +111,14 @@ class DeclarationGenerator(override val context: GeneratorContext) : Generator { with(getOrFail(BindingContext.TYPE_ALIAS, ktTypeAlias)) { context.symbolTable.declareTypeAlias(this) { symbol -> context.irFactory.createTypeAlias( - ktTypeAlias.startOffsetSkippingComments, ktTypeAlias.endOffset, symbol, - name, visibility, expandedType.toIrType(), isActual, IrDeclarationOrigin.DEFINED + startOffset = ktTypeAlias.startOffsetSkippingComments, + endOffset = ktTypeAlias.endOffset, + origin = IrDeclarationOrigin.DEFINED, + name = name, + visibility = visibility, + symbol = symbol, + isActual = isActual, + expandedType = expandedType.toIrType() ) }.also { generateGlobalTypeParametersDeclarations(it, 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 a452af860e7..6271c089652 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 @@ -120,7 +120,14 @@ internal class StandaloneDeclarationGenerator(private val context: GeneratorCont symbol: IrTypeAliasSymbol ): IrTypeAlias = with(descriptor) { irFactory.createTypeAlias( - startOffset, endOffset, symbol, name, visibility, expandedType.toIrType(), isActual, origin + startOffset = startOffset, + endOffset = endOffset, + origin = origin, + name = name, + visibility = visibility, + symbol = symbol, + isActual = isActual, + expandedType = expandedType.toIrType() ).also { generateGlobalTypeParametersDeclarations(it, declaredTypeParameters) } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFactory.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFactory.kt index e96ee48b2f4..ddcd5f5dca9 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFactory.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFactory.kt @@ -171,12 +171,12 @@ interface IrFactory { fun createTypeAlias( startOffset: Int, endOffset: Int, - symbol: IrTypeAliasSymbol, + origin: IrDeclarationOrigin, name: Name, visibility: DescriptorVisibility, - expandedType: IrType, + symbol: IrTypeAliasSymbol, isActual: Boolean, - origin: IrDeclarationOrigin, + expandedType: IrType, ): IrTypeAlias fun createTypeParameter( diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFactoryImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFactoryImpl.kt index 43e0edb01dd..63002e16550 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFactoryImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFactoryImpl.kt @@ -211,12 +211,12 @@ abstract class AbstractIrFactoryImpl : IrFactory { override fun createTypeAlias( startOffset: Int, endOffset: Int, - symbol: IrTypeAliasSymbol, + origin: IrDeclarationOrigin, name: Name, visibility: DescriptorVisibility, - expandedType: IrType, + symbol: IrTypeAliasSymbol, isActual: Boolean, - origin: IrDeclarationOrigin, + expandedType: IrType, ): IrTypeAlias = IrTypeAliasImpl(startOffset, endOffset, symbol, name, visibility, expandedType, isActual, origin, factory = this) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFactoryImplForJsIC.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFactoryImplForJsIC.kt index 8a31149d14f..2ec6b6f4224 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFactoryImplForJsIC.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFactoryImplForJsIC.kt @@ -323,22 +323,22 @@ class IrFactoryImplForJsIC(override val stageController: StageController) : Abst override fun createTypeAlias( startOffset: Int, endOffset: Int, - symbol: IrTypeAliasSymbol, + origin: IrDeclarationOrigin, name: Name, visibility: DescriptorVisibility, - expandedType: IrType, + symbol: IrTypeAliasSymbol, isActual: Boolean, - origin: IrDeclarationOrigin + expandedType: IrType ): IrTypeAlias { return super.createTypeAlias( startOffset, endOffset, - symbol, + origin, name, visibility, - expandedType, + symbol, isActual, - origin, + expandedType, ).register() } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/LazyIrFactory.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/LazyIrFactory.kt index 05403af6b04..88c2d556560 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/LazyIrFactory.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/LazyIrFactory.kt @@ -170,16 +170,16 @@ class LazyIrFactory( override fun createTypeAlias( startOffset: Int, endOffset: Int, - symbol: IrTypeAliasSymbol, + origin: IrDeclarationOrigin, name: Name, visibility: DescriptorVisibility, - expandedType: IrType, + symbol: IrTypeAliasSymbol, isActual: Boolean, - origin: IrDeclarationOrigin + expandedType: IrType ): IrTypeAlias = if (symbol.isBound) symbol.owner else - delegate.createTypeAlias(startOffset, endOffset, symbol, name, visibility, expandedType, isActual, origin) + delegate.createTypeAlias(startOffset, endOffset, origin, name, visibility, symbol, isActual, expandedType) override fun createTypeParameter( startOffset: Int, diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt index 6f4a28e1294..114099500ac 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt @@ -387,13 +387,14 @@ open class DeepCopyIrTreeWithSymbols( override fun visitTypeAlias(declaration: IrTypeAlias): IrTypeAlias = declaration.factory.createTypeAlias( - declaration.startOffset, declaration.endOffset, - symbolRemapper.getDeclaredTypeAlias(declaration.symbol), - symbolRenamer.getTypeAliasName(declaration.symbol), - declaration.visibility, - declaration.expandedType.remapType(), - declaration.isActual, - mapDeclarationOrigin(declaration.origin) + startOffset = declaration.startOffset, + endOffset = declaration.endOffset, + origin = mapDeclarationOrigin(declaration.origin), + name = symbolRenamer.getTypeAliasName(declaration.symbol), + visibility = declaration.visibility, + symbol = symbolRemapper.getDeclaredTypeAlias(declaration.symbol), + isActual = declaration.isActual, + expandedType = declaration.expandedType.remapType(), ).apply { transformAnnotations(declaration) copyTypeParametersFrom(declaration) diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/MissingDeclarationStubGenerator.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/MissingDeclarationStubGenerator.kt index d39d5f9408e..9336ec318c3 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/MissingDeclarationStubGenerator.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/MissingDeclarationStubGenerator.kt @@ -148,12 +148,12 @@ internal class MissingDeclarationStubGenerator(private val builtIns: IrBuiltIns) return builtIns.irFactory.createTypeAlias( startOffset = UNDEFINED_OFFSET, endOffset = UNDEFINED_OFFSET, - symbol = symbol, + origin = PartiallyLinkedDeclarationOrigin.MISSING_DECLARATION, name = symbol.guessName(), visibility = DescriptorVisibilities.DEFAULT_VISIBILITY, - expandedType = builtIns.nothingType, + symbol = symbol, isActual = true, - origin = PartiallyLinkedDeclarationOrigin.MISSING_DECLARATION, + expandedType = builtIns.nothingType, ).setCommonParent() } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt index 1ee3aa74979..12c8bc4eecb 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt @@ -433,13 +433,14 @@ class IrDeclarationDeserializer( val flags = TypeAliasFlags.decode(fcode) val nameType = BinaryNameAndType.decode(proto.nameType) irFactory.createTypeAlias( - startOffset, endOffset, - it, - deserializeName(nameType.nameIndex), - flags.visibility, - deserializeIrType(nameType.typeIndex), - flags.isActual, - origin + startOffset = startOffset, + endOffset = endOffset, + origin = origin, + name = deserializeName(nameType.nameIndex), + visibility = flags.visibility, + symbol = it, + isActual = flags.isActual, + expandedType = deserializeIrType(nameType.typeIndex), ) }.usingParent { typeParameters = deserializeTypeParameters(proto.typeParameterList, true)