IR: make most properties mutable
This commit is contained in:
committed by
Space Team
parent
d2938e732a
commit
22b4b29292
+33
-10
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.fir.lazy
|
||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
||||
import org.jetbrains.kotlin.fir.backend.Fir2IrComponents
|
||||
import org.jetbrains.kotlin.fir.backend.declareThisReceiverParameter
|
||||
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
|
||||
@@ -38,37 +37,58 @@ abstract class AbstractFir2IrLazyFunction<F : FirCallableDeclaration>(
|
||||
override val endOffset: Int,
|
||||
override var origin: IrDeclarationOrigin,
|
||||
override val symbol: IrSimpleFunctionSymbol,
|
||||
override val isFakeOverride: Boolean
|
||||
override var isFakeOverride: Boolean
|
||||
) : IrSimpleFunction(), AbstractFir2IrLazyDeclaration<F>, Fir2IrTypeParametersContainer, IrLazyFunctionBase,
|
||||
Fir2IrComponents by components {
|
||||
|
||||
override lateinit var typeParameters: List<IrTypeParameter>
|
||||
override lateinit var parent: IrDeclarationParent
|
||||
|
||||
override val isTailrec: Boolean
|
||||
override var isTailrec: Boolean
|
||||
get() = fir.isTailRec
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override val isSuspend: Boolean
|
||||
override var isSuspend: Boolean
|
||||
get() = fir.isSuspend
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override val isOperator: Boolean
|
||||
override var isOperator: Boolean
|
||||
get() = fir.isOperator
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override val isInfix: Boolean
|
||||
override var isInfix: Boolean
|
||||
get() = fir.isInfix
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
override val descriptor: FunctionDescriptor
|
||||
get() = symbol.descriptor
|
||||
|
||||
override val isInline: Boolean
|
||||
override var isInline: Boolean
|
||||
get() = fir.isInline
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override val isExternal: Boolean
|
||||
override var isExternal: Boolean
|
||||
get() = fir.isExternal
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override val isExpect: Boolean
|
||||
override var isExpect: Boolean
|
||||
get() = fir.isExpect
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override var body: IrBody? by lazyVar(lock) {
|
||||
if (tryLoadIr()) body else null
|
||||
@@ -78,8 +98,11 @@ abstract class AbstractFir2IrLazyFunction<F : FirCallableDeclaration>(
|
||||
components.visibilityConverter.convertToDescriptorVisibility(fir.visibility)
|
||||
}
|
||||
|
||||
override val modality: Modality
|
||||
override var modality: Modality
|
||||
get() = fir.modality!!
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override var correspondingPropertySymbol: IrPropertySymbol? = null
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.lazy
|
||||
|
||||
import org.jetbrains.kotlin.KtFakeSourceElementKind
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.fir.backend.*
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
@@ -83,29 +82,53 @@ class Fir2IrLazyClass(
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override val kind: ClassKind
|
||||
override var kind: ClassKind
|
||||
get() = fir.classKind
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override val isCompanion: Boolean
|
||||
override var isCompanion: Boolean
|
||||
get() = fir.isCompanion
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override val isInner: Boolean
|
||||
override var isInner: Boolean
|
||||
get() = fir.isInner
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override val isData: Boolean
|
||||
override var isData: Boolean
|
||||
get() = fir.isData
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override val isExternal: Boolean
|
||||
override var isExternal: Boolean
|
||||
get() = fir.isExternal
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override val isValue: Boolean
|
||||
override var isValue: Boolean
|
||||
get() = fir.isInline
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override val isExpect: Boolean
|
||||
override var isExpect: Boolean
|
||||
get() = fir.isExpect
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override val isFun: Boolean
|
||||
override var isFun: Boolean
|
||||
get() = fir.isFun
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override var superTypes: List<IrType> by lazyVar(lock) {
|
||||
fir.superTypeRefs.map { it.toIrType(typeConverter) }
|
||||
|
||||
@@ -46,21 +46,33 @@ class Fir2IrLazyConstructor(
|
||||
override lateinit var typeParameters: List<IrTypeParameter>
|
||||
override lateinit var parent: IrDeclarationParent
|
||||
|
||||
override val isPrimary: Boolean
|
||||
override var isPrimary: Boolean
|
||||
get() = fir.isPrimary
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
override val descriptor: ClassConstructorDescriptor
|
||||
get() = symbol.descriptor
|
||||
|
||||
override val isInline: Boolean
|
||||
override var isInline: Boolean
|
||||
get() = fir.isInline
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override val isExternal: Boolean
|
||||
override var isExternal: Boolean
|
||||
get() = fir.isExternal
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override val isExpect: Boolean
|
||||
override var isExpect: Boolean
|
||||
get() = fir.isExpect
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override var body: IrBody? = null
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ class Fir2IrLazyProperty(
|
||||
override val fir: FirProperty,
|
||||
val containingClass: FirRegularClass?,
|
||||
override val symbol: Fir2IrPropertySymbol,
|
||||
override val isFakeOverride: Boolean
|
||||
override var isFakeOverride: Boolean
|
||||
) : IrProperty(), AbstractFir2IrLazyDeclaration<FirProperty>, Fir2IrComponents by components {
|
||||
init {
|
||||
symbol.bind(this)
|
||||
@@ -53,23 +53,41 @@ class Fir2IrLazyProperty(
|
||||
override val descriptor: PropertyDescriptor
|
||||
get() = symbol.descriptor
|
||||
|
||||
override val isVar: Boolean
|
||||
override var isVar: Boolean
|
||||
get() = fir.isVar
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override val isConst: Boolean
|
||||
override var isConst: Boolean
|
||||
get() = fir.isConst
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override val isLateinit: Boolean
|
||||
override var isLateinit: Boolean
|
||||
get() = fir.isLateInit
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override val isDelegated: Boolean
|
||||
override var isDelegated: Boolean
|
||||
get() = fir.delegate != null
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override val isExternal: Boolean
|
||||
override var isExternal: Boolean
|
||||
get() = fir.isExternal
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override val isExpect: Boolean
|
||||
override var isExpect: Boolean
|
||||
get() = fir.isExpect
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override var name: Name
|
||||
get() = fir.name
|
||||
@@ -83,8 +101,11 @@ class Fir2IrLazyProperty(
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override val modality: Modality
|
||||
override var modality: Modality
|
||||
get() = fir.modality!!
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
private val type: IrType by lazy {
|
||||
with(typeConverter) { fir.returnTypeRef.toIrType() }
|
||||
|
||||
@@ -44,8 +44,11 @@ class Fir2IrLazyPropertyAccessor(
|
||||
get() = firAccessor ?: firParentProperty
|
||||
|
||||
// TODO: investigate why some deserialized properties are inline
|
||||
override val isInline: Boolean
|
||||
override var isInline: Boolean
|
||||
get() = firAccessor?.isInline == true
|
||||
set(_) {
|
||||
error("Mutating Fir2Ir lazy elements is not possible")
|
||||
}
|
||||
|
||||
override var annotations: List<IrConstructorCall> by createLazyAnnotations()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user