[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:
Mads Ager
2020-09-15 13:42:42 +02:00
committed by Alexander Udalov
parent 8d791ca98e
commit 1f2ca606a5
26 changed files with 55 additions and 34 deletions
@@ -235,10 +235,11 @@ object IrFactoryImpl : IrFactory {
varargElementType: IrType?,
isCrossinline: Boolean,
isNoinline: Boolean,
isHidden: Boolean
isHidden: Boolean,
isAssignable: Boolean,
): IrValueParameter =
IrValueParameterImpl(
startOffset, endOffset, origin, symbol, name, index, type, varargElementType, isCrossinline, isNoinline, isHidden
startOffset, endOffset, origin, symbol, name, index, type, varargElementType, isCrossinline, isNoinline, isHidden, isAssignable
)
override fun createExpressionBody(
@@ -39,7 +39,8 @@ class IrValueParameterImpl(
override var varargElementType: IrType?,
override val isCrossinline: Boolean,
override val isNoinline: Boolean,
override val isHidden: Boolean = false
override val isHidden: Boolean = false,
override val isAssignable: Boolean = false
) : IrValueParameter() {
@ObsoleteDescriptorBasedAPI
override val descriptor: ParameterDescriptor