[IR] Reorder parameters in IrFactory#createFunction
This is to prepare for IrFactory auto-generation (KT-59308).
This commit is contained in:
committed by
teamcity
parent
650b00e1b2
commit
7b77ec9930
+16
-6
@@ -679,12 +679,22 @@ class Fir2IrClassifierStorage(
|
||||
}
|
||||
|
||||
private val temporaryParent by lazy {
|
||||
irFactory.createFunction(
|
||||
startOffset = UNDEFINED_OFFSET, endOffset = UNDEFINED_OFFSET,
|
||||
IrDeclarationOrigin.DEFINED, IrSimpleFunctionSymbolImpl(),
|
||||
Name.special("<stub>"), DescriptorVisibilities.PRIVATE, Modality.FINAL, irBuiltIns.unitType,
|
||||
isInline = false, isExternal = false, isTailrec = false,
|
||||
isSuspend = false, isOperator = false, isInfix = false, isExpect = false
|
||||
irFactory.createSimpleFunction(
|
||||
startOffset = UNDEFINED_OFFSET,
|
||||
endOffset = UNDEFINED_OFFSET,
|
||||
origin = IrDeclarationOrigin.DEFINED,
|
||||
name = Name.special("<stub>"),
|
||||
visibility = DescriptorVisibilities.PRIVATE,
|
||||
isInline = false,
|
||||
isExpect = false,
|
||||
returnType = irBuiltIns.unitType,
|
||||
modality = Modality.FINAL,
|
||||
symbol = IrSimpleFunctionSymbolImpl(),
|
||||
isTailrec = false,
|
||||
isSuspend = false,
|
||||
isOperator = false,
|
||||
isInfix = false,
|
||||
isExternal = false,
|
||||
).apply {
|
||||
parent = IrExternalPackageFragmentImpl(IrExternalPackageFragmentSymbolImpl(), FqName.ROOT)
|
||||
}
|
||||
|
||||
+25
-18
@@ -568,21 +568,22 @@ class Fir2IrDeclarationStorage(
|
||||
val created = function.convertWithOffsets { startOffset, endOffset ->
|
||||
val result = declareIrSimpleFunction(signature) { symbol ->
|
||||
classifierStorage.preCacheTypeParameters(function, symbol)
|
||||
irFactory.createFunction(
|
||||
if (updatedOrigin == IrDeclarationOrigin.DELEGATED_MEMBER) SYNTHETIC_OFFSET else startOffset,
|
||||
if (updatedOrigin == IrDeclarationOrigin.DELEGATED_MEMBER) SYNTHETIC_OFFSET else endOffset,
|
||||
updatedOrigin, symbol,
|
||||
name, components.visibilityConverter.convertToDescriptorVisibility(visibility),
|
||||
simpleFunction?.modality ?: Modality.FINAL,
|
||||
function.returnTypeRef.toIrType(),
|
||||
irFactory.createSimpleFunction(
|
||||
startOffset = if (updatedOrigin == IrDeclarationOrigin.DELEGATED_MEMBER) SYNTHETIC_OFFSET else startOffset,
|
||||
endOffset = if (updatedOrigin == IrDeclarationOrigin.DELEGATED_MEMBER) SYNTHETIC_OFFSET else endOffset,
|
||||
origin = updatedOrigin,
|
||||
name = name,
|
||||
visibility = components.visibilityConverter.convertToDescriptorVisibility(visibility),
|
||||
isInline = simpleFunction?.isInline == true,
|
||||
isExternal = simpleFunction?.isExternal == true,
|
||||
isExpect = simpleFunction?.isExpect == true,
|
||||
returnType = function.returnTypeRef.toIrType(),
|
||||
modality = simpleFunction?.modality ?: Modality.FINAL,
|
||||
symbol = symbol,
|
||||
isTailrec = simpleFunction?.isTailRec == true,
|
||||
isSuspend = isSuspend,
|
||||
isExpect = simpleFunction?.isExpect == true,
|
||||
isFakeOverride = updatedOrigin == IrDeclarationOrigin.FAKE_OVERRIDE,
|
||||
isOperator = simpleFunction?.isOperator == true,
|
||||
isInfix = simpleFunction?.isInfix == true,
|
||||
isExternal = simpleFunction?.isExternal == true,
|
||||
containerSource = simpleFunction?.containerSource,
|
||||
).apply {
|
||||
metadata = FirMetadataSource.Function(function)
|
||||
@@ -738,16 +739,22 @@ class Fir2IrDeclarationStorage(
|
||||
val visibility = propertyAccessor?.visibility?.let {
|
||||
components.visibilityConverter.convertToDescriptorVisibility(it)
|
||||
}
|
||||
irFactory.createFunction(
|
||||
startOffset, endOffset, origin, symbol,
|
||||
Name.special("<$prefix-${correspondingProperty.name}>"),
|
||||
visibility ?: (correspondingProperty as IrDeclarationWithVisibility).visibility,
|
||||
(correspondingProperty as? IrOverridableMember)?.modality ?: Modality.FINAL, accessorReturnType,
|
||||
irFactory.createSimpleFunction(
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = origin,
|
||||
name = Name.special("<$prefix-${correspondingProperty.name}>"),
|
||||
visibility = visibility ?: (correspondingProperty as IrDeclarationWithVisibility).visibility,
|
||||
isInline = propertyAccessor?.isInline == true,
|
||||
isExternal = propertyAccessor?.isExternal == true,
|
||||
isTailrec = false, isSuspend = false, isOperator = false,
|
||||
isExpect = false,
|
||||
returnType = accessorReturnType,
|
||||
modality = (correspondingProperty as? IrOverridableMember)?.modality ?: Modality.FINAL,
|
||||
symbol = symbol,
|
||||
isTailrec = false,
|
||||
isSuspend = false,
|
||||
isOperator = false,
|
||||
isInfix = false,
|
||||
isExpect = false, isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE,
|
||||
isExternal = propertyAccessor?.isExternal == true,
|
||||
containerSource = containerSource,
|
||||
).apply {
|
||||
correspondingPropertySymbol = (correspondingProperty as? IrProperty)?.symbol
|
||||
|
||||
@@ -943,12 +943,24 @@ class IrBuiltInsOverFir(
|
||||
this.isOperator = isOperator
|
||||
this.isInfix = isInfix
|
||||
build()
|
||||
irFactory.createFunction(
|
||||
startOffset, endOffset, this.origin,
|
||||
symbol,
|
||||
this.name, visibility, this.modality, this.returnType,
|
||||
isInline, isExternal, isTailrec, isSuspend, this.isOperator, this.isInfix, isExpect, isFakeOverride,
|
||||
containerSource,
|
||||
irFactory.createSimpleFunction(
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = this.origin,
|
||||
name = this.name,
|
||||
visibility = visibility,
|
||||
isInline = isInline,
|
||||
isExpect = isExpect,
|
||||
returnType = this.returnType,
|
||||
modality = this.modality,
|
||||
symbol = symbol,
|
||||
isTailrec = isTailrec,
|
||||
isSuspend = isSuspend,
|
||||
isOperator = this.isOperator,
|
||||
isInfix = this.isInfix,
|
||||
isExternal = isExternal,
|
||||
containerSource = containerSource,
|
||||
isFakeOverride = isFakeOverride,
|
||||
)
|
||||
}.also { fn ->
|
||||
valueParameterTypes.forEachIndexed { index, (pName, irType) ->
|
||||
|
||||
+33
-33
@@ -204,22 +204,22 @@ internal class AdapterGenerator(
|
||||
val returnType = type.arguments.last().typeOrNull!!
|
||||
val parameterTypes = type.arguments.dropLast(1).map { it.typeOrNull!! }
|
||||
val firMemberAdaptee = firAdaptee as FirMemberDeclaration
|
||||
return irFactory.createFunction(
|
||||
startOffset, endOffset,
|
||||
IrDeclarationOrigin.ADAPTER_FOR_CALLABLE_REFERENCE,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
adaptee.name,
|
||||
DescriptorVisibilities.LOCAL,
|
||||
Modality.FINAL,
|
||||
returnType,
|
||||
return irFactory.createSimpleFunction(
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = IrDeclarationOrigin.ADAPTER_FOR_CALLABLE_REFERENCE,
|
||||
name = adaptee.name,
|
||||
visibility = DescriptorVisibilities.LOCAL,
|
||||
isInline = firMemberAdaptee.isInline,
|
||||
isExternal = false,
|
||||
isExpect = false,
|
||||
returnType = returnType,
|
||||
modality = Modality.FINAL,
|
||||
symbol = IrSimpleFunctionSymbolImpl(),
|
||||
isTailrec = false,
|
||||
isSuspend = firMemberAdaptee.isSuspend || type.isSuspendFunction(),
|
||||
isOperator = firMemberAdaptee.isOperator,
|
||||
isInfix = firMemberAdaptee.isInfix,
|
||||
isExpect = false,
|
||||
isFakeOverride = false
|
||||
isExternal = false,
|
||||
).also { irAdapterFunction ->
|
||||
symbolTable.enterScope(irAdapterFunction)
|
||||
irAdapterFunction.dispatchReceiverParameter = null
|
||||
@@ -649,23 +649,23 @@ internal class AdapterGenerator(
|
||||
): IrSimpleFunction {
|
||||
val returnType = type.arguments.last().typeOrNull!!
|
||||
val parameterTypes = type.arguments.dropLast(1).map { it.typeOrNull!! }
|
||||
return irFactory.createFunction(
|
||||
startOffset, endOffset,
|
||||
IrDeclarationOrigin.ADAPTER_FOR_SUSPEND_CONVERSION,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
return irFactory.createSimpleFunction(
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = IrDeclarationOrigin.ADAPTER_FOR_SUSPEND_CONVERSION,
|
||||
// TODO: need a better way to avoid name clash
|
||||
Name.identifier("suspendConversion"),
|
||||
DescriptorVisibilities.LOCAL,
|
||||
Modality.FINAL,
|
||||
returnType,
|
||||
name = Name.identifier("suspendConversion"),
|
||||
visibility = DescriptorVisibilities.LOCAL,
|
||||
isInline = false,
|
||||
isExternal = false,
|
||||
isExpect = false,
|
||||
returnType = returnType,
|
||||
modality = Modality.FINAL,
|
||||
symbol = IrSimpleFunctionSymbolImpl(),
|
||||
isTailrec = false,
|
||||
isSuspend = true,
|
||||
isOperator = false,
|
||||
isInfix = false,
|
||||
isExpect = false,
|
||||
isFakeOverride = false
|
||||
isExternal = false,
|
||||
).also { irAdapterFunction ->
|
||||
symbolTable.enterScope(irAdapterFunction)
|
||||
irAdapterFunction.extensionReceiverParameter = createAdapterParameter(
|
||||
@@ -773,22 +773,22 @@ internal class AdapterGenerator(
|
||||
val functionParameter = callableSymbol.valueParameterSymbols.singleOrNull()
|
||||
?: throw AssertionError("Single value parameter expected: ${callableSymbol.valueParameterSymbols}")
|
||||
|
||||
return irFactory.createFunction(
|
||||
startOffset, endOffset,
|
||||
IrDeclarationOrigin.ADAPTER_FOR_FUN_INTERFACE_CONSTRUCTOR,
|
||||
IrSimpleFunctionSymbolImpl(),
|
||||
callableSymbol.name,
|
||||
DescriptorVisibilities.LOCAL,
|
||||
Modality.FINAL,
|
||||
irSamType,
|
||||
return irFactory.createSimpleFunction(
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = IrDeclarationOrigin.ADAPTER_FOR_FUN_INTERFACE_CONSTRUCTOR,
|
||||
name = callableSymbol.name,
|
||||
visibility = DescriptorVisibilities.LOCAL,
|
||||
isInline = false,
|
||||
isExternal = false,
|
||||
isExpect = false,
|
||||
returnType = irSamType,
|
||||
modality = Modality.FINAL,
|
||||
symbol = IrSimpleFunctionSymbolImpl(),
|
||||
isTailrec = false,
|
||||
isSuspend = false,
|
||||
isOperator = false,
|
||||
isInfix = false,
|
||||
isExpect = false,
|
||||
isFakeOverride = false
|
||||
isExternal = false,
|
||||
).also { irAdapterFunction ->
|
||||
symbolTable.enterScope(irAdapterFunction)
|
||||
irAdapterFunction.dispatchReceiverParameter = null
|
||||
|
||||
+17
-4
@@ -237,10 +237,23 @@ class DataClassMembersGenerator(val components: Fir2IrComponents) : Fir2IrCompon
|
||||
): IrFunction {
|
||||
val signature = if (lookupTag.classId.isLocal) null else components.signatureComposer.composeSignature(syntheticCounterpart)
|
||||
return components.declarationStorage.declareIrSimpleFunction(signature) { symbol ->
|
||||
components.irFactory.createFunction(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, symbol, name, DescriptorVisibilities.PUBLIC, Modality.OPEN, returnType,
|
||||
isInline = false, isExternal = false, isTailrec = false, isSuspend = false, isOperator = isOperator,
|
||||
isInfix = false, isExpect = false, isFakeOverride = false,
|
||||
components.irFactory.createSimpleFunction(
|
||||
startOffset = UNDEFINED_OFFSET,
|
||||
endOffset = UNDEFINED_OFFSET,
|
||||
origin = origin,
|
||||
name = name,
|
||||
visibility = DescriptorVisibilities.PUBLIC,
|
||||
isInline = false,
|
||||
isExpect = false,
|
||||
returnType = returnType,
|
||||
modality = Modality.OPEN,
|
||||
symbol = symbol,
|
||||
isTailrec = false,
|
||||
isSuspend = false,
|
||||
isOperator = isOperator,
|
||||
isInfix = false,
|
||||
isExternal = false,
|
||||
isFakeOverride = false,
|
||||
).apply {
|
||||
if (otherParameterNeeded) {
|
||||
val irValueParameter = createSyntheticIrParameter(
|
||||
|
||||
Reference in New Issue
Block a user