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