[IR] Make isExternal mutable and accessible via common interface

JS IR: Mark all effectively external declarations as external to access it
directly instead of computing it every time
This commit is contained in:
Svyatoslav Kuzmich
2020-11-11 18:33:08 +03:00
parent 924a7b009b
commit 2a424ad2af
32 changed files with 145 additions and 54 deletions
@@ -39,7 +39,7 @@ internal class PersistentIrClass(
override val isCompanion: Boolean = false,
override val isInner: Boolean = false,
override val isData: Boolean = false,
override val isExternal: Boolean = false,
isExternal: Boolean = false,
override val isInline: Boolean = false,
override val isExpect: Boolean = false,
override val isFun: Boolean = false,
@@ -142,6 +142,16 @@ internal class PersistentIrClass(
}
}
override var isExternalField: Boolean = isExternal
override var isExternal: Boolean
get() = getCarrier().isExternalField
set(v) {
if (isExternal != v) {
setCarrier().isExternalField = v
}
}
override var attributeOwnerIdField: IrAttributeContainer = this
override var attributeOwnerId: IrAttributeContainer
@@ -40,7 +40,7 @@ internal class PersistentIrConstructor(
visibility: DescriptorVisibility,
returnType: IrType,
override val isInline: Boolean,
override val isExternal: Boolean,
isExternal: Boolean,
override val isPrimary: Boolean,
override val isExpect: Boolean,
override val containerSource: DeserializedContainerSource?
@@ -153,6 +153,16 @@ internal class PersistentIrConstructor(
}
}
override var isExternalField: Boolean = isExternal
override var isExternal: Boolean
get() = getCarrier().isExternalField
set(v) {
if (isExternal != v) {
setCarrier().isExternalField = v
}
}
@ObsoleteDescriptorBasedAPI
override val descriptor: ClassConstructorDescriptor
get() = symbol.descriptor
@@ -38,7 +38,7 @@ internal class PersistentIrField(
type: IrType,
override var visibility: DescriptorVisibility,
override val isFinal: Boolean,
override val isExternal: Boolean,
isExternal: Boolean,
override val isStatic: Boolean
) : IrField(),
PersistentIrDeclarationBase<FieldCarrier>,
@@ -104,4 +104,14 @@ internal class PersistentIrField(
setCarrier().typeField = v
}
}
override var isExternalField: Boolean = isExternal
override var isExternal: Boolean
get() = getCarrier().isExternalField
set(v) {
if (isExternal != v) {
setCarrier().isExternalField = v
}
}
}
@@ -31,7 +31,7 @@ internal abstract class PersistentIrFunctionCommon(
visibility: DescriptorVisibility,
returnType: IrType,
override val isInline: Boolean,
override val isExternal: Boolean,
isExternal: Boolean,
override val isTailrec: Boolean,
override val isSuspend: Boolean,
override val isOperator: Boolean,
@@ -173,6 +173,16 @@ internal abstract class PersistentIrFunctionCommon(
setCarrier().correspondingPropertySymbolField = v
}
}
override var isExternalField: Boolean = isExternal
override var isExternal: Boolean
get() = getCarrier().isExternalField
set(v) {
if (isExternal != v) {
setCarrier().isExternalField = v
}
}
}
internal class PersistentIrFunction(
@@ -39,7 +39,7 @@ internal abstract class PersistentIrPropertyCommon(
override val isConst: Boolean,
override val isLateinit: Boolean,
override val isDelegated: Boolean,
override val isExternal: Boolean,
isExternal: Boolean,
override val isExpect: Boolean,
override val containerSource: DeserializedContainerSource?,
) : IrProperty(),
@@ -106,6 +106,16 @@ internal abstract class PersistentIrPropertyCommon(
setCarrier().attributeOwnerIdField = v
}
}
override var isExternalField: Boolean = isExternal
override var isExternal: Boolean
get() = getCarrier().isExternalField
set(v) {
if (isExternal != v) {
setCarrier().isExternalField = v
}
}
}
internal class PersistentIrProperty(
@@ -16,6 +16,7 @@ internal interface ClassCarrier : DeclarationCarrier {
var metadataField: MetadataSource?
var visibilityField: DescriptorVisibility
var modalityField: Modality
var isExternalField: Boolean
var attributeOwnerIdField: IrAttributeContainer
var typeParametersField: List<IrTypeParameter>
var superTypesField: List<IrType>
@@ -32,7 +33,8 @@ internal interface ClassCarrier : DeclarationCarrier {
modalityField,
attributeOwnerIdField,
typeParametersField,
superTypesField
superTypesField,
isExternalField
)
}
}
@@ -48,5 +50,6 @@ internal class ClassCarrierImpl(
override var modalityField: Modality,
override var attributeOwnerIdField: IrAttributeContainer,
override var typeParametersField: List<IrTypeParameter>,
override var superTypesField: List<IrType>
override var superTypesField: List<IrType>,
override var isExternalField: Boolean
) : ClassCarrier
@@ -25,7 +25,8 @@ internal interface ConstructorCarrier : FunctionBaseCarrier {
metadataField,
visibilityField,
typeParametersField,
valueParametersField
valueParametersField,
isExternalField,
)
}
}
@@ -42,5 +43,6 @@ internal class ConstructorCarrierImpl(
override var metadataField: MetadataSource?,
override var visibilityField: DescriptorVisibility,
override var typeParametersField: List<IrTypeParameter>,
override var valueParametersField: List<IrValueParameter>
override var valueParametersField: List<IrValueParameter>,
override var isExternalField: Boolean,
) : ConstructorCarrier
@@ -18,6 +18,7 @@ internal interface FieldCarrier : DeclarationCarrier {
var initializerField: IrExpressionBody?
var correspondingPropertySymbolField: IrPropertySymbol?
var metadataField: MetadataSource?
var isExternalField: Boolean
override fun clone(): FieldCarrier {
return FieldCarrierImpl(
@@ -28,7 +29,8 @@ internal interface FieldCarrier : DeclarationCarrier {
typeField,
initializerField,
correspondingPropertySymbolField,
metadataField
metadataField,
isExternalField,
)
}
}
@@ -41,5 +43,6 @@ internal class FieldCarrierImpl(
override var typeField: IrType,
override var initializerField: IrExpressionBody?,
override var correspondingPropertySymbolField: IrPropertySymbol?,
override var metadataField: MetadataSource?
override var metadataField: MetadataSource?,
override var isExternalField: Boolean
) : FieldCarrier
@@ -21,4 +21,5 @@ internal interface FunctionBaseCarrier : DeclarationCarrier {
var visibilityField: DescriptorVisibility
var typeParametersField: List<IrTypeParameter>
var valueParametersField: List<IrValueParameter>
var isExternalField: Boolean
}
@@ -34,7 +34,8 @@ internal interface FunctionCarrier : FunctionBaseCarrier {
valueParametersField,
correspondingPropertySymbolField,
overriddenSymbolsField,
attributeOwnerIdField
attributeOwnerIdField,
isExternalField,
)
}
}
@@ -54,5 +55,6 @@ internal class FunctionCarrierImpl(
override var valueParametersField: List<IrValueParameter>,
override var correspondingPropertySymbolField: IrPropertySymbol?,
override var overriddenSymbolsField: List<IrSimpleFunctionSymbol>,
override var attributeOwnerIdField: IrAttributeContainer
override var attributeOwnerIdField: IrAttributeContainer,
override var isExternalField: Boolean,
) : FunctionCarrier
@@ -14,6 +14,7 @@ internal interface PropertyCarrier : DeclarationCarrier {
var setterField: IrSimpleFunction?
var metadataField: MetadataSource?
var attributeOwnerIdField: IrAttributeContainer
var isExternalField: Boolean
override fun clone(): PropertyCarrier {
return PropertyCarrierImpl(
@@ -26,6 +27,7 @@ internal interface PropertyCarrier : DeclarationCarrier {
setterField,
metadataField,
attributeOwnerIdField,
isExternalField,
)
}
}
@@ -39,5 +41,6 @@ internal class PropertyCarrierImpl(
override var getterField: IrSimpleFunction?,
override var setterField: IrSimpleFunction?,
override var metadataField: MetadataSource?,
override var attributeOwnerIdField: IrAttributeContainer
override var attributeOwnerIdField: IrAttributeContainer,
override var isExternalField: Boolean
) : PropertyCarrier