[IR] Reorder parameters in IrFactory#createValueParameter
This is to prepare for IrFactory auto-generation (KT-59308).
This commit is contained in:
committed by
Space Team
parent
2cc588d6d8
commit
9fcdc10019
@@ -586,10 +586,18 @@ internal fun IrDeclarationParent.declareThisReceiverParameter(
|
||||
explicitReceiver: FirReceiverParameter? = null,
|
||||
): IrValueParameter {
|
||||
return symbolTable.irFactory.createValueParameter(
|
||||
startOffset, endOffset, thisOrigin, IrValueParameterSymbolImpl(),
|
||||
name, UNDEFINED_PARAMETER_INDEX, thisType,
|
||||
varargElementType = null, isCrossinline = false, isNoinline = false,
|
||||
isHidden = false, isAssignable = false
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = thisOrigin,
|
||||
name = name,
|
||||
type = thisType,
|
||||
isAssignable = false,
|
||||
symbol = IrValueParameterSymbolImpl(),
|
||||
index = UNDEFINED_PARAMETER_INDEX,
|
||||
varargElementType = null,
|
||||
isCrossinline = false,
|
||||
isNoinline = false,
|
||||
isHidden = false,
|
||||
).apply {
|
||||
this.parent = this@declareThisReceiverParameter
|
||||
explicitReceiver?.let { annotationGenerator.generate(this, it) }
|
||||
|
||||
+37
-15
@@ -331,11 +331,18 @@ class Fir2IrDeclarationStorage(
|
||||
isNoinline: Boolean = false,
|
||||
): IrValueParameter {
|
||||
return irFactory.createValueParameter(
|
||||
startOffset, endOffset, IrDeclarationOrigin.DEFINED, IrValueParameterSymbolImpl(),
|
||||
name ?: SpecialNames.IMPLICIT_SET_PARAMETER, parent.contextReceiverParametersCount, type,
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = IrDeclarationOrigin.DEFINED,
|
||||
name = name ?: SpecialNames.IMPLICIT_SET_PARAMETER,
|
||||
type = type,
|
||||
isAssignable = false,
|
||||
symbol = IrValueParameterSymbolImpl(),
|
||||
index = parent.contextReceiverParametersCount,
|
||||
varargElementType = null,
|
||||
isCrossinline = isCrossinline, isNoinline = isNoinline,
|
||||
isHidden = false, isAssignable = false
|
||||
isCrossinline = isCrossinline,
|
||||
isNoinline = isNoinline,
|
||||
isHidden = false,
|
||||
).apply {
|
||||
this.parent = parent
|
||||
if (firValueParameter != null) {
|
||||
@@ -1208,12 +1215,20 @@ class Fir2IrDeclarationStorage(
|
||||
val type = valueParameter.returnTypeRef.toIrType(typeContext)
|
||||
val irParameter = valueParameter.convertWithOffsets { startOffset, endOffset ->
|
||||
irFactory.createValueParameter(
|
||||
startOffset, endOffset, origin, IrValueParameterSymbolImpl(),
|
||||
valueParameter.name, index, type,
|
||||
if (!valueParameter.isVararg) null
|
||||
else valueParameter.returnTypeRef.coneType.arrayElementType()?.toIrType(typeContext),
|
||||
isCrossinline = valueParameter.isCrossinline, isNoinline = valueParameter.isNoinline,
|
||||
isHidden = false, isAssignable = false
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = origin,
|
||||
name = valueParameter.name,
|
||||
type = type,
|
||||
isAssignable = false,
|
||||
symbol = IrValueParameterSymbolImpl(),
|
||||
index = index,
|
||||
varargElementType =
|
||||
if (!valueParameter.isVararg) null
|
||||
else valueParameter.returnTypeRef.coneType.arrayElementType()?.toIrType(typeContext),
|
||||
isCrossinline = valueParameter.isCrossinline,
|
||||
isNoinline = valueParameter.isNoinline,
|
||||
isHidden = false,
|
||||
).apply {
|
||||
if (!skipDefaultParameter && valueParameter.defaultValue.let {
|
||||
it != null && (useStubForDefaultValueStub || it !is FirExpressionStub)
|
||||
@@ -1240,11 +1255,18 @@ class Fir2IrDeclarationStorage(
|
||||
val type = contextReceiver.typeRef.toIrType()
|
||||
return contextReceiver.convertWithOffsets { startOffset, endOffset ->
|
||||
irFactory.createValueParameter(
|
||||
startOffset, endOffset, IrDeclarationOrigin.DEFINED, IrValueParameterSymbolImpl(),
|
||||
NameUtils.contextReceiverName(index), index, type,
|
||||
null,
|
||||
isCrossinline = false, isNoinline = false,
|
||||
isHidden = false, isAssignable = false
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = IrDeclarationOrigin.DEFINED,
|
||||
name = NameUtils.contextReceiverName(index),
|
||||
type = type,
|
||||
isAssignable = false,
|
||||
symbol = IrValueParameterSymbolImpl(),
|
||||
index = index,
|
||||
varargElementType = null,
|
||||
isCrossinline = false,
|
||||
isNoinline = false,
|
||||
isHidden = false,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+9
-9
@@ -262,18 +262,18 @@ internal class AdapterGenerator(
|
||||
origin: IrDeclarationOrigin
|
||||
): IrValueParameter =
|
||||
irFactory.createValueParameter(
|
||||
adapterFunction.startOffset,
|
||||
adapterFunction.endOffset,
|
||||
origin,
|
||||
IrValueParameterSymbolImpl(),
|
||||
name,
|
||||
index,
|
||||
type,
|
||||
startOffset = adapterFunction.startOffset,
|
||||
endOffset = adapterFunction.endOffset,
|
||||
origin = origin,
|
||||
name = name,
|
||||
type = type,
|
||||
isAssignable = false,
|
||||
symbol = IrValueParameterSymbolImpl(),
|
||||
index = index,
|
||||
varargElementType = null,
|
||||
isCrossinline = false,
|
||||
isNoinline = false,
|
||||
isHidden = false,
|
||||
isAssignable = false
|
||||
isHidden = false
|
||||
).also { irAdapterValueParameter ->
|
||||
irAdapterValueParameter.parent = adapterFunction
|
||||
}
|
||||
|
||||
+12
-2
@@ -277,8 +277,18 @@ class DataClassMembersGenerator(val components: Fir2IrComponents) : Fir2IrCompon
|
||||
|
||||
private fun createSyntheticIrParameter(irFunction: IrFunction, name: Name, type: IrType, index: Int = 0): IrValueParameter =
|
||||
components.irFactory.createValueParameter(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, IrDeclarationOrigin.DEFINED, IrValueParameterSymbolImpl(), name, index, type, null,
|
||||
isCrossinline = false, isNoinline = false, isHidden = false, isAssignable = false
|
||||
startOffset = UNDEFINED_OFFSET,
|
||||
endOffset = UNDEFINED_OFFSET,
|
||||
origin = IrDeclarationOrigin.DEFINED,
|
||||
name = name,
|
||||
type = type,
|
||||
isAssignable = false,
|
||||
symbol = IrValueParameterSymbolImpl(),
|
||||
index = index,
|
||||
varargElementType = null,
|
||||
isCrossinline = false,
|
||||
isNoinline = false,
|
||||
isHidden = false
|
||||
).apply {
|
||||
parent = irFunction
|
||||
}
|
||||
|
||||
+10
-8
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||
import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext
|
||||
import org.jetbrains.kotlin.ir.backend.js.utils.getJsNameOrKotlinName
|
||||
import org.jetbrains.kotlin.ir.backend.js.utils.realOverrideTarget
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.UNDEFINED_PARAMETER_INDEX
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.*
|
||||
@@ -55,17 +56,18 @@ class EscapedIdentifiersLowering(context: JsIrBackendContext) : BodyLoweringPass
|
||||
|
||||
private val IrFunction.dummyDispatchReceiverParameter
|
||||
get() = context.irFactory.createValueParameter(
|
||||
startOffset, endOffset,
|
||||
origin,
|
||||
IrValueParameterSymbolImpl(),
|
||||
SpecialNames.THIS,
|
||||
-1,
|
||||
context.irBuiltIns.anyType,
|
||||
null,
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = origin,
|
||||
name = SpecialNames.THIS,
|
||||
type = context.irBuiltIns.anyType,
|
||||
isAssignable = false,
|
||||
symbol = IrValueParameterSymbolImpl(),
|
||||
index = UNDEFINED_PARAMETER_INDEX,
|
||||
varargElementType = null,
|
||||
isCrossinline = false,
|
||||
isNoinline = false,
|
||||
isHidden = false,
|
||||
isAssignable = false
|
||||
).also { it.parent = this }
|
||||
|
||||
override fun visitGetValue(expression: IrGetValue): IrExpression {
|
||||
|
||||
+12
-4
@@ -549,10 +549,18 @@ private class ScriptToClassTransformer(
|
||||
|
||||
private fun IrDeclarationParent.createThisReceiverParameter(origin: IrDeclarationOrigin, type: IrType): IrValueParameter =
|
||||
context.symbolTable.irFactory.createValueParameter(
|
||||
startOffset, endOffset, origin, IrValueParameterSymbolImpl(),
|
||||
SpecialNames.THIS, UNDEFINED_PARAMETER_INDEX, type,
|
||||
varargElementType = null, isCrossinline = false, isNoinline = false,
|
||||
isHidden = false, isAssignable = false
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = origin,
|
||||
name = SpecialNames.THIS,
|
||||
type = type,
|
||||
isAssignable = false,
|
||||
symbol = IrValueParameterSymbolImpl(),
|
||||
index = UNDEFINED_PARAMETER_INDEX,
|
||||
varargElementType = null,
|
||||
isCrossinline = false,
|
||||
isNoinline = false,
|
||||
isHidden = false,
|
||||
).also {
|
||||
it.parent = this
|
||||
}
|
||||
|
||||
+24
-4
@@ -127,8 +127,18 @@ class IrBuiltInsOverDescriptors(
|
||||
val valueParameterDescriptor = operatorDescriptor.valueParameters[i]
|
||||
val valueParameterSymbol = IrValueParameterSymbolImpl(valueParameterDescriptor)
|
||||
irFactory.createValueParameter(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, BUILTIN_OPERATOR, valueParameterSymbol, Name.identifier("arg$i"), i,
|
||||
valueParameterType, null, isCrossinline = false, isNoinline = false, isHidden = false, isAssignable = false
|
||||
startOffset = UNDEFINED_OFFSET,
|
||||
endOffset = UNDEFINED_OFFSET,
|
||||
origin = BUILTIN_OPERATOR,
|
||||
name = Name.identifier("arg$i"),
|
||||
type = valueParameterType,
|
||||
isAssignable = false,
|
||||
symbol = valueParameterSymbol,
|
||||
index = i,
|
||||
varargElementType = null,
|
||||
isCrossinline = false,
|
||||
isNoinline = false,
|
||||
isHidden = false
|
||||
).apply {
|
||||
parent = operator
|
||||
}
|
||||
@@ -232,8 +242,18 @@ class IrBuiltInsOverDescriptors(
|
||||
|
||||
val valueParameterSymbol = IrValueParameterSymbolImpl(valueParameterDescriptor)
|
||||
val valueParameter = irFactory.createValueParameter(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, BUILTIN_OPERATOR, valueParameterSymbol, Name.identifier("arg0"), 0,
|
||||
valueIrType, null, isCrossinline = false, isNoinline = false, isHidden = false, isAssignable = false
|
||||
startOffset = UNDEFINED_OFFSET,
|
||||
endOffset = UNDEFINED_OFFSET,
|
||||
origin = BUILTIN_OPERATOR,
|
||||
name = Name.identifier("arg0"),
|
||||
type = valueIrType,
|
||||
isAssignable = false,
|
||||
symbol = valueParameterSymbol,
|
||||
index = 0,
|
||||
varargElementType = null,
|
||||
isCrossinline = false,
|
||||
isNoinline = false,
|
||||
isHidden = false,
|
||||
)
|
||||
|
||||
valueParameter.parent = operator
|
||||
|
||||
+31
-7
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.builtins.functions.FunctionClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.UNDEFINED_PARAMETER_INDEX
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
|
||||
@@ -279,12 +280,18 @@ class IrDescriptorBasedFunctionFactory(
|
||||
private fun createThisReceiver(descriptorFactory: FunctionDescriptorFactory): IrValueParameter {
|
||||
val descriptor = descriptorFactory.classReceiverParameterDescriptor()
|
||||
return irFactory.createValueParameter(
|
||||
offset, offset, classOrigin, IrValueParameterSymbolImpl(descriptor), SpecialNames.THIS, -1,
|
||||
typeTranslator.translateType(descriptor.type), null,
|
||||
startOffset = offset,
|
||||
endOffset = offset,
|
||||
origin = classOrigin,
|
||||
name = SpecialNames.THIS,
|
||||
type = typeTranslator.translateType(descriptor.type),
|
||||
isAssignable = false,
|
||||
symbol = IrValueParameterSymbolImpl(descriptor),
|
||||
index = UNDEFINED_PARAMETER_INDEX,
|
||||
varargElementType = null,
|
||||
isCrossinline = false,
|
||||
isNoinline = false,
|
||||
isHidden = false,
|
||||
isAssignable = false
|
||||
)
|
||||
}
|
||||
|
||||
@@ -330,11 +337,18 @@ class IrDescriptorBasedFunctionFactory(
|
||||
buildSimpleType()
|
||||
}
|
||||
val vDeclaration = irFactory.createValueParameter(
|
||||
offset, offset, memberOrigin, vSymbol, Name.identifier("p$i"), i - 1, vType, null,
|
||||
startOffset = offset,
|
||||
endOffset = offset,
|
||||
origin = memberOrigin,
|
||||
name = Name.identifier("p$i"),
|
||||
type = vType,
|
||||
isAssignable = false,
|
||||
symbol = vSymbol,
|
||||
index = i - 1,
|
||||
varargElementType = null,
|
||||
isCrossinline = false,
|
||||
isNoinline = false,
|
||||
isHidden = false,
|
||||
isAssignable = false
|
||||
)
|
||||
vDeclaration.parent = fDeclaration
|
||||
fDeclaration.valueParameters += vDeclaration
|
||||
@@ -364,8 +378,18 @@ class IrDescriptorBasedFunctionFactory(
|
||||
|
||||
private fun IrFunction.createValueParameter(descriptor: ParameterDescriptor): IrValueParameter = with(descriptor) {
|
||||
irFactory.createValueParameter(
|
||||
offset, offset, memberOrigin, IrValueParameterSymbolImpl(this), name, indexOrMinusOne, toIrType(type),
|
||||
(this as? ValueParameterDescriptor)?.varargElementType?.let(::toIrType), isCrossinline, isNoinline, false, false
|
||||
startOffset = offset,
|
||||
endOffset = offset,
|
||||
origin = memberOrigin,
|
||||
name = name,
|
||||
type = toIrType(type),
|
||||
isAssignable = false,
|
||||
symbol = IrValueParameterSymbolImpl(this),
|
||||
index = indexOrMinusOne,
|
||||
varargElementType = (this as? ValueParameterDescriptor)?.varargElementType?.let(::toIrType),
|
||||
isCrossinline = isCrossinline,
|
||||
isNoinline = isNoinline,
|
||||
isHidden = false
|
||||
).also {
|
||||
it.parent = this@createValueParameter
|
||||
}
|
||||
|
||||
+12
-3
@@ -449,9 +449,18 @@ private fun StatementGenerator.createFunctionForSuspendConversion(
|
||||
|
||||
fun createValueParameter(name: String, index: Int, type: IrType): IrValueParameter =
|
||||
context.irFactory.createValueParameter(
|
||||
startOffset, endOffset, IrDeclarationOrigin.ADAPTER_PARAMETER_FOR_SUSPEND_CONVERSION, IrValueParameterSymbolImpl(),
|
||||
Name.identifier(name), index, type, varargElementType = null, isCrossinline = false, isNoinline = false,
|
||||
isHidden = false, isAssignable = false
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = IrDeclarationOrigin.ADAPTER_PARAMETER_FOR_SUSPEND_CONVERSION,
|
||||
name = Name.identifier(name),
|
||||
type = type,
|
||||
isAssignable = false,
|
||||
symbol = IrValueParameterSymbolImpl(),
|
||||
index = index,
|
||||
varargElementType = null,
|
||||
isCrossinline = false,
|
||||
isNoinline = false,
|
||||
isHidden = false,
|
||||
)
|
||||
|
||||
irAdapterFun.extensionReceiverParameter = createValueParameter("callee", -1, funType.toIrType())
|
||||
|
||||
+12
-7
@@ -497,13 +497,18 @@ internal class ReflectionReferencesGenerator(statementGenerator: StatementGenera
|
||||
|
||||
private fun createAdapterParameter(startOffset: Int, endOffset: Int, name: Name, index: Int, type: KotlinType): IrValueParameter =
|
||||
context.irFactory.createValueParameter(
|
||||
startOffset, endOffset,
|
||||
IrDeclarationOrigin.ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE,
|
||||
IrValueParameterSymbolImpl(),
|
||||
name,
|
||||
index,
|
||||
type.toIrType(),
|
||||
varargElementType = null, isCrossinline = false, isNoinline = false, isHidden = false, isAssignable = false
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = IrDeclarationOrigin.ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE,
|
||||
name = name,
|
||||
type = type.toIrType(),
|
||||
isAssignable = false,
|
||||
symbol = IrValueParameterSymbolImpl(),
|
||||
index = index,
|
||||
varargElementType = null,
|
||||
isCrossinline = false,
|
||||
isNoinline = false,
|
||||
isHidden = false,
|
||||
)
|
||||
|
||||
fun generateCallableReference(
|
||||
|
||||
+37
-15
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.descriptors.ScriptDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.IrFunctionBuilder
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.UNDEFINED_PARAMETER_INDEX
|
||||
import org.jetbrains.kotlin.ir.declarations.DescriptorMetadataSource
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||
@@ -62,12 +63,18 @@ internal class ScriptGenerator(declarationGenerator: DeclarationGenerator) : Dec
|
||||
type
|
||||
) { symbol ->
|
||||
context.irFactory.createValueParameter(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET,
|
||||
origin, symbol, context.symbolTable.nameProvider.nameForDeclaration(descriptor),
|
||||
if (index != -1) index else descriptor.indexOrMinusOne,
|
||||
type, varargElementType,
|
||||
descriptor.isCrossinline, descriptor.isNoinline,
|
||||
isHidden = false, isAssignable = false
|
||||
startOffset = UNDEFINED_OFFSET,
|
||||
endOffset = UNDEFINED_OFFSET,
|
||||
origin = origin,
|
||||
name = context.symbolTable.nameProvider.nameForDeclaration(descriptor),
|
||||
type = type,
|
||||
isAssignable = false,
|
||||
symbol = symbol,
|
||||
index = if (index != UNDEFINED_PARAMETER_INDEX) index else descriptor.indexOrMinusOne,
|
||||
varargElementType = varargElementType,
|
||||
isCrossinline = descriptor.isCrossinline,
|
||||
isNoinline = descriptor.isNoinline,
|
||||
isHidden = false,
|
||||
)
|
||||
}.also { it.parent = irScript }
|
||||
}
|
||||
@@ -92,12 +99,18 @@ internal class ScriptGenerator(declarationGenerator: DeclarationGenerator) : Dec
|
||||
|
||||
fun createValueParameter(valueParameterDescriptor: ValueParameterDescriptor): IrValueParameter {
|
||||
return context.irFactory.createValueParameter(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET,
|
||||
IrDeclarationOrigin.SCRIPT_CALL_PARAMETER, IrValueParameterSymbolImpl(),
|
||||
valueParameterDescriptor.name, parametersIndex++,
|
||||
valueParameterDescriptor.type.toIrType(), valueParameterDescriptor.varargElementType?.toIrType(),
|
||||
valueParameterDescriptor.isCrossinline, valueParameterDescriptor.isNoinline,
|
||||
false, false
|
||||
startOffset = UNDEFINED_OFFSET,
|
||||
endOffset = UNDEFINED_OFFSET,
|
||||
origin = IrDeclarationOrigin.SCRIPT_CALL_PARAMETER,
|
||||
name = valueParameterDescriptor.name,
|
||||
type = valueParameterDescriptor.type.toIrType(),
|
||||
isAssignable = false,
|
||||
symbol = IrValueParameterSymbolImpl(),
|
||||
index = parametersIndex++,
|
||||
varargElementType = valueParameterDescriptor.varargElementType?.toIrType(),
|
||||
isCrossinline = valueParameterDescriptor.isCrossinline,
|
||||
isNoinline = valueParameterDescriptor.isNoinline,
|
||||
isHidden = false
|
||||
).also { it.parent = irScript }
|
||||
}
|
||||
|
||||
@@ -130,9 +143,18 @@ internal class ScriptGenerator(declarationGenerator: DeclarationGenerator) : Dec
|
||||
IrDeclarationOrigin.SCRIPT_PROVIDED_PROPERTY, parameter, type
|
||||
) { symbol ->
|
||||
context.irFactory.createValueParameter(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET,
|
||||
IrDeclarationOrigin.SCRIPT_PROVIDED_PROPERTY, symbol, descriptor.name,
|
||||
parametersIndex, type, null, isCrossinline = false, isNoinline = false, isHidden = false, isAssignable = false
|
||||
startOffset = UNDEFINED_OFFSET,
|
||||
endOffset = UNDEFINED_OFFSET,
|
||||
origin = IrDeclarationOrigin.SCRIPT_PROVIDED_PROPERTY,
|
||||
name = descriptor.name,
|
||||
type = type,
|
||||
isAssignable = false,
|
||||
symbol = symbol,
|
||||
index = parametersIndex,
|
||||
varargElementType = null,
|
||||
isCrossinline = false,
|
||||
isNoinline = false,
|
||||
isHidden = false,
|
||||
).also { it.parent = irScript }
|
||||
}
|
||||
parametersIndex++
|
||||
|
||||
+24
-7
@@ -291,10 +291,18 @@ fun <D> buildReceiverParameter(
|
||||
): IrValueParameter
|
||||
where D : IrDeclaration, D : IrDeclarationParent =
|
||||
parent.factory.createValueParameter(
|
||||
startOffset, endOffset, origin,
|
||||
IrValueParameterSymbolImpl(),
|
||||
SpecialNames.THIS, -1, type, null, isCrossinline = false, isNoinline = false,
|
||||
isHidden = false, isAssignable = false
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = origin,
|
||||
name = SpecialNames.THIS,
|
||||
type = type,
|
||||
isAssignable = false,
|
||||
symbol = IrValueParameterSymbolImpl(),
|
||||
index = UNDEFINED_PARAMETER_INDEX,
|
||||
varargElementType = null,
|
||||
isCrossinline = false,
|
||||
isNoinline = false,
|
||||
isHidden = false,
|
||||
).also {
|
||||
it.parent = parent
|
||||
}
|
||||
@@ -302,9 +310,18 @@ fun <D> buildReceiverParameter(
|
||||
fun IrFactory.buildValueParameter(builder: IrValueParameterBuilder, parent: IrDeclarationParent): IrValueParameter =
|
||||
with(builder) {
|
||||
return createValueParameter(
|
||||
startOffset, endOffset, origin,
|
||||
IrValueParameterSymbolImpl(),
|
||||
name, index, type, varargElementType, isCrossInline, isNoinline, isHidden, isAssignable
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = origin,
|
||||
name = name,
|
||||
type = type,
|
||||
isAssignable = isAssignable,
|
||||
symbol = IrValueParameterSymbolImpl(),
|
||||
index = index,
|
||||
varargElementType = varargElementType,
|
||||
isCrossinline = isCrossInline,
|
||||
isNoinline = isNoinline,
|
||||
isHidden = isHidden
|
||||
).also {
|
||||
it.parent = parent
|
||||
}
|
||||
|
||||
@@ -194,15 +194,15 @@ interface IrFactory {
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
symbol: IrValueParameterSymbol,
|
||||
name: Name,
|
||||
index: Int,
|
||||
type: IrType,
|
||||
isAssignable: Boolean,
|
||||
symbol: IrValueParameterSymbol,
|
||||
index: Int,
|
||||
varargElementType: IrType?,
|
||||
isCrossinline: Boolean,
|
||||
isNoinline: Boolean,
|
||||
isHidden: Boolean,
|
||||
isAssignable: Boolean
|
||||
isHidden: Boolean
|
||||
): IrValueParameter
|
||||
|
||||
// Bodies
|
||||
|
||||
@@ -236,15 +236,15 @@ abstract class AbstractIrFactoryImpl : IrFactory {
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
symbol: IrValueParameterSymbol,
|
||||
name: Name,
|
||||
index: Int,
|
||||
type: IrType,
|
||||
isAssignable: Boolean,
|
||||
symbol: IrValueParameterSymbol,
|
||||
index: Int,
|
||||
varargElementType: IrType?,
|
||||
isCrossinline: Boolean,
|
||||
isNoinline: Boolean,
|
||||
isHidden: Boolean,
|
||||
isAssignable: Boolean,
|
||||
): IrValueParameter =
|
||||
IrValueParameterImpl(
|
||||
startOffset, endOffset, origin, symbol, name, index, type, varargElementType,
|
||||
|
||||
+7
-7
@@ -368,29 +368,29 @@ class IrFactoryImplForJsIC(override val stageController: StageController) : Abst
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
symbol: IrValueParameterSymbol,
|
||||
name: Name,
|
||||
index: Int,
|
||||
type: IrType,
|
||||
isAssignable: Boolean,
|
||||
symbol: IrValueParameterSymbol,
|
||||
index: Int,
|
||||
varargElementType: IrType?,
|
||||
isCrossinline: Boolean,
|
||||
isNoinline: Boolean,
|
||||
isHidden: Boolean,
|
||||
isAssignable: Boolean
|
||||
isHidden: Boolean
|
||||
): IrValueParameter {
|
||||
return super.createValueParameter(
|
||||
startOffset,
|
||||
endOffset,
|
||||
origin,
|
||||
symbol,
|
||||
name,
|
||||
index,
|
||||
type,
|
||||
isAssignable,
|
||||
symbol,
|
||||
index,
|
||||
varargElementType,
|
||||
isCrossinline,
|
||||
isNoinline,
|
||||
isHidden,
|
||||
isAssignable,
|
||||
).register()
|
||||
}
|
||||
}
|
||||
|
||||
+13
-3
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.ir.declarations.lazy
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.UNDEFINED_PARAMETER_INDEX
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||
import org.jetbrains.kotlin.ir.symbols.impl.IrValueParameterSymbolImpl
|
||||
@@ -30,9 +31,18 @@ interface IrLazyDeclarationBase : IrDeclaration {
|
||||
|
||||
fun ReceiverParameterDescriptor.generateReceiverParameterStub(): IrValueParameter =
|
||||
factory.createValueParameter(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, IrValueParameterSymbolImpl(this),
|
||||
name, -1, type.toIrType(), null, isCrossinline = false, isNoinline = false,
|
||||
isHidden = false, isAssignable = false
|
||||
startOffset = UNDEFINED_OFFSET,
|
||||
endOffset = UNDEFINED_OFFSET,
|
||||
origin = origin,
|
||||
name = name,
|
||||
type = type.toIrType(),
|
||||
isAssignable = false,
|
||||
symbol = IrValueParameterSymbolImpl(this),
|
||||
index = UNDEFINED_PARAMETER_INDEX,
|
||||
varargElementType = null,
|
||||
isCrossinline = false,
|
||||
isNoinline = false,
|
||||
isHidden = false,
|
||||
)
|
||||
|
||||
fun createLazyAnnotations(): ReadWriteProperty<Any?, List<IrConstructorCall>> = lazyVar(stubGenerator.lock) {
|
||||
|
||||
+12
-3
@@ -43,9 +43,18 @@ interface IrLazyFunctionBase : IrLazyDeclarationBase, IrTypeParametersContainer
|
||||
val result = arrayListOf<IrValueParameter>()
|
||||
descriptor.contextReceiverParameters.mapIndexedTo(result) { i, contextReceiverParameter ->
|
||||
factory.createValueParameter(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, IrValueParameterSymbolImpl(contextReceiverParameter),
|
||||
Name.identifier("contextReceiverParameter$i"), i, contextReceiverParameter.type.toIrType(),
|
||||
null, isCrossinline = false, isNoinline = false, isHidden = false, isAssignable = false
|
||||
startOffset = UNDEFINED_OFFSET,
|
||||
endOffset = UNDEFINED_OFFSET,
|
||||
origin = origin,
|
||||
name = Name.identifier("contextReceiverParameter$i"),
|
||||
type = contextReceiverParameter.type.toIrType(),
|
||||
isAssignable = false,
|
||||
symbol = IrValueParameterSymbolImpl(contextReceiverParameter),
|
||||
index = i,
|
||||
varargElementType = null,
|
||||
isCrossinline = false,
|
||||
isNoinline = false,
|
||||
isHidden = false,
|
||||
).apply { parent = this@IrLazyFunctionBase }
|
||||
}
|
||||
descriptor.valueParameters.mapTo(result) {
|
||||
|
||||
@@ -91,17 +91,18 @@ class FakeOverrideCopier(
|
||||
|
||||
override fun visitValueParameter(declaration: IrValueParameter): IrValueParameter =
|
||||
declaration.factory.createValueParameter(
|
||||
declaration.startOffset, declaration.endOffset,
|
||||
mapDeclarationOrigin(declaration.origin),
|
||||
symbolRemapper.getDeclaredValueParameter(declaration.symbol),
|
||||
symbolRenamer.getValueParameterName(declaration.symbol),
|
||||
declaration.index,
|
||||
declaration.type.remapType(),
|
||||
declaration.varargElementType?.remapType(),
|
||||
declaration.isCrossinline,
|
||||
declaration.isNoinline,
|
||||
declaration.isHidden,
|
||||
declaration.isAssignable
|
||||
startOffset = declaration.startOffset,
|
||||
endOffset = declaration.endOffset,
|
||||
origin = mapDeclarationOrigin(declaration.origin),
|
||||
name = symbolRenamer.getValueParameterName(declaration.symbol),
|
||||
type = declaration.type.remapType(),
|
||||
isAssignable = declaration.isAssignable,
|
||||
symbol = symbolRemapper.getDeclaredValueParameter(declaration.symbol),
|
||||
index = declaration.index,
|
||||
varargElementType = declaration.varargElementType?.remapType(),
|
||||
isCrossinline = declaration.isCrossinline,
|
||||
isNoinline = declaration.isNoinline,
|
||||
isHidden = declaration.isHidden,
|
||||
).apply {
|
||||
transformAnnotations(declaration)
|
||||
// Don't set the default value for fake overrides.
|
||||
|
||||
@@ -373,17 +373,18 @@ open class DeepCopyIrTreeWithSymbols(
|
||||
|
||||
override fun visitValueParameter(declaration: IrValueParameter): IrValueParameter =
|
||||
declaration.factory.createValueParameter(
|
||||
declaration.startOffset, declaration.endOffset,
|
||||
mapDeclarationOrigin(declaration.origin),
|
||||
symbolRemapper.getDeclaredValueParameter(declaration.symbol),
|
||||
symbolRenamer.getValueParameterName(declaration.symbol),
|
||||
declaration.index,
|
||||
declaration.type.remapType(),
|
||||
declaration.varargElementType?.remapType(),
|
||||
declaration.isCrossinline,
|
||||
declaration.isNoinline,
|
||||
declaration.isHidden,
|
||||
declaration.isAssignable
|
||||
startOffset = declaration.startOffset,
|
||||
endOffset = declaration.endOffset,
|
||||
origin = mapDeclarationOrigin(declaration.origin),
|
||||
name = symbolRenamer.getValueParameterName(declaration.symbol),
|
||||
type = declaration.type.remapType(),
|
||||
isAssignable = declaration.isAssignable,
|
||||
symbol = symbolRemapper.getDeclaredValueParameter(declaration.symbol),
|
||||
index = declaration.index,
|
||||
varargElementType = declaration.varargElementType?.remapType(),
|
||||
isCrossinline = declaration.isCrossinline,
|
||||
isNoinline = declaration.isNoinline,
|
||||
isHidden = declaration.isHidden,
|
||||
).apply {
|
||||
transformAnnotations(declaration)
|
||||
defaultValue = declaration.defaultValue?.transform()
|
||||
|
||||
@@ -8,10 +8,7 @@ package org.jetbrains.kotlin.ir.util
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.ir.*
|
||||
import org.jetbrains.kotlin.ir.builders.IrBuilderWithScope
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.addConstructor
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.buildClass
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.buildReceiverParameter
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.buildTypeParameter
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.*
|
||||
import org.jetbrains.kotlin.ir.builders.irImplicitCast
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
@@ -799,9 +796,18 @@ fun IrValueParameter.copyTo(
|
||||
}
|
||||
}
|
||||
return factory.createValueParameter(
|
||||
startOffset, endOffset, origin, symbol,
|
||||
name, index, type, varargElementType, isCrossinline = isCrossinline,
|
||||
isNoinline = isNoinline, isHidden = false, isAssignable = isAssignable
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = origin,
|
||||
name = name,
|
||||
type = type,
|
||||
isAssignable = isAssignable,
|
||||
symbol = symbol,
|
||||
index = index,
|
||||
varargElementType = varargElementType,
|
||||
isCrossinline = isCrossinline,
|
||||
isNoinline = isNoinline,
|
||||
isHidden = false,
|
||||
).also {
|
||||
it.parent = irFunction
|
||||
it.defaultValue = defaultValueCopy
|
||||
@@ -823,13 +829,18 @@ fun IrTypeParameter.copyToWithoutSuperTypes(
|
||||
fun IrFunction.copyReceiverParametersFrom(from: IrFunction, substitutionMap: Map<IrTypeParameterSymbol, IrType>) {
|
||||
dispatchReceiverParameter = from.dispatchReceiverParameter?.run {
|
||||
factory.createValueParameter(
|
||||
startOffset, endOffset, origin,
|
||||
IrValueParameterSymbolImpl(),
|
||||
name, index,
|
||||
type.substitute(substitutionMap),
|
||||
varargElementType?.substitute(substitutionMap),
|
||||
isCrossinline, isNoinline,
|
||||
isHidden, isAssignable
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = origin,
|
||||
name = name,
|
||||
type = type.substitute(substitutionMap),
|
||||
isAssignable = isAssignable,
|
||||
symbol = IrValueParameterSymbolImpl(),
|
||||
index = index,
|
||||
varargElementType = varargElementType?.substitute(substitutionMap),
|
||||
isCrossinline = isCrossinline,
|
||||
isNoinline = isNoinline,
|
||||
isHidden = isHidden,
|
||||
).also { parameter ->
|
||||
parameter.parent = this@copyReceiverParametersFrom
|
||||
}
|
||||
@@ -1098,17 +1109,18 @@ fun IrFunction.createDispatchReceiverParameter(origin: IrDeclarationOrigin? = nu
|
||||
assert(dispatchReceiverParameter == null)
|
||||
|
||||
dispatchReceiverParameter = factory.createValueParameter(
|
||||
startOffset, endOffset,
|
||||
origin ?: parentAsClass.origin,
|
||||
IrValueParameterSymbolImpl(),
|
||||
SpecialNames.THIS,
|
||||
-1,
|
||||
parentAsClass.defaultType,
|
||||
null,
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = origin ?: parentAsClass.origin,
|
||||
name = SpecialNames.THIS,
|
||||
type = parentAsClass.defaultType,
|
||||
isAssignable = false,
|
||||
symbol = IrValueParameterSymbolImpl(),
|
||||
index = UNDEFINED_PARAMETER_INDEX,
|
||||
varargElementType = null,
|
||||
isCrossinline = false,
|
||||
isNoinline = false,
|
||||
isHidden = false,
|
||||
isAssignable = false
|
||||
).apply {
|
||||
parent = this@createDispatchReceiverParameter
|
||||
}
|
||||
|
||||
@@ -1065,9 +1065,18 @@ open class SymbolTable(
|
||||
isAssignable: Boolean = false,
|
||||
valueParameterFactory: (IrValueParameterSymbol) -> IrValueParameter = {
|
||||
irFactory.createValueParameter(
|
||||
startOffset, endOffset, origin, it, name ?: nameProvider.nameForDeclaration(descriptor),
|
||||
index ?: descriptor.indexOrMinusOne, type, varargElementType, descriptor.isCrossinline, descriptor.isNoinline,
|
||||
isHidden = false, isAssignable = isAssignable
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = origin,
|
||||
name = name ?: nameProvider.nameForDeclaration(descriptor),
|
||||
type = type,
|
||||
isAssignable = isAssignable,
|
||||
symbol = it,
|
||||
index = index ?: descriptor.indexOrMinusOne,
|
||||
varargElementType = varargElementType,
|
||||
isCrossinline = descriptor.isCrossinline,
|
||||
isNoinline = descriptor.isNoinline,
|
||||
isHidden = false,
|
||||
)
|
||||
}
|
||||
): IrValueParameter =
|
||||
|
||||
+12
-10
@@ -329,16 +329,18 @@ class IrDeclarationDeserializer(
|
||||
val flags = ValueParameterFlags.decode(fcode)
|
||||
val nameAndType = BinaryNameAndType.decode(proto.nameType)
|
||||
irFactory.createValueParameter(
|
||||
startOffset, endOffset, origin,
|
||||
symbol.checkSymbolType(fallbackSymbolKind = null),
|
||||
deserializeName(nameAndType.nameIndex),
|
||||
index,
|
||||
deserializeIrType(nameAndType.typeIndex),
|
||||
if (proto.hasVarargElementType()) deserializeIrType(proto.varargElementType) else null,
|
||||
flags.isCrossInline,
|
||||
flags.isNoInline,
|
||||
flags.isHidden,
|
||||
flags.isAssignable
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = origin,
|
||||
name = deserializeName(nameAndType.nameIndex),
|
||||
type = deserializeIrType(nameAndType.typeIndex),
|
||||
isAssignable = flags.isAssignable,
|
||||
symbol = symbol.checkSymbolType(fallbackSymbolKind = null),
|
||||
index = index,
|
||||
varargElementType = if (proto.hasVarargElementType()) deserializeIrType(proto.varargElementType) else null,
|
||||
isCrossinline = flags.isCrossInline,
|
||||
isNoinline = flags.isNoInline,
|
||||
isHidden = flags.isHidden,
|
||||
).apply {
|
||||
if (proto.hasDefaultValue())
|
||||
defaultValue = deserializeExpressionBody(proto.defaultValue)
|
||||
|
||||
+12
-3
@@ -361,9 +361,18 @@ private fun TranslationPluginContext.declareParameterStub(parameterDescriptor: P
|
||||
val type = typeTranslator.translateType(parameterDescriptor.type)
|
||||
val varargElementType = parameterDescriptor.varargElementType?.let { typeTranslator.translateType(it) }
|
||||
return irFactory.createValueParameter(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, IrDeclarationOrigin.DEFINED, symbol, parameterDescriptor.name,
|
||||
parameterDescriptor.indexOrMinusOne, type, varargElementType, parameterDescriptor.isCrossinline,
|
||||
parameterDescriptor.isNoinline, isHidden = false, isAssignable = false
|
||||
startOffset = UNDEFINED_OFFSET,
|
||||
endOffset = UNDEFINED_OFFSET,
|
||||
origin = IrDeclarationOrigin.DEFINED,
|
||||
name = parameterDescriptor.name,
|
||||
type = type,
|
||||
isAssignable = false,
|
||||
symbol = symbol,
|
||||
index = parameterDescriptor.indexOrMinusOne,
|
||||
varargElementType = varargElementType,
|
||||
isCrossinline = parameterDescriptor.isCrossinline,
|
||||
isNoinline = parameterDescriptor.isNoinline,
|
||||
isHidden = false,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user