[IR] Make isHidden and isAssignable explicit on IrValueParameter.

There were a couple of places where they were confused and
isAssignable was passed as a positional parameter in the position
of isHidden.
This commit is contained in:
Mads Ager
2020-11-27 12:17:59 +01:00
committed by Alexander Udalov
parent 3dbe02b7fe
commit 5d9e86863a
21 changed files with 44 additions and 25 deletions
@@ -338,7 +338,8 @@ internal fun IrDeclarationParent.declareThisReceiverParameter(
symbolTable.irFactory.createValueParameter( symbolTable.irFactory.createValueParameter(
startOffset, endOffset, thisOrigin, symbol, startOffset, endOffset, thisOrigin, symbol,
Name.special("<this>"), UNDEFINED_PARAMETER_INDEX, thisType, Name.special("<this>"), UNDEFINED_PARAMETER_INDEX, thisType,
varargElementType = null, isCrossinline = false, isNoinline = false, isAssignable = false varargElementType = null, isCrossinline = false, isNoinline = false,
isHidden = false, isAssignable = false
).apply { ).apply {
this.parent = this@declareThisReceiverParameter this.parent = this@declareThisReceiverParameter
receiverDescriptor.bind(this) receiverDescriptor.bind(this)
@@ -269,7 +269,8 @@ class Fir2IrDeclarationStorage(
startOffset, endOffset, IrDeclarationOrigin.DEFINED, symbol, startOffset, endOffset, IrDeclarationOrigin.DEFINED, symbol,
Name.special("<set-?>"), 0, type, Name.special("<set-?>"), 0, type,
varargElementType = null, varargElementType = null,
isCrossinline = false, isNoinline = false, isAssignable = false isCrossinline = false, isNoinline = false,
isHidden = false, isAssignable = false
).apply { ).apply {
this.parent = parent this.parent = parent
descriptor.bind(this) descriptor.bind(this)
@@ -895,7 +896,8 @@ class Fir2IrDeclarationStorage(
valueParameter.name, index, type, valueParameter.name, index, type,
if (!valueParameter.isVararg) null if (!valueParameter.isVararg) null
else valueParameter.returnTypeRef.coneType.arrayElementType()?.toIrType(typeContext), else valueParameter.returnTypeRef.coneType.arrayElementType()?.toIrType(typeContext),
valueParameter.isCrossinline, valueParameter.isNoinline isCrossinline = valueParameter.isCrossinline, isNoinline = valueParameter.isNoinline,
isHidden = false, isAssignable = false
).apply { ).apply {
descriptor.bind(this) descriptor.bind(this)
if (valueParameter.defaultValue.let { if (valueParameter.defaultValue.let {
@@ -266,6 +266,7 @@ internal class AdapterGenerator(
varargElementType = null, varargElementType = null,
isCrossinline = false, isCrossinline = false,
isNoinline = false, isNoinline = false,
isHidden = false,
isAssignable = false isAssignable = false
).also { irAdapterValueParameter -> ).also { irAdapterValueParameter ->
descriptor.bind(irAdapterValueParameter) descriptor.bind(irAdapterValueParameter)
@@ -295,7 +295,7 @@ class DataClassMembersGenerator(val components: Fir2IrComponents) {
) { symbol -> ) { symbol ->
components.irFactory.createValueParameter( components.irFactory.createValueParameter(
UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, symbol, name, index, type, null, UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, symbol, name, index, type, null,
isCrossinline = false, isNoinline = false, isAssignable = false isCrossinline = false, isNoinline = false, isHidden = false, isAssignable = false
) )
}.apply { }.apply {
parent = irFunction parent = irFunction
@@ -144,7 +144,8 @@ fun IrValueParameter.copyTo(
} }
return factory.createValueParameter( return factory.createValueParameter(
startOffset, endOffset, origin, symbol, startOffset, endOffset, origin, symbol,
name, index, type, varargElementType, isCrossinline, isNoinline, isAssignable = isAssignable name, index, type, varargElementType, isCrossinline = isCrossinline,
isNoinline = isNoinline, isHidden = false, isAssignable = isAssignable
).also { ).also {
descriptor.bind(it) descriptor.bind(it)
it.parent = irFunction it.parent = irFunction
@@ -173,7 +174,8 @@ fun IrFunction.copyReceiverParametersFrom(from: IrFunction, substitutionMap: Map
name, index, name, index,
type.substitute(substitutionMap), type.substitute(substitutionMap),
varargElementType?.substitute(substitutionMap), varargElementType?.substitute(substitutionMap),
isCrossinline, isNoinline isCrossinline, isNoinline,
isHidden, isAssignable
).also { parameter -> ).also { parameter ->
parameter.parent = this@copyReceiverParametersFrom parameter.parent = this@copyReceiverParametersFrom
newDescriptor.bind(this) newDescriptor.bind(this)
@@ -428,7 +430,9 @@ fun IrFunction.createDispatchReceiverParameter(origin: IrDeclarationOrigin? = nu
parentAsClass.defaultType, parentAsClass.defaultType,
null, null,
isCrossinline = false, isCrossinline = false,
isNoinline = false isNoinline = false,
isHidden = false,
isAssignable = false
).apply { ).apply {
parent = this@createDispatchReceiverParameter parent = this@createDispatchReceiverParameter
newDescriptor.bind(this) newDescriptor.bind(this)
@@ -211,7 +211,8 @@ fun <D> buildReceiverParameter(
parent.factory.createValueParameter( parent.factory.createValueParameter(
startOffset, endOffset, origin, startOffset, endOffset, origin,
IrValueParameterSymbolImpl(wrappedDescriptor), IrValueParameterSymbolImpl(wrappedDescriptor),
RECEIVER_PARAMETER_NAME, -1, type, null, isCrossinline = false, isNoinline = false, isAssignable = false RECEIVER_PARAMETER_NAME, -1, type, null, isCrossinline = false, isNoinline = false,
isHidden = false, isAssignable = false
).also { ).also {
wrappedDescriptor.bind(it) wrappedDescriptor.bind(it)
it.parent = parent it.parent = parent
@@ -386,7 +386,8 @@ private fun StatementGenerator.createFunctionForSuspendConversion(
) { ) {
context.irFactory.createValueParameter( context.irFactory.createValueParameter(
startOffset, endOffset, IrDeclarationOrigin.ADAPTER_PARAMETER_FOR_SUSPEND_CONVERSION, startOffset, endOffset, IrDeclarationOrigin.ADAPTER_PARAMETER_FOR_SUSPEND_CONVERSION,
it, Name.identifier(name), index, type, varargElementType = null, isCrossinline = false, isNoinline = false it, Name.identifier(name), index, type, varargElementType = null, isCrossinline = false, isNoinline = false,
isHidden = false, isAssignable = false
) )
}.also { }.also {
descriptor.bind(it) descriptor.bind(it)
@@ -383,7 +383,7 @@ class ReflectionReferencesGenerator(statementGenerator: StatementGenerator) : St
name, name,
index, index,
type.toIrType(), type.toIrType(),
varargElementType = null, isCrossinline = false, isNoinline = false, isAssignable = false varargElementType = null, isCrossinline = false, isNoinline = false, isHidden = false, isAssignable = false
).also { irAdapterValueParameter -> ).also { irAdapterValueParameter ->
descriptor.bind(irAdapterValueParameter) descriptor.bind(irAdapterValueParameter)
} }
@@ -74,7 +74,8 @@ class ScriptGenerator(declarationGenerator: DeclarationGenerator) : DeclarationG
origin, symbol, context.symbolTable.nameProvider.nameForDeclaration(descriptor), origin, symbol, context.symbolTable.nameProvider.nameForDeclaration(descriptor),
if (index != -1) index else descriptor.indexOrMinusOne, if (index != -1) index else descriptor.indexOrMinusOne,
type, varargElementType, type, varargElementType,
descriptor.isCrossinline, descriptor.isNoinline, false descriptor.isCrossinline, descriptor.isNoinline,
isHidden = false, isAssignable = false
) )
} .also { it.parent = irScript } } .also { it.parent = irScript }
} }
@@ -39,8 +39,8 @@ class IrValueParameterImpl(
override var varargElementType: IrType?, override var varargElementType: IrType?,
override val isCrossinline: Boolean, override val isCrossinline: Boolean,
override val isNoinline: Boolean, override val isNoinline: Boolean,
override val isHidden: Boolean = false, override val isHidden: Boolean,
override val isAssignable: Boolean = false override val isAssignable: Boolean
) : IrValueParameter() { ) : IrValueParameter() {
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
override val descriptor: ParameterDescriptor override val descriptor: ParameterDescriptor
@@ -41,7 +41,7 @@ internal class PersistentIrValueParameter(
varargElementType: IrType?, varargElementType: IrType?,
override val isCrossinline: Boolean, override val isCrossinline: Boolean,
override val isNoinline: Boolean, override val isNoinline: Boolean,
override val isHidden: Boolean = false, override val isHidden: Boolean,
override val isAssignable: Boolean override val isAssignable: Boolean
) : IrValueParameter(), ) : IrValueParameter(),
PersistentIrDeclarationBase<ValueParameterCarrier>, PersistentIrDeclarationBase<ValueParameterCarrier>,
@@ -199,8 +199,8 @@ interface IrFactory {
varargElementType: IrType?, varargElementType: IrType?,
isCrossinline: Boolean, isCrossinline: Boolean,
isNoinline: Boolean, isNoinline: Boolean,
isHidden: Boolean = false, isHidden: Boolean,
isAssignable: Boolean = false isAssignable: Boolean
): IrValueParameter ): IrValueParameter
// Bodies // Bodies
@@ -32,7 +32,8 @@ interface IrLazyDeclarationBase : IrDeclaration {
fun ReceiverParameterDescriptor.generateReceiverParameterStub(): IrValueParameter = fun ReceiverParameterDescriptor.generateReceiverParameterStub(): IrValueParameter =
factory.createValueParameter( factory.createValueParameter(
UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, IrValueParameterSymbolImpl(this), UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, IrValueParameterSymbolImpl(this),
name, -1, type.toIrType(), null, isCrossinline = false, isNoinline = false, isAssignable = false name, -1, type.toIrType(), null, isCrossinline = false, isNoinline = false,
isHidden = false, isAssignable = false
) )
fun generateMemberStubs(memberScope: MemberScope, container: MutableList<IrDeclaration>) { fun generateMemberStubs(memberScope: MemberScope, container: MutableList<IrDeclaration>) {
@@ -80,7 +80,7 @@ class IrBuiltIns(
val valueParameterSymbol = IrValueParameterSymbolImpl(valueParameterDescriptor) val valueParameterSymbol = IrValueParameterSymbolImpl(valueParameterDescriptor)
irFactory.createValueParameter( irFactory.createValueParameter(
UNDEFINED_OFFSET, UNDEFINED_OFFSET, BUILTIN_OPERATOR, valueParameterSymbol, Name.identifier("arg$i"), i, UNDEFINED_OFFSET, UNDEFINED_OFFSET, BUILTIN_OPERATOR, valueParameterSymbol, Name.identifier("arg$i"), i,
valueParameterType, null, isCrossinline = false, isNoinline = false, isAssignable = false valueParameterType, null, isCrossinline = false, isNoinline = false, isHidden = false, isAssignable = false
).apply { ).apply {
parent = operator parent = operator
} }
@@ -165,7 +165,7 @@ class IrBuiltIns(
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, UNDEFINED_OFFSET, UNDEFINED_OFFSET, BUILTIN_OPERATOR, valueParameterSymbol, Name.identifier("arg0"), 0,
valueIrType, null, isCrossinline = false, isNoinline = false, isAssignable = false valueIrType, null, isCrossinline = false, isNoinline = false, isHidden = false, isAssignable = false
) )
valueParameter.parent = operator valueParameter.parent = operator
@@ -269,6 +269,7 @@ class IrFunctionFactory(private val irBuiltIns: IrBuiltIns, private val symbolTa
offset, offset, classOrigin, vSymbol, Name.special("<this>"), -1, type, null, offset, offset, classOrigin, vSymbol, Name.special("<this>"), -1, type, null,
isCrossinline = false, isCrossinline = false,
isNoinline = false, isNoinline = false,
isHidden = false,
isAssignable = false isAssignable = false
) )
@@ -334,6 +335,7 @@ class IrFunctionFactory(private val irBuiltIns: IrBuiltIns, private val symbolTa
offset, offset, memberOrigin, vSymbol, Name.identifier("p$i"), i - 1, vType, null, offset, offset, memberOrigin, vSymbol, Name.identifier("p$i"), i - 1, vType, null,
isCrossinline = false, isCrossinline = false,
isNoinline = false, isNoinline = false,
isHidden = false,
isAssignable = false isAssignable = false
) )
vDeclaration.parent = fDeclaration vDeclaration.parent = fDeclaration
@@ -366,7 +368,7 @@ class IrFunctionFactory(private val irBuiltIns: IrBuiltIns, private val symbolTa
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), offset, offset, memberOrigin, IrValueParameterSymbolImpl(this), name, indexOrMinusOne, toIrType(type),
(this as? ValueParameterDescriptor)?.varargElementType?.let(::toIrType), isCrossinline, isNoinline (this as? ValueParameterDescriptor)?.varargElementType?.let(::toIrType), isCrossinline, isNoinline, false, false
).also { ).also {
it.parent = this@createValueParameter it.parent = this@createValueParameter
} }
@@ -96,7 +96,8 @@ class FakeOverrideCopier(
declaration.varargElementType?.remapType(), declaration.varargElementType?.remapType(),
declaration.isCrossinline, declaration.isCrossinline,
declaration.isNoinline, declaration.isNoinline,
false declaration.isHidden,
declaration.isAssignable
).apply { ).apply {
transformAnnotations(declaration) transformAnnotations(declaration)
// Don't set the default value for fake overrides. // Don't set the default value for fake overrides.
@@ -246,7 +246,7 @@ class DeclarationStubGenerator(
internal fun generateValueParameterStub(descriptor: ValueParameterDescriptor): IrValueParameter = with(descriptor) { internal fun generateValueParameterStub(descriptor: ValueParameterDescriptor): IrValueParameter = with(descriptor) {
symbolTable.irFactory.createValueParameter( symbolTable.irFactory.createValueParameter(
UNDEFINED_OFFSET, UNDEFINED_OFFSET, computeOrigin(this), IrValueParameterSymbolImpl(this), name, index, type.toIrType(), UNDEFINED_OFFSET, UNDEFINED_OFFSET, computeOrigin(this), IrValueParameterSymbolImpl(this), name, index, type.toIrType(),
varargElementType?.toIrType(), isCrossinline, isNoinline, false varargElementType?.toIrType(), isCrossinline, isNoinline, isHidden = false, isAssignable = false
).also { irValueParameter -> ).also { irValueParameter ->
if (descriptor.declaresDefaultValue()) { if (descriptor.declaresDefaultValue()) {
irValueParameter.defaultValue = irValueParameter.defaultValue =
@@ -351,6 +351,7 @@ open class DeepCopyIrTreeWithSymbols(
declaration.varargElementType?.remapType(), declaration.varargElementType?.remapType(),
declaration.isCrossinline, declaration.isCrossinline,
declaration.isNoinline, declaration.isNoinline,
declaration.isHidden,
declaration.isAssignable declaration.isAssignable
).apply { ).apply {
transformAnnotations(declaration) transformAnnotations(declaration)
@@ -901,7 +901,8 @@ class SymbolTable(
valueParameterFactory: (IrValueParameterSymbol) -> IrValueParameter = { valueParameterFactory: (IrValueParameterSymbol) -> IrValueParameter = {
irFactory.createValueParameter( irFactory.createValueParameter(
startOffset, endOffset, origin, it, name ?: nameProvider.nameForDeclaration(descriptor), startOffset, endOffset, origin, it, name ?: nameProvider.nameForDeclaration(descriptor),
descriptor.indexOrMinusOne, type, varargElementType, descriptor.isCrossinline, descriptor.isNoinline, false descriptor.indexOrMinusOne, type, varargElementType, descriptor.isCrossinline, descriptor.isNoinline,
isHidden = false, isAssignable = false
) )
} }
): IrValueParameter = ): IrValueParameter =
@@ -244,7 +244,8 @@ private fun TranslationPluginContext.declareParameterStub(parameterDescriptor: P
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, UNDEFINED_OFFSET, UNDEFINED_OFFSET, IrDeclarationOrigin.DEFINED, symbol, parameterDescriptor.name,
parameterDescriptor.indexOrMinusOne, type, varargElementType, parameterDescriptor.isCrossinline, parameterDescriptor.isNoinline parameterDescriptor.indexOrMinusOne, type, varargElementType, parameterDescriptor.isCrossinline,
parameterDescriptor.isNoinline, isHidden = false, isAssignable = false
) )
} }
@@ -418,7 +418,8 @@ interface IrBuilderExtension {
fun irValueParameter(descriptor: ParameterDescriptor): IrValueParameter = with(descriptor) { fun irValueParameter(descriptor: ParameterDescriptor): IrValueParameter = with(descriptor) {
factory.createValueParameter( factory.createValueParameter(
function.startOffset, function.endOffset, SERIALIZABLE_PLUGIN_ORIGIN, IrValueParameterSymbolImpl(this), function.startOffset, function.endOffset, SERIALIZABLE_PLUGIN_ORIGIN, IrValueParameterSymbolImpl(this),
name, indexOrMinusOne, type.toIrType(), varargElementType?.toIrType(), isCrossinline, isNoinline, false name, indexOrMinusOne, type.toIrType(), varargElementType?.toIrType(), isCrossinline, isNoinline,
isHidden = false, isAssignable = false
).also { ).also {
it.parent = function it.parent = function
} }