[IR] Add isAssignable property to IrValueParameter.
Use it to check that only the value parameters that are explicitly marked assignable are assigned. Currently, the only parameters marked assignable are those for default argument stubs.
This commit is contained in:
committed by
Alexander Udalov
parent
8d791ca98e
commit
1f2ca606a5
@@ -356,7 +356,7 @@ internal fun IrDeclarationParent.declareThisReceiverParameter(
|
||||
symbolTable.irFactory.createValueParameter(
|
||||
startOffset, endOffset, thisOrigin, symbol,
|
||||
Name.special("<this>"), -1, thisType,
|
||||
varargElementType = null, isCrossinline = false, isNoinline = false
|
||||
varargElementType = null, isCrossinline = false, isNoinline = false, isAssignable = false
|
||||
).apply {
|
||||
this.parent = this@declareThisReceiverParameter
|
||||
receiverDescriptor.bind(this)
|
||||
|
||||
+2
-2
@@ -256,7 +256,7 @@ class Fir2IrDeclarationStorage(
|
||||
startOffset, endOffset, IrDeclarationOrigin.DEFINED, symbol,
|
||||
Name.special("<set-?>"), 0, type,
|
||||
varargElementType = null,
|
||||
isCrossinline = false, isNoinline = false
|
||||
isCrossinline = false, isNoinline = false, isAssignable = false
|
||||
).apply {
|
||||
this.parent = parent
|
||||
descriptor.bind(this)
|
||||
@@ -843,7 +843,7 @@ class Fir2IrDeclarationStorage(
|
||||
valueParameter.name, index, type,
|
||||
if (!valueParameter.isVararg) null
|
||||
else valueParameter.returnTypeRef.coneType.arrayElementType()?.toIrType(typeContext),
|
||||
valueParameter.isCrossinline, valueParameter.isNoinline
|
||||
valueParameter.isCrossinline, valueParameter.isNoinline, false
|
||||
).apply {
|
||||
descriptor.bind(this)
|
||||
if (valueParameter.defaultValue.let {
|
||||
|
||||
+2
-1
@@ -274,7 +274,8 @@ internal class AdapterGenerator(
|
||||
type,
|
||||
varargElementType = null,
|
||||
isCrossinline = false,
|
||||
isNoinline = false
|
||||
isNoinline = false,
|
||||
isAssignable = false
|
||||
).also { irAdapterValueParameter ->
|
||||
descriptor.bind(irAdapterValueParameter)
|
||||
irAdapterValueParameter.parent = adapterFunction
|
||||
|
||||
+1
-1
@@ -281,7 +281,7 @@ class DataClassMembersGenerator(val components: Fir2IrComponents) {
|
||||
) { symbol ->
|
||||
components.irFactory.createValueParameter(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, symbol, name, index, type, null,
|
||||
isCrossinline = false, isNoinline = false
|
||||
isCrossinline = false, isNoinline = false, isAssignable = false
|
||||
)
|
||||
}.apply {
|
||||
parent = irFunction
|
||||
|
||||
Reference in New Issue
Block a user