[IR] Reorder parameters in IrFactory#createTypeAlias

This is to prepare for IrFactory auto-generation (KT-59308).
This commit is contained in:
Sergej Jaskiewicz
2023-06-14 12:59:25 +02:00
committed by Space Team
parent 26a479918b
commit b1f7b5e982
10 changed files with 59 additions and 40 deletions
@@ -311,10 +311,14 @@ class Fir2IrClassifierStorage(
declareIrTypeAlias(signature) { symbol -> declareIrTypeAlias(signature) { symbol ->
preCacheTypeParameters(typeAlias, symbol) preCacheTypeParameters(typeAlias, symbol)
val irTypeAlias = irFactory.createTypeAlias( val irTypeAlias = irFactory.createTypeAlias(
startOffset, endOffset, symbol, startOffset = startOffset,
typeAlias.name, components.visibilityConverter.convertToDescriptorVisibility(typeAlias.visibility), endOffset = endOffset,
typeAlias.expandedTypeRef.toIrType(), origin = IrDeclarationOrigin.DEFINED,
typeAlias.isActual, IrDeclarationOrigin.DEFINED name = typeAlias.name,
visibility = components.visibilityConverter.convertToDescriptorVisibility(typeAlias.visibility),
symbol = symbol,
isActual = typeAlias.isActual,
expandedType = typeAlias.expandedTypeRef.toIrType(),
).apply { ).apply {
this.parent = parent this.parent = parent
setTypeParameters(typeAlias) setTypeParameters(typeAlias)
@@ -111,8 +111,14 @@ class DeclarationGenerator(override val context: GeneratorContext) : Generator {
with(getOrFail(BindingContext.TYPE_ALIAS, ktTypeAlias)) { with(getOrFail(BindingContext.TYPE_ALIAS, ktTypeAlias)) {
context.symbolTable.declareTypeAlias(this) { symbol -> context.symbolTable.declareTypeAlias(this) { symbol ->
context.irFactory.createTypeAlias( context.irFactory.createTypeAlias(
ktTypeAlias.startOffsetSkippingComments, ktTypeAlias.endOffset, symbol, startOffset = ktTypeAlias.startOffsetSkippingComments,
name, visibility, expandedType.toIrType(), isActual, IrDeclarationOrigin.DEFINED endOffset = ktTypeAlias.endOffset,
origin = IrDeclarationOrigin.DEFINED,
name = name,
visibility = visibility,
symbol = symbol,
isActual = isActual,
expandedType = expandedType.toIrType()
) )
}.also { }.also {
generateGlobalTypeParametersDeclarations(it, declaredTypeParameters) generateGlobalTypeParametersDeclarations(it, declaredTypeParameters)
@@ -120,7 +120,14 @@ internal class StandaloneDeclarationGenerator(private val context: GeneratorCont
symbol: IrTypeAliasSymbol symbol: IrTypeAliasSymbol
): IrTypeAlias = with(descriptor) { ): IrTypeAlias = with(descriptor) {
irFactory.createTypeAlias( 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 { ).also {
generateGlobalTypeParametersDeclarations(it, declaredTypeParameters) generateGlobalTypeParametersDeclarations(it, declaredTypeParameters)
} }
@@ -171,12 +171,12 @@ interface IrFactory {
fun createTypeAlias( fun createTypeAlias(
startOffset: Int, startOffset: Int,
endOffset: Int, endOffset: Int,
symbol: IrTypeAliasSymbol, origin: IrDeclarationOrigin,
name: Name, name: Name,
visibility: DescriptorVisibility, visibility: DescriptorVisibility,
expandedType: IrType, symbol: IrTypeAliasSymbol,
isActual: Boolean, isActual: Boolean,
origin: IrDeclarationOrigin, expandedType: IrType,
): IrTypeAlias ): IrTypeAlias
fun createTypeParameter( fun createTypeParameter(
@@ -211,12 +211,12 @@ abstract class AbstractIrFactoryImpl : IrFactory {
override fun createTypeAlias( override fun createTypeAlias(
startOffset: Int, startOffset: Int,
endOffset: Int, endOffset: Int,
symbol: IrTypeAliasSymbol, origin: IrDeclarationOrigin,
name: Name, name: Name,
visibility: DescriptorVisibility, visibility: DescriptorVisibility,
expandedType: IrType, symbol: IrTypeAliasSymbol,
isActual: Boolean, isActual: Boolean,
origin: IrDeclarationOrigin, expandedType: IrType,
): IrTypeAlias = ): IrTypeAlias =
IrTypeAliasImpl(startOffset, endOffset, symbol, name, visibility, expandedType, isActual, origin, factory = this) IrTypeAliasImpl(startOffset, endOffset, symbol, name, visibility, expandedType, isActual, origin, factory = this)
@@ -323,22 +323,22 @@ class IrFactoryImplForJsIC(override val stageController: StageController) : Abst
override fun createTypeAlias( override fun createTypeAlias(
startOffset: Int, startOffset: Int,
endOffset: Int, endOffset: Int,
symbol: IrTypeAliasSymbol, origin: IrDeclarationOrigin,
name: Name, name: Name,
visibility: DescriptorVisibility, visibility: DescriptorVisibility,
expandedType: IrType, symbol: IrTypeAliasSymbol,
isActual: Boolean, isActual: Boolean,
origin: IrDeclarationOrigin expandedType: IrType
): IrTypeAlias { ): IrTypeAlias {
return super.createTypeAlias( return super.createTypeAlias(
startOffset, startOffset,
endOffset, endOffset,
symbol, origin,
name, name,
visibility, visibility,
expandedType, symbol,
isActual, isActual,
origin, expandedType,
).register() ).register()
} }
@@ -170,16 +170,16 @@ class LazyIrFactory(
override fun createTypeAlias( override fun createTypeAlias(
startOffset: Int, startOffset: Int,
endOffset: Int, endOffset: Int,
symbol: IrTypeAliasSymbol, origin: IrDeclarationOrigin,
name: Name, name: Name,
visibility: DescriptorVisibility, visibility: DescriptorVisibility,
expandedType: IrType, symbol: IrTypeAliasSymbol,
isActual: Boolean, isActual: Boolean,
origin: IrDeclarationOrigin expandedType: IrType
): IrTypeAlias = if (symbol.isBound) ): IrTypeAlias = if (symbol.isBound)
symbol.owner symbol.owner
else else
delegate.createTypeAlias(startOffset, endOffset, symbol, name, visibility, expandedType, isActual, origin) delegate.createTypeAlias(startOffset, endOffset, origin, name, visibility, symbol, isActual, expandedType)
override fun createTypeParameter( override fun createTypeParameter(
startOffset: Int, startOffset: Int,
@@ -387,13 +387,14 @@ open class DeepCopyIrTreeWithSymbols(
override fun visitTypeAlias(declaration: IrTypeAlias): IrTypeAlias = override fun visitTypeAlias(declaration: IrTypeAlias): IrTypeAlias =
declaration.factory.createTypeAlias( declaration.factory.createTypeAlias(
declaration.startOffset, declaration.endOffset, startOffset = declaration.startOffset,
symbolRemapper.getDeclaredTypeAlias(declaration.symbol), endOffset = declaration.endOffset,
symbolRenamer.getTypeAliasName(declaration.symbol), origin = mapDeclarationOrigin(declaration.origin),
declaration.visibility, name = symbolRenamer.getTypeAliasName(declaration.symbol),
declaration.expandedType.remapType(), visibility = declaration.visibility,
declaration.isActual, symbol = symbolRemapper.getDeclaredTypeAlias(declaration.symbol),
mapDeclarationOrigin(declaration.origin) isActual = declaration.isActual,
expandedType = declaration.expandedType.remapType(),
).apply { ).apply {
transformAnnotations(declaration) transformAnnotations(declaration)
copyTypeParametersFrom(declaration) copyTypeParametersFrom(declaration)
@@ -148,12 +148,12 @@ internal class MissingDeclarationStubGenerator(private val builtIns: IrBuiltIns)
return builtIns.irFactory.createTypeAlias( return builtIns.irFactory.createTypeAlias(
startOffset = UNDEFINED_OFFSET, startOffset = UNDEFINED_OFFSET,
endOffset = UNDEFINED_OFFSET, endOffset = UNDEFINED_OFFSET,
symbol = symbol, origin = PartiallyLinkedDeclarationOrigin.MISSING_DECLARATION,
name = symbol.guessName(), name = symbol.guessName(),
visibility = DescriptorVisibilities.DEFAULT_VISIBILITY, visibility = DescriptorVisibilities.DEFAULT_VISIBILITY,
expandedType = builtIns.nothingType, symbol = symbol,
isActual = true, isActual = true,
origin = PartiallyLinkedDeclarationOrigin.MISSING_DECLARATION, expandedType = builtIns.nothingType,
).setCommonParent() ).setCommonParent()
} }
@@ -433,13 +433,14 @@ class IrDeclarationDeserializer(
val flags = TypeAliasFlags.decode(fcode) val flags = TypeAliasFlags.decode(fcode)
val nameType = BinaryNameAndType.decode(proto.nameType) val nameType = BinaryNameAndType.decode(proto.nameType)
irFactory.createTypeAlias( irFactory.createTypeAlias(
startOffset, endOffset, startOffset = startOffset,
it, endOffset = endOffset,
deserializeName(nameType.nameIndex), origin = origin,
flags.visibility, name = deserializeName(nameType.nameIndex),
deserializeIrType(nameType.typeIndex), visibility = flags.visibility,
flags.isActual, symbol = it,
origin isActual = flags.isActual,
expandedType = deserializeIrType(nameType.typeIndex),
) )
}.usingParent { }.usingParent {
typeParameters = deserializeTypeParameters(proto.typeParameterList, true) typeParameters = deserializeTypeParameters(proto.typeParameterList, true)