[IR] Add isHidden flag into IrValueParameter

This commit is contained in:
Roman Artemev
2020-09-09 16:15:04 +03:00
parent be16fa76ab
commit 79e2886da1
3 changed files with 10 additions and 3 deletions
@@ -38,7 +38,8 @@ class IrValueParameterImpl(
override val type: IrType, override val type: IrType,
override val varargElementType: IrType?, override val varargElementType: IrType?,
override val isCrossinline: Boolean, override val isCrossinline: Boolean,
override val isNoinline: Boolean override val isNoinline: Boolean,
override val isHidden: Boolean = false
) : IrValueParameter() { ) : IrValueParameter() {
@ObsoleteDescriptorBasedAPI @ObsoleteDescriptorBasedAPI
override val descriptor: ParameterDescriptor override val descriptor: ParameterDescriptor
@@ -40,7 +40,8 @@ internal class PersistentIrValueParameter(
override val type: IrType, override val type: IrType,
override val varargElementType: IrType?, override val varargElementType: IrType?,
override val isCrossinline: Boolean, override val isCrossinline: Boolean,
override val isNoinline: Boolean override val isNoinline: Boolean,
override val isHidden: Boolean = false
) : IrValueParameter(), ) : IrValueParameter(),
PersistentIrDeclarationBase<ValueParameterCarrier>, PersistentIrDeclarationBase<ValueParameterCarrier>,
ValueParameterCarrier { ValueParameterCarrier {
@@ -52,7 +53,7 @@ internal class PersistentIrValueParameter(
init { init {
symbol.bind(this) symbol.bind(this)
} }
override var lastModified: Int = stageController.currentStage override var lastModified: Int = stageController.currentStage
override var loweredUpTo: Int = stageController.currentStage override var loweredUpTo: Int = stageController.currentStage
override var values: Array<Carrier>? = null override var values: Array<Carrier>? = null
@@ -32,6 +32,11 @@ abstract class IrValueParameter : IrValueDeclaration(), IrSymbolDeclaration<IrVa
abstract val varargElementType: IrType? abstract val varargElementType: IrType?
abstract val isCrossinline: Boolean abstract val isCrossinline: Boolean
abstract val isNoinline: Boolean abstract val isNoinline: Boolean
// if true parameter is not included into IdSignature.
// Skipping hidden params makes IrFunction be look similar to FE.
// NOTE: it is introduced to fix KT-40980 because more clear solution was not possible to implement.
// Once we are able to load any top-level declaration from klib this hack should be deprecated and removed.
abstract val isHidden: Boolean
abstract var defaultValue: IrExpressionBody? abstract var defaultValue: IrExpressionBody?