[IR] Reorder parameters in IrFactory#createConstructor
This is to prepare for IrFactory auto-generation (KT-59308).
This commit is contained in:
committed by
Space Team
parent
f486fc942b
commit
0ae95b39c3
+11
-4
@@ -665,10 +665,17 @@ class Fir2IrDeclarationStorage(
|
||||
declareIrConstructor(signature) { symbol ->
|
||||
classifierStorage.preCacheTypeParameters(constructor, symbol)
|
||||
irFactory.createConstructor(
|
||||
startOffset, endOffset, origin, symbol,
|
||||
SpecialNames.INIT, components.visibilityConverter.convertToDescriptorVisibility(visibility),
|
||||
constructor.returnTypeRef.toIrType(),
|
||||
isInline = false, isExternal = false, isPrimary = isPrimary, isExpect = constructor.isExpect
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = origin,
|
||||
name = SpecialNames.INIT,
|
||||
visibility = components.visibilityConverter.convertToDescriptorVisibility(visibility),
|
||||
isInline = false,
|
||||
isExpect = constructor.isExpect,
|
||||
returnType = constructor.returnTypeRef.toIrType(),
|
||||
symbol = symbol,
|
||||
isPrimary = isPrimary,
|
||||
isExternal = false,
|
||||
).apply {
|
||||
metadata = FirMetadataSource.Function(constructor)
|
||||
// Add to cache before generating parameters to prevent an infinite loop when an annotation value parameter is annotated
|
||||
|
||||
@@ -796,8 +796,17 @@ class IrBuiltInsOverFir(
|
||||
): IrConstructorSymbol {
|
||||
val name = SpecialNames.INIT
|
||||
val ctor = irFactory.createConstructor(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, IrConstructorSymbolImpl(), name, visibility, defaultType,
|
||||
isInline = false, isExternal = false, isPrimary = isPrimary, isExpect = false
|
||||
startOffset = UNDEFINED_OFFSET,
|
||||
endOffset = UNDEFINED_OFFSET,
|
||||
origin = origin,
|
||||
name = name,
|
||||
visibility = visibility,
|
||||
isInline = false,
|
||||
isExpect = false,
|
||||
returnType = defaultType,
|
||||
symbol = IrConstructorSymbolImpl(),
|
||||
isPrimary = isPrimary,
|
||||
isExternal = false,
|
||||
)
|
||||
ctor.parent = this
|
||||
ctor.build()
|
||||
|
||||
+12
-6
@@ -334,12 +334,18 @@ private class ScriptsToClassesLowering(val context: JvmBackendContext, val inner
|
||||
returnType = irScriptClass.thisReceiver!!.type as IrSimpleType
|
||||
}) {
|
||||
irScriptClass.factory.createConstructor(
|
||||
startOffset, endOffset, origin,
|
||||
IrConstructorSymbolImpl(),
|
||||
SpecialNames.INIT,
|
||||
visibility, returnType,
|
||||
isInline = isInline, isExternal = isExternal, isPrimary = isPrimary, isExpect = isExpect,
|
||||
containerSource = containerSource
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = origin,
|
||||
name = SpecialNames.INIT,
|
||||
visibility = visibility,
|
||||
isInline = isInline,
|
||||
isExpect = isExpect,
|
||||
returnType = returnType,
|
||||
symbol = IrConstructorSymbolImpl(),
|
||||
isPrimary = isPrimary,
|
||||
isExternal = isExternal,
|
||||
containerSource = containerSource,
|
||||
)
|
||||
}.also { irConstructor ->
|
||||
irConstructor.valueParameters = buildList {
|
||||
|
||||
+11
-3
@@ -192,9 +192,17 @@ class WasmSharedVariablesManager(val context: JsCommonBackendContext, val builtI
|
||||
val symbol = IrConstructorSymbolImpl()
|
||||
|
||||
val declaration = context.irFactory.createConstructor(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, JsLoweredDeclarationOrigin.JS_CLOSURE_BOX_CLASS_DECLARATION, symbol,
|
||||
SpecialNames.INIT, DescriptorVisibilities.PUBLIC, closureBoxClassDeclaration.defaultType,
|
||||
isInline = false, isExternal = false, isPrimary = true, isExpect = false
|
||||
startOffset = UNDEFINED_OFFSET,
|
||||
endOffset = UNDEFINED_OFFSET,
|
||||
origin = JsLoweredDeclarationOrigin.JS_CLOSURE_BOX_CLASS_DECLARATION,
|
||||
name = SpecialNames.INIT,
|
||||
visibility = DescriptorVisibilities.PUBLIC,
|
||||
isInline = false,
|
||||
isExpect = false,
|
||||
returnType = closureBoxClassDeclaration.defaultType,
|
||||
symbol = symbol,
|
||||
isPrimary = true,
|
||||
isExternal = false,
|
||||
)
|
||||
|
||||
declaration.parent = closureBoxClassDeclaration
|
||||
|
||||
+11
-2
@@ -284,8 +284,17 @@ internal class FunctionGenerator(declarationGenerator: DeclarationGenerator) : D
|
||||
return context.symbolTable.declareConstructor(constructorDescriptor) {
|
||||
with(constructorDescriptor) {
|
||||
context.irFactory.createConstructor(
|
||||
startOffset, endOffset, origin, it, context.symbolTable.nameProvider.nameForDeclaration(this),
|
||||
visibility, IrUninitializedType, isInline, isEffectivelyExternal(), isPrimary, isExpect
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = origin,
|
||||
name = context.symbolTable.nameProvider.nameForDeclaration(this),
|
||||
visibility = visibility,
|
||||
isInline = isInline,
|
||||
isExpect = isExpect,
|
||||
returnType = IrUninitializedType,
|
||||
symbol = it,
|
||||
isPrimary = isPrimary,
|
||||
isExternal = isEffectivelyExternal(),
|
||||
)
|
||||
}.apply {
|
||||
metadata = DescriptorMetadataSource.Function(it.descriptor)
|
||||
|
||||
+11
-5
@@ -156,11 +156,17 @@ internal class ScriptGenerator(declarationGenerator: DeclarationGenerator) : Dec
|
||||
returnType = irScript.thisReceiver!!.type as IrSimpleType
|
||||
}) {
|
||||
irScript.factory.createConstructor(
|
||||
startOffset, endOffset, origin,
|
||||
context.symbolTable.referenceConstructor(descriptor.unsubstitutedPrimaryConstructor),
|
||||
SpecialNames.INIT,
|
||||
visibility, returnType,
|
||||
isInline = isInline, isExternal = isExternal, isPrimary = isPrimary, isExpect = isExpect,
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = origin,
|
||||
name = SpecialNames.INIT,
|
||||
visibility = visibility,
|
||||
isInline = isInline,
|
||||
isExpect = isExpect,
|
||||
returnType = returnType,
|
||||
symbol = context.symbolTable.referenceConstructor(descriptor.unsubstitutedPrimaryConstructor),
|
||||
isPrimary = isPrimary,
|
||||
isExternal = isExternal,
|
||||
containerSource = containerSource
|
||||
)
|
||||
}.also { irConstructor ->
|
||||
|
||||
+11
-2
@@ -167,8 +167,17 @@ internal class StandaloneDeclarationGenerator(private val context: GeneratorCont
|
||||
): IrConstructor {
|
||||
val irConstructor = with(descriptor) {
|
||||
irFactory.createConstructor(
|
||||
startOffset, endOffset, origin, symbol, name, visibility, IrUninitializedType, isInline,
|
||||
isEffectivelyExternal(), isPrimary, isExpect
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = origin,
|
||||
name = name,
|
||||
visibility = visibility,
|
||||
isInline = isInline,
|
||||
isExpect = isExpect,
|
||||
returnType = IrUninitializedType,
|
||||
symbol = symbol,
|
||||
isPrimary = isPrimary,
|
||||
isExternal = isEffectivelyExternal(),
|
||||
)
|
||||
}
|
||||
irConstructor.metadata = DescriptorMetadataSource.Function(descriptor)
|
||||
|
||||
+6
-10
@@ -11,14 +11,10 @@ import org.jetbrains.kotlin.ir.IrStatement
|
||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrDelegatingConstructorCallImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrInstanceInitializerCallImpl
|
||||
import org.jetbrains.kotlin.ir.symbols.impl.IrConstructorPublicSymbolImpl
|
||||
import org.jetbrains.kotlin.ir.types.classOrNull
|
||||
import org.jetbrains.kotlin.ir.util.*
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.psi.KtBlockCodeFragment
|
||||
import org.jetbrains.kotlin.psi.psiUtil.pureEndOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.pureStartOffset
|
||||
import org.jetbrains.kotlin.psi2ir.generators.Generator
|
||||
import org.jetbrains.kotlin.psi2ir.generators.GeneratorContext
|
||||
import org.jetbrains.kotlin.psi2ir.generators.createBodyGenerator
|
||||
@@ -66,14 +62,14 @@ open class FragmentDeclarationGenerator(
|
||||
startOffset = UNDEFINED_OFFSET,
|
||||
endOffset = UNDEFINED_OFFSET,
|
||||
origin = IrDeclarationOrigin.DEFINED,
|
||||
symbol = IrConstructorPublicSymbolImpl(context.symbolTable.signaturer.composeSignature(irClass.descriptor)!!),
|
||||
Name.special("<init>"),
|
||||
irClass.visibility,
|
||||
irClass.defaultType,
|
||||
name = Name.special("<init>"),
|
||||
visibility = irClass.visibility,
|
||||
isInline = false,
|
||||
isExternal = false,
|
||||
isExpect = false,
|
||||
returnType = irClass.defaultType,
|
||||
symbol = IrConstructorPublicSymbolImpl(context.symbolTable.signaturer.composeSignature(irClass.descriptor)!!),
|
||||
isPrimary = true,
|
||||
isExpect = false
|
||||
isExternal = false
|
||||
)
|
||||
constructor.parent = irClass
|
||||
constructor.body = context.irFactory.createBlockBody(UNDEFINED_OFFSET, UNDEFINED_OFFSET).apply {
|
||||
|
||||
+12
-6
@@ -173,12 +173,18 @@ internal fun IrFactory.buildFunction(builder: IrFunctionBuilder): IrSimpleFuncti
|
||||
@PublishedApi
|
||||
internal fun IrFactory.buildConstructor(builder: IrFunctionBuilder): IrConstructor = with(builder) {
|
||||
return createConstructor(
|
||||
startOffset, endOffset, origin,
|
||||
IrConstructorSymbolImpl(),
|
||||
SpecialNames.INIT,
|
||||
visibility, returnType,
|
||||
isInline = isInline, isExternal = isExternal, isPrimary = isPrimary, isExpect = isExpect,
|
||||
containerSource = containerSource
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = origin,
|
||||
name = SpecialNames.INIT,
|
||||
visibility = visibility,
|
||||
isInline = isInline,
|
||||
isExpect = isExpect,
|
||||
returnType = returnType,
|
||||
symbol = IrConstructorSymbolImpl(),
|
||||
isPrimary = isPrimary,
|
||||
isExternal = isExternal,
|
||||
containerSource = containerSource,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -50,14 +50,14 @@ interface IrFactory {
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
symbol: IrConstructorSymbol,
|
||||
name: Name,
|
||||
visibility: DescriptorVisibility,
|
||||
returnType: IrType,
|
||||
isInline: Boolean,
|
||||
isExternal: Boolean,
|
||||
isPrimary: Boolean,
|
||||
isExpect: Boolean,
|
||||
returnType: IrType,
|
||||
symbol: IrConstructorSymbol,
|
||||
isPrimary: Boolean,
|
||||
isExternal: Boolean,
|
||||
containerSource: DeserializedContainerSource? = null
|
||||
): IrConstructor
|
||||
|
||||
|
||||
@@ -62,14 +62,14 @@ abstract class AbstractIrFactoryImpl : IrFactory {
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
symbol: IrConstructorSymbol,
|
||||
name: Name,
|
||||
visibility: DescriptorVisibility,
|
||||
returnType: IrType,
|
||||
isInline: Boolean,
|
||||
isExternal: Boolean,
|
||||
isPrimary: Boolean,
|
||||
isExpect: Boolean,
|
||||
returnType: IrType,
|
||||
symbol: IrConstructorSymbol,
|
||||
isPrimary: Boolean,
|
||||
isExternal: Boolean,
|
||||
containerSource: DeserializedContainerSource?,
|
||||
): IrConstructor =
|
||||
IrConstructorImpl(
|
||||
|
||||
+8
-8
@@ -88,28 +88,28 @@ class IrFactoryImplForJsIC(override val stageController: StageController) : Abst
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
symbol: IrConstructorSymbol,
|
||||
name: Name,
|
||||
visibility: DescriptorVisibility,
|
||||
returnType: IrType,
|
||||
isInline: Boolean,
|
||||
isExternal: Boolean,
|
||||
isPrimary: Boolean,
|
||||
isExpect: Boolean,
|
||||
returnType: IrType,
|
||||
symbol: IrConstructorSymbol,
|
||||
isPrimary: Boolean,
|
||||
isExternal: Boolean,
|
||||
containerSource: DeserializedContainerSource?
|
||||
): IrConstructor {
|
||||
return super.createConstructor(
|
||||
startOffset,
|
||||
endOffset,
|
||||
origin,
|
||||
symbol,
|
||||
name,
|
||||
visibility,
|
||||
returnType,
|
||||
isInline,
|
||||
isExternal,
|
||||
isPrimary,
|
||||
isExpect,
|
||||
returnType,
|
||||
symbol,
|
||||
isPrimary,
|
||||
isExternal,
|
||||
containerSource,
|
||||
).register()
|
||||
}
|
||||
|
||||
@@ -49,21 +49,31 @@ class LazyIrFactory(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
symbol: IrConstructorSymbol,
|
||||
name: Name,
|
||||
visibility: DescriptorVisibility,
|
||||
returnType: IrType,
|
||||
isInline: Boolean,
|
||||
isExternal: Boolean,
|
||||
isPrimary: Boolean,
|
||||
isExpect: Boolean,
|
||||
returnType: IrType,
|
||||
symbol: IrConstructorSymbol,
|
||||
isPrimary: Boolean,
|
||||
isExternal: Boolean,
|
||||
containerSource: DeserializedContainerSource?
|
||||
): IrConstructor = if (symbol.isBound)
|
||||
symbol.owner
|
||||
else
|
||||
delegate.createConstructor(
|
||||
startOffset, endOffset, origin, symbol, name, visibility, returnType,
|
||||
isInline, isExternal, isPrimary, isExpect, containerSource
|
||||
startOffset,
|
||||
endOffset,
|
||||
origin,
|
||||
name,
|
||||
visibility,
|
||||
isInline,
|
||||
isExpect,
|
||||
returnType,
|
||||
symbol,
|
||||
isPrimary,
|
||||
isExternal,
|
||||
containerSource,
|
||||
)
|
||||
|
||||
override fun createEnumEntry(
|
||||
|
||||
@@ -198,16 +198,17 @@ open class DeepCopyIrTreeWithSymbols(
|
||||
|
||||
override fun visitConstructor(declaration: IrConstructor): IrConstructor =
|
||||
declaration.factory.createConstructor(
|
||||
declaration.startOffset, declaration.endOffset,
|
||||
mapDeclarationOrigin(declaration.origin),
|
||||
symbolRemapper.getDeclaredConstructor(declaration.symbol),
|
||||
declaration.name,
|
||||
declaration.visibility,
|
||||
declaration.returnType,
|
||||
startOffset = declaration.startOffset,
|
||||
endOffset = declaration.endOffset,
|
||||
origin = mapDeclarationOrigin(declaration.origin),
|
||||
name = declaration.name,
|
||||
visibility = declaration.visibility,
|
||||
isInline = declaration.isInline,
|
||||
isExternal = declaration.isExternal,
|
||||
isPrimary = declaration.isPrimary,
|
||||
isExpect = declaration.isExpect,
|
||||
returnType = declaration.returnType,
|
||||
symbol = symbolRemapper.getDeclaredConstructor(declaration.symbol),
|
||||
isPrimary = declaration.isPrimary,
|
||||
isExternal = declaration.isExternal,
|
||||
containerSource = declaration.containerSource,
|
||||
).apply {
|
||||
transformFunctionChildren(declaration)
|
||||
|
||||
+4
-4
@@ -105,14 +105,14 @@ internal class MissingDeclarationStubGenerator(private val builtIns: IrBuiltIns)
|
||||
startOffset = UNDEFINED_OFFSET,
|
||||
endOffset = UNDEFINED_OFFSET,
|
||||
origin = PartiallyLinkedDeclarationOrigin.MISSING_DECLARATION,
|
||||
symbol = symbol,
|
||||
name = SpecialNames.INIT,
|
||||
visibility = DescriptorVisibilities.DEFAULT_VISIBILITY,
|
||||
returnType = builtIns.nothingType,
|
||||
isInline = false,
|
||||
isExternal = false,
|
||||
isPrimary = false,
|
||||
isExpect = false,
|
||||
returnType = builtIns.nothingType,
|
||||
symbol = symbol,
|
||||
isPrimary = false,
|
||||
isExternal = false,
|
||||
).setCommonParent()
|
||||
}
|
||||
|
||||
|
||||
+11
-9
@@ -668,15 +668,17 @@ class IrDeclarationDeserializer(
|
||||
val nameType = BinaryNameAndType.decode(proto.base.nameType)
|
||||
symbolTable.declareConstructor(idSig, { symbol }) {
|
||||
irFactory.createConstructor(
|
||||
startOffset, endOffset, origin,
|
||||
it,
|
||||
deserializeName(nameType.nameIndex),
|
||||
flags.visibility,
|
||||
IrUninitializedType,
|
||||
flags.isInline,
|
||||
flags.isExternal || isEffectivelyExternal,
|
||||
flags.isPrimary,
|
||||
flags.isExpect
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = origin,
|
||||
name = deserializeName(nameType.nameIndex),
|
||||
visibility = flags.visibility,
|
||||
isInline = flags.isInline,
|
||||
isExpect = flags.isExpect,
|
||||
returnType = IrUninitializedType,
|
||||
symbol = it,
|
||||
isPrimary = flags.isPrimary,
|
||||
isExternal = flags.isExternal || isEffectivelyExternal,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user