diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt index 12f1a174c45..61ec62e1e1a 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt @@ -356,7 +356,7 @@ internal fun IrDeclarationParent.declareThisReceiverParameter( symbolTable.irFactory.createValueParameter( startOffset, endOffset, thisOrigin, symbol, Name.special(""), -1, thisType, - varargElementType = null, isCrossinline = false, isNoinline = false + varargElementType = null, isCrossinline = false, isNoinline = false, isAssignable = false ).apply { this.parent = this@declareThisReceiverParameter receiverDescriptor.bind(this) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt index 5503cbfeb4f..f60b6bd4336 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt @@ -256,7 +256,7 @@ class Fir2IrDeclarationStorage( startOffset, endOffset, IrDeclarationOrigin.DEFINED, symbol, Name.special(""), 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 { diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/AdapterGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/AdapterGenerator.kt index eafe4644470..e2c3fd81446 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/AdapterGenerator.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/AdapterGenerator.kt @@ -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 diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DataClassMembersGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DataClassMembersGenerator.kt index 176cd4b3570..db7c12f43d4 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DataClassMembersGenerator.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DataClassMembersGenerator.kt @@ -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 diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/CheckIrElementVisitor.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/CheckIrElementVisitor.kt index b9c9278f9cb..34109a82cf8 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/CheckIrElementVisitor.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/CheckIrElementVisitor.kt @@ -137,7 +137,10 @@ class CheckIrElementVisitor( override fun visitSetValue(expression: IrSetValue) { super.visitSetValue(expression) - + val declaration = expression.symbol.owner + if (declaration is IrValueParameter && !declaration.isAssignable) { + reportError(expression, "Assignment to value parameters not marked assignable") + } expression.ensureTypeIs(irBuiltIns.unitType) } diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt index 22eff0f0ea7..76e6655fe22 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt @@ -126,7 +126,8 @@ fun IrValueParameter.copyTo( varargElementType: IrType? = this.varargElementType, // TODO: remapTypeParameters here as well defaultValue: IrExpressionBody? = this.defaultValue, isCrossinline: Boolean = this.isCrossinline, - isNoinline: Boolean = this.isNoinline + isNoinline: Boolean = this.isNoinline, + isAssignable: Boolean = this.isAssignable ): IrValueParameter { val descriptor = if (index < 0) { WrappedReceiverParameterDescriptor() @@ -143,7 +144,7 @@ fun IrValueParameter.copyTo( } return factory.createValueParameter( startOffset, endOffset, origin, symbol, - name, index, type, varargElementType, isCrossinline, isNoinline + name, index, type, varargElementType, isCrossinline, isNoinline, isAssignable = isAssignable ).also { descriptor.bind(it) it.parent = irFunction @@ -171,7 +172,7 @@ fun IrFunction.copyReceiverParametersFrom(from: IrFunction) { startOffset, endOffset, origin, IrValueParameterSymbolImpl(newDescriptor), name, - index, type, varargElementType, isCrossinline, isNoinline + index, type, varargElementType, isCrossinline, isNoinline, false ).also { parameter -> parameter.parent = this@copyReceiverParametersFrom newDescriptor.bind(this) @@ -422,6 +423,7 @@ fun IrFunction.createDispatchReceiverParameter(origin: IrDeclarationOrigin? = nu parentAsClass.defaultType, null, false, + false, false ).apply { parent = this@createDispatchReceiverParameter diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/DefaultArgumentStubGenerator.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/DefaultArgumentStubGenerator.kt index 8c094a17d0e..a67f57ba6f3 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/DefaultArgumentStubGenerator.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/DefaultArgumentStubGenerator.kt @@ -586,7 +586,8 @@ private fun IrFunction.generateDefaultsFunctionImpl( type = if (makeNullable) newType.makeNullable() else newType, defaultValue = if (it.defaultValue != null) { factory.createExpressionBody(IrErrorExpressionImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET, it.type, "Default Stub")) - } else null + } else null, + isAssignable = it.defaultValue != null ) } diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/builders/declarations/declarationBuilders.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/builders/declarations/declarationBuilders.kt index 010e26f0673..485a27f5b81 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/builders/declarations/declarationBuilders.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/builders/declarations/declarationBuilders.kt @@ -18,7 +18,6 @@ import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.util.defaultType import org.jetbrains.kotlin.ir.util.parentAsClass import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.serialization.deserialization.descriptors.DescriptorWithContainerSource import org.jetbrains.kotlin.types.Variance @PublishedApi @@ -213,7 +212,7 @@ fun buildReceiverParameter( parent.factory.createValueParameter( startOffset, endOffset, origin, IrValueParameterSymbolImpl(wrappedDescriptor), - RECEIVER_PARAMETER_NAME, -1, type, null, isCrossinline = false, isNoinline = false + RECEIVER_PARAMETER_NAME, -1, type, null, isCrossinline = false, isNoinline = false, isAssignable = false ).also { wrappedDescriptor.bind(it) it.parent = parent @@ -227,7 +226,7 @@ internal fun IrFactory.buildValueParameter(builder: IrValueParameterBuilder, par return createValueParameter( startOffset, endOffset, origin, IrValueParameterSymbolImpl(wrappedDescriptor), - name, index, type, varargElementType, isCrossInline, isNoinline, isHidden + name, index, type, varargElementType, isCrossInline, isNoinline, isHidden, false ).also { wrappedDescriptor.bind(it) it.parent = parent diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ArgumentsGenerationUtils.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ArgumentsGenerationUtils.kt index 88370a15cc6..c35b0639380 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ArgumentsGenerationUtils.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ArgumentsGenerationUtils.kt @@ -415,7 +415,7 @@ private fun StatementGenerator.createFunctionForSuspendConversion( Name.identifier("p$index"), index, irParameterType, - varargElementType = null, isCrossinline = false, isNoinline = false + varargElementType = null, isCrossinline = false, isNoinline = false, isAssignable = false ) }.also { adaptedParameterDescriptor.bind(it) diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt index 4a68ef12752..a540983e706 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt @@ -392,7 +392,7 @@ class ReflectionReferencesGenerator(statementGenerator: StatementGenerator) : St name, index, type.toIrType(), - varargElementType = null, isCrossinline = false, isNoinline = false + varargElementType = null, isCrossinline = false, isNoinline = false, isAssignable = false ).also { irAdapterValueParameter -> descriptor.bind(irAdapterValueParameter) } diff --git a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrFactoryImpl.kt b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrFactoryImpl.kt index e069cd8a68b..cf68503e852 100644 --- a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrFactoryImpl.kt +++ b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrFactoryImpl.kt @@ -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( diff --git a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrValueParameterImpl.kt b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrValueParameterImpl.kt index ae8a326a129..1e92a75769b 100644 --- a/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrValueParameterImpl.kt +++ b/compiler/ir/ir.tree.impl/src/org/jetbrains/kotlin/ir/declarations/impl/IrValueParameterImpl.kt @@ -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 diff --git a/compiler/ir/ir.tree.persistent/src/org/jetbrains/kotlin/ir/declarations/persistent/PersistentIrFactory.kt b/compiler/ir/ir.tree.persistent/src/org/jetbrains/kotlin/ir/declarations/persistent/PersistentIrFactory.kt index 64cbff6a1a6..13fa08ea6a0 100644 --- a/compiler/ir/ir.tree.persistent/src/org/jetbrains/kotlin/ir/declarations/persistent/PersistentIrFactory.kt +++ b/compiler/ir/ir.tree.persistent/src/org/jetbrains/kotlin/ir/declarations/persistent/PersistentIrFactory.kt @@ -237,10 +237,11 @@ object PersistentIrFactory : IrFactory { varargElementType: IrType?, isCrossinline: Boolean, isNoinline: Boolean, - isHidden: Boolean + isHidden: Boolean, + isAssignable: Boolean ): IrValueParameter = PersistentIrValueParameter( - 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( diff --git a/compiler/ir/ir.tree.persistent/src/org/jetbrains/kotlin/ir/declarations/persistent/PersistentIrValueParameter.kt b/compiler/ir/ir.tree.persistent/src/org/jetbrains/kotlin/ir/declarations/persistent/PersistentIrValueParameter.kt index 4854471e787..a7e6212d0da 100644 --- a/compiler/ir/ir.tree.persistent/src/org/jetbrains/kotlin/ir/declarations/persistent/PersistentIrValueParameter.kt +++ b/compiler/ir/ir.tree.persistent/src/org/jetbrains/kotlin/ir/declarations/persistent/PersistentIrValueParameter.kt @@ -41,7 +41,8 @@ internal class PersistentIrValueParameter( varargElementType: IrType?, override val isCrossinline: Boolean, override val isNoinline: Boolean, - override val isHidden: Boolean = false + override val isHidden: Boolean = false, + override val isAssignable: Boolean ) : IrValueParameter(), PersistentIrDeclarationBase, ValueParameterCarrier { diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFactory.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFactory.kt index ec04456661d..6ad4e6cfcda 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFactory.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFactory.kt @@ -199,7 +199,8 @@ interface IrFactory { varargElementType: IrType?, isCrossinline: Boolean, isNoinline: Boolean, - isHidden: Boolean = false + isHidden: Boolean = false, + isAssignable: Boolean = false ): IrValueParameter // Bodies diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrValueParameter.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrValueParameter.kt index dd3db5a6a42..aca9cb2fd47 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrValueParameter.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrValueParameter.kt @@ -39,6 +39,11 @@ abstract class IrValueParameter : IrValueDeclaration(), IrSymbolDeclaration accept(visitor: IrElementVisitor, data: D): R = diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyDeclarationBase.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyDeclarationBase.kt index 8fec4b2a37a..3a8829bc43f 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyDeclarationBase.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyDeclarationBase.kt @@ -32,7 +32,7 @@ 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 + name, -1, type.toIrType(), null, isCrossinline = false, isNoinline = false, isAssignable = false ) fun generateMemberStubs(memberScope: MemberScope, container: MutableList) { diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrBuiltIns.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrBuiltIns.kt index 998fe2ec9e4..4b47ecf8410 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrBuiltIns.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrBuiltIns.kt @@ -80,7 +80,7 @@ class IrBuiltIns( val valueParameterSymbol = IrValueParameterSymbolImpl(valueParameterDescriptor) irFactory.createValueParameter( UNDEFINED_OFFSET, UNDEFINED_OFFSET, BUILTIN_OPERATOR, valueParameterSymbol, Name.identifier("arg$i"), i, - valueParameterType, null, isCrossinline = false, isNoinline = false + valueParameterType, null, isCrossinline = false, isNoinline = false, isAssignable = false ).apply { parent = operator } @@ -165,7 +165,7 @@ class IrBuiltIns( 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 + valueIrType, null, isCrossinline = false, isNoinline = false, isAssignable = false ) valueParameter.parent = operator diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrFunctionFactory.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrFunctionFactory.kt index 30b470ff085..e66d28dfba4 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrFunctionFactory.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrFunctionFactory.kt @@ -268,7 +268,8 @@ class IrFunctionFactory(private val irBuiltIns: IrBuiltIns, private val symbolTa val vDeclaration = irFactory.createValueParameter( offset, offset, classOrigin, vSymbol, Name.special(""), -1, type, null, isCrossinline = false, - isNoinline = false + isNoinline = false, + isAssignable = false ) if (vDescriptor is WrappedReceiverParameterDescriptor) vDescriptor.bind(vDeclaration) @@ -332,7 +333,8 @@ class IrFunctionFactory(private val irBuiltIns: IrBuiltIns, private val symbolTa val vDeclaration = irFactory.createValueParameter( offset, offset, memberOrigin, vSymbol, Name.identifier("p$i"), i - 1, vType, null, isCrossinline = false, - isNoinline = false + isNoinline = false, + isAssignable = false ) vDeclaration.parent = fDeclaration if (vDescriptor is WrappedValueParameterDescriptor) vDescriptor.bind(vDeclaration) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/FakeOverrideCopier.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/FakeOverrideCopier.kt index 2e73d66f715..4bfb6faeeb1 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/FakeOverrideCopier.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/FakeOverrideCopier.kt @@ -95,7 +95,8 @@ class FakeOverrideCopier( declaration.type.remapType(), declaration.varargElementType?.remapType(), declaration.isCrossinline, - declaration.isNoinline + declaration.isNoinline, + false ).apply { transformAnnotations(declaration) // Don't set the default value for fake overrides. diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeclarationStubGenerator.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeclarationStubGenerator.kt index 300442145ba..03da280a824 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeclarationStubGenerator.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeclarationStubGenerator.kt @@ -242,7 +242,7 @@ class DeclarationStubGenerator( internal fun generateValueParameterStub(descriptor: ValueParameterDescriptor): IrValueParameter = with(descriptor) { symbolTable.irFactory.createValueParameter( UNDEFINED_OFFSET, UNDEFINED_OFFSET, computeOrigin(this), IrValueParameterSymbolImpl(this), name, index, type.toIrType(), - varargElementType?.toIrType(), isCrossinline, isNoinline + varargElementType?.toIrType(), isCrossinline, isNoinline, false ).also { irValueParameter -> if (descriptor.declaresDefaultValue()) { irValueParameter.defaultValue = diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt index 11d81fbc943..92396f3fba9 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt @@ -348,7 +348,8 @@ open class DeepCopyIrTreeWithSymbols( declaration.type.remapType(), declaration.varargElementType?.remapType(), declaration.isCrossinline, - declaration.isNoinline + declaration.isNoinline, + false ).apply { transformAnnotations(declaration) defaultValue = declaration.defaultValue?.transform() diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/RenderIrElement.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/RenderIrElement.kt index 2788ef155b7..598cacd0f1e 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/RenderIrElement.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/RenderIrElement.kt @@ -524,7 +524,7 @@ class RenderIrElementVisitor(private val normalizeNames: Boolean = false) : IrEl renderFlagsList( "vararg".takeIf { varargElementType != null }, "crossinline".takeIf { isCrossinline }, - "noinline".takeIf { isNoinline } + "noinline".takeIf { isNoinline }, ) override fun visitLocalDelegatedProperty(declaration: IrLocalDelegatedProperty, data: Nothing?): String = diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt index 62649f7978a..66d89e8e664 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt @@ -896,7 +896,7 @@ class SymbolTable( valueParameterFactory: (IrValueParameterSymbol) -> IrValueParameter = { irFactory.createValueParameter( startOffset, endOffset, origin, it, nameProvider.nameForDeclaration(descriptor), - descriptor.indexOrMinusOne, type, varargElementType, descriptor.isCrossinline, descriptor.isNoinline + descriptor.indexOrMinusOne, type, varargElementType, descriptor.isCrossinline, descriptor.isNoinline, false ) } ): IrValueParameter = diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileDeserializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileDeserializer.kt index c663e12ffeb..c37e866c856 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileDeserializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileDeserializer.kt @@ -1009,7 +1009,8 @@ abstract class IrFileDeserializer( if (proto.hasVarargElementType()) deserializeIrType(proto.varargElementType) else null, flags.isCrossInline, flags.isNoInline, - flags.isHidden + flags.isHidden, + false ).apply { if (proto.hasDefaultValue()) defaultValue = irFactory.createExpressionBody(deserializeExpressionBody(proto.defaultValue)) diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt index 35ee1319393..9f29b0fcd42 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt @@ -379,7 +379,7 @@ interface IrBuilderExtension { fun irValueParameter(descriptor: ParameterDescriptor): IrValueParameter = with(descriptor) { factory.createValueParameter( function.startOffset, function.endOffset, SERIALIZABLE_PLUGIN_ORIGIN, IrValueParameterSymbolImpl(this), - name, indexOrMinusOne, type.toIrType(), varargElementType?.toIrType(), isCrossinline, isNoinline + name, indexOrMinusOne, type.toIrType(), varargElementType?.toIrType(), isCrossinline, isNoinline, false ).also { it.parent = function }