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