From ee58df6b3c3459e335a32ff8f55714b2916085ec Mon Sep 17 00:00:00 2001 From: Nikolay Lunyak Date: Wed, 4 Aug 2021 17:06:59 +0300 Subject: [PATCH] [FIR] Add FirBackingField --- .../fir/java/declarations/FirJavaField.kt | 5 + .../declarations/FirJavaValueParameter.kt | 7 ++ .../fir/declarations/FirBackingField.kt | 61 +++++++++++ .../kotlin/fir/declarations/FirEnumEntry.kt | 3 + .../fir/declarations/FirErrorProperty.kt | 3 + .../kotlin/fir/declarations/FirField.kt | 3 + .../kotlin/fir/declarations/FirProperty.kt | 3 + .../fir/declarations/FirValueParameter.kt | 3 + .../kotlin/fir/declarations/FirVariable.kt | 3 + .../builder/FirBackingFieldBuilder.kt | 75 +++++++++++++ .../FirDefaultSetterValueParameterBuilder.kt | 3 + .../builder/FirEnumEntryBuilder.kt | 3 + .../builder/FirErrorPropertyBuilder.kt | 3 + .../declarations/builder/FirFieldBuilder.kt | 3 + .../builder/FirPropertyBuilder.kt | 4 + .../builder/FirValueParameterBuilder.kt | 4 + .../declarations/impl/FirBackingFieldImpl.kt | 102 ++++++++++++++++++ .../impl/FirDefaultSetterValueParameter.kt | 9 ++ .../fir/declarations/impl/FirEnumEntryImpl.kt | 9 ++ .../declarations/impl/FirErrorPropertyImpl.kt | 9 ++ .../fir/declarations/impl/FirFieldImpl.kt | 9 ++ .../fir/declarations/impl/FirPropertyImpl.kt | 9 ++ .../impl/FirValueParameterImpl.kt | 9 ++ .../kotlin/fir/visitors/FirTransformer.kt | 9 ++ .../kotlin/fir/visitors/FirVisitor.kt | 3 + .../kotlin/fir/visitors/FirVisitorVoid.kt | 9 ++ .../synthetic/FirSyntheticProperty.kt | 5 + .../fir/symbols/impl/FirFunctionSymbol.kt | 3 + .../fir/tree/generator/FirTreeBuilder.kt | 1 + .../fir/tree/generator/NodeConfigurator.kt | 15 +++ 30 files changed, 387 insertions(+) create mode 100644 compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirBackingField.kt create mode 100644 compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirBackingFieldBuilder.kt create mode 100644 compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirBackingFieldImpl.kt diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt index 36df4a72a19..15b2f8afe6e 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt @@ -55,6 +55,7 @@ class FirJavaField @FirImplementationDetail constructor( override val isVal: Boolean get() = !isVar override val getter: FirPropertyAccessor? get() = null override val setter: FirPropertyAccessor? get() = null + override val backingField: FirBackingField? = null override val origin: FirDeclarationOrigin get() = FirDeclarationOrigin.Java @@ -78,6 +79,10 @@ class FirJavaField @FirImplementationDetail constructor( return this } + override fun transformBackingField(transformer: FirTransformer, data: D): FirField { + return this + } + override fun transformOtherChildren(transformer: FirTransformer, data: D): FirField { transformAnnotations(transformer, data) initializer = initializer?.transformSingle(transformer, data) diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaValueParameter.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaValueParameter.kt index fb8d33620e6..89fced2261a 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaValueParameter.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaValueParameter.kt @@ -79,6 +79,9 @@ class FirJavaValueParameter @FirImplementationDetail constructor( override val setter: FirPropertyAccessor? get() = null + override val backingField: FirBackingField? + get() = null + override val controlFlowGraphReference: FirControlFlowGraphReference? get() = null @@ -131,6 +134,10 @@ class FirJavaValueParameter @FirImplementationDetail constructor( return this } + override fun transformBackingField(transformer: FirTransformer, data: D): FirValueParameter { + return this + } + override fun transformAnnotations(transformer: FirTransformer, data: D): FirValueParameter { return this } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirBackingField.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirBackingField.kt new file mode 100644 index 00000000000..020929f7fee --- /dev/null +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirBackingField.kt @@ -0,0 +1,61 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.fir.declarations + +import org.jetbrains.kotlin.fir.FirElement +import org.jetbrains.kotlin.fir.FirModuleData +import org.jetbrains.kotlin.fir.FirSourceElement +import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall +import org.jetbrains.kotlin.fir.expressions.FirExpression +import org.jetbrains.kotlin.fir.expressions.FirStatement +import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirPropertyFieldDeclarationSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol +import org.jetbrains.kotlin.fir.types.FirTypeRef +import org.jetbrains.kotlin.fir.visitors.* + +/* + * This file was generated automatically + * DO NOT MODIFY IT MANUALLY + */ + +abstract class FirBackingField : FirTypedDeclaration(), FirTypeParametersOwner, FirStatement { + abstract override val source: FirSourceElement? + abstract override val moduleData: FirModuleData + abstract override val resolvePhase: FirResolvePhase + abstract override val origin: FirDeclarationOrigin + abstract override val attributes: FirDeclarationAttributes + abstract override val returnTypeRef: FirTypeRef + abstract override val symbol: FirPropertyFieldDeclarationSymbol + abstract val backingFieldSymbol: FirBackingFieldSymbol? + abstract val propertySymbol: FirPropertySymbol? + abstract val initializer: FirExpression? + abstract override val annotations: List + abstract override val typeParameters: List + abstract val status: FirDeclarationStatus + + override fun accept(visitor: FirVisitor, data: D): R = visitor.visitBackingField(this, data) + + @Suppress("UNCHECKED_CAST") + override fun transform(transformer: FirTransformer, data: D): E = + transformer.transformBackingField(this, data) as E + + abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + + abstract override fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef) + + abstract fun replaceInitializer(newInitializer: FirExpression?) + + abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirBackingField + + abstract fun transformInitializer(transformer: FirTransformer, data: D): FirBackingField + + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirBackingField + + abstract override fun transformTypeParameters(transformer: FirTransformer, data: D): FirBackingField + + abstract fun transformStatus(transformer: FirTransformer, data: D): FirBackingField +} diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt index 80018a92669..0779bedd038 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt @@ -42,6 +42,7 @@ abstract class FirEnumEntry : FirVariable() { abstract override val isVal: Boolean abstract override val getter: FirPropertyAccessor? abstract override val setter: FirPropertyAccessor? + abstract override val backingField: FirBackingField? abstract override val annotations: List abstract override val symbol: FirEnumEntrySymbol @@ -77,6 +78,8 @@ abstract class FirEnumEntry : FirVariable() { abstract override fun transformSetter(transformer: FirTransformer, data: D): FirEnumEntry + abstract override fun transformBackingField(transformer: FirTransformer, data: D): FirEnumEntry + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirEnumEntry abstract override fun transformOtherChildren(transformer: FirTransformer, data: D): FirEnumEntry diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorProperty.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorProperty.kt index 601ceb4de87..6759a2c1c58 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorProperty.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorProperty.kt @@ -44,6 +44,7 @@ abstract class FirErrorProperty : FirVariable(), FirDiagnosticHolder { abstract override val isVal: Boolean abstract override val getter: FirPropertyAccessor? abstract override val setter: FirPropertyAccessor? + abstract override val backingField: FirBackingField? abstract override val annotations: List abstract override val diagnostic: ConeDiagnostic abstract override val symbol: FirErrorPropertySymbol @@ -80,6 +81,8 @@ abstract class FirErrorProperty : FirVariable(), FirDiagnosticHolder { abstract override fun transformSetter(transformer: FirTransformer, data: D): FirErrorProperty + abstract override fun transformBackingField(transformer: FirTransformer, data: D): FirErrorProperty + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirErrorProperty abstract override fun transformOtherChildren(transformer: FirTransformer, data: D): FirErrorProperty diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirField.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirField.kt index fa4cc05dcb7..aa182001330 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirField.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirField.kt @@ -42,6 +42,7 @@ abstract class FirField : FirVariable() { abstract override val isVal: Boolean abstract override val getter: FirPropertyAccessor? abstract override val setter: FirPropertyAccessor? + abstract override val backingField: FirBackingField? abstract override val annotations: List abstract override val symbol: FirFieldSymbol @@ -77,6 +78,8 @@ abstract class FirField : FirVariable() { abstract override fun transformSetter(transformer: FirTransformer, data: D): FirField + abstract override fun transformBackingField(transformer: FirTransformer, data: D): FirField + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirField abstract override fun transformOtherChildren(transformer: FirTransformer, data: D): FirField diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirProperty.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirProperty.kt index e2805310e52..1b190be7d9c 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirProperty.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirProperty.kt @@ -44,6 +44,7 @@ abstract class FirProperty : FirVariable(), FirTypeParametersOwner, FirControlFl abstract override val isVal: Boolean abstract override val getter: FirPropertyAccessor? abstract override val setter: FirPropertyAccessor? + abstract override val backingField: FirBackingField? abstract override val annotations: List abstract override val controlFlowGraphReference: FirControlFlowGraphReference? abstract override val symbol: FirPropertySymbol @@ -87,6 +88,8 @@ abstract class FirProperty : FirVariable(), FirTypeParametersOwner, FirControlFl abstract override fun transformSetter(transformer: FirTransformer, data: D): FirProperty + abstract override fun transformBackingField(transformer: FirTransformer, data: D): FirProperty + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirProperty abstract override fun transformTypeParameters(transformer: FirTransformer, data: D): FirProperty diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt index 15cc0902aa6..10a2fa55800 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt @@ -43,6 +43,7 @@ abstract class FirValueParameter : FirVariable(), FirControlFlowGraphOwner { abstract override val isVal: Boolean abstract override val getter: FirPropertyAccessor? abstract override val setter: FirPropertyAccessor? + abstract override val backingField: FirBackingField? abstract override val annotations: List abstract override val controlFlowGraphReference: FirControlFlowGraphReference? abstract override val symbol: FirValueParameterSymbol @@ -85,6 +86,8 @@ abstract class FirValueParameter : FirVariable(), FirControlFlowGraphOwner { abstract override fun transformSetter(transformer: FirTransformer, data: D): FirValueParameter + abstract override fun transformBackingField(transformer: FirTransformer, data: D): FirValueParameter + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirValueParameter abstract override fun transformOtherChildren(transformer: FirTransformer, data: D): FirValueParameter diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt index df2f8039781..3791d65d506 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt @@ -44,6 +44,7 @@ sealed class FirVariable : FirCallableDeclaration(), FirStatement { abstract val isVal: Boolean abstract val getter: FirPropertyAccessor? abstract val setter: FirPropertyAccessor? + abstract val backingField: FirBackingField? abstract override val annotations: List override fun accept(visitor: FirVisitor, data: D): R = visitor.visitVariable(this, data) @@ -78,6 +79,8 @@ sealed class FirVariable : FirCallableDeclaration(), FirStatement { abstract fun transformSetter(transformer: FirTransformer, data: D): FirVariable + abstract fun transformBackingField(transformer: FirTransformer, data: D): FirVariable + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirVariable abstract fun transformOtherChildren(transformer: FirTransformer, data: D): FirVariable diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirBackingFieldBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirBackingFieldBuilder.kt new file mode 100644 index 00000000000..449de655299 --- /dev/null +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirBackingFieldBuilder.kt @@ -0,0 +1,75 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.fir.declarations.builder + +import kotlin.contracts.* +import org.jetbrains.kotlin.fir.FirModuleData +import org.jetbrains.kotlin.fir.FirSourceElement +import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder +import org.jetbrains.kotlin.fir.builder.FirBuilderDsl +import org.jetbrains.kotlin.fir.declarations.FirBackingField +import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes +import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin +import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus +import org.jetbrains.kotlin.fir.declarations.FirResolvePhase +import org.jetbrains.kotlin.fir.declarations.FirTypeParameter +import org.jetbrains.kotlin.fir.declarations.impl.FirBackingFieldImpl +import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall +import org.jetbrains.kotlin.fir.expressions.FirExpression +import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirPropertyFieldDeclarationSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol +import org.jetbrains.kotlin.fir.types.FirTypeRef +import org.jetbrains.kotlin.fir.visitors.* + +/* + * This file was generated automatically + * DO NOT MODIFY IT MANUALLY + */ + +@FirBuilderDsl +class FirBackingFieldBuilder : FirAnnotationContainerBuilder { + override var source: FirSourceElement? = null + lateinit var moduleData: FirModuleData + var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR + lateinit var origin: FirDeclarationOrigin + var attributes: FirDeclarationAttributes = FirDeclarationAttributes() + lateinit var returnTypeRef: FirTypeRef + lateinit var symbol: FirPropertyFieldDeclarationSymbol + var backingFieldSymbol: FirBackingFieldSymbol? = null + var propertySymbol: FirPropertySymbol? = null + var initializer: FirExpression? = null + override val annotations: MutableList = mutableListOf() + val typeParameters: MutableList = mutableListOf() + lateinit var status: FirDeclarationStatus + + override fun build(): FirBackingField { + return FirBackingFieldImpl( + source, + moduleData, + resolvePhase, + origin, + attributes, + returnTypeRef, + symbol, + backingFieldSymbol, + propertySymbol, + initializer, + annotations, + typeParameters, + status, + ) + } + +} + +@OptIn(ExperimentalContracts::class) +inline fun buildBackingField(init: FirBackingFieldBuilder.() -> Unit): FirBackingField { + contract { + callsInPlace(init, kotlin.contracts.InvocationKind.EXACTLY_ONCE) + } + return FirBackingFieldBuilder().apply(init).build() +} diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirDefaultSetterValueParameterBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirDefaultSetterValueParameterBuilder.kt index 0ee40c07f5b..d09a2211963 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirDefaultSetterValueParameterBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirDefaultSetterValueParameterBuilder.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite +import org.jetbrains.kotlin.fir.declarations.FirBackingField import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -53,6 +54,7 @@ class FirDefaultSetterValueParameterBuilder : FirAnnotationContainerBuilder { var isVal: Boolean = true var getter: FirPropertyAccessor? = null var setter: FirPropertyAccessor? = null + var backingField: FirBackingField? = null override val annotations: MutableList = mutableListOf() lateinit var symbol: FirValueParameterSymbol var defaultValue: FirExpression? = null @@ -78,6 +80,7 @@ class FirDefaultSetterValueParameterBuilder : FirAnnotationContainerBuilder { isVal, getter, setter, + backingField, annotations, symbol, defaultValue, diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirEnumEntryBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirEnumEntryBuilder.kt index d1a80c7187b..05f4a93aa4d 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirEnumEntryBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirEnumEntryBuilder.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite +import org.jetbrains.kotlin.fir.declarations.FirBackingField import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -48,6 +49,7 @@ class FirEnumEntryBuilder : FirAnnotationContainerBuilder { var dispatchReceiverType: ConeKotlinType? = null lateinit var name: Name var initializer: FirExpression? = null + var backingField: FirBackingField? = null override val annotations: MutableList = mutableListOf() lateinit var symbol: FirEnumEntrySymbol @@ -66,6 +68,7 @@ class FirEnumEntryBuilder : FirAnnotationContainerBuilder { dispatchReceiverType, name, initializer, + backingField, annotations, symbol, ) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirErrorPropertyBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirErrorPropertyBuilder.kt index de706b1fa06..e59698ea2aa 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirErrorPropertyBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirErrorPropertyBuilder.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite +import org.jetbrains.kotlin.fir.declarations.FirBackingField import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -47,6 +48,7 @@ class FirErrorPropertyBuilder : FirAnnotationContainerBuilder { var containerSource: DeserializedContainerSource? = null var dispatchReceiverType: ConeKotlinType? = null lateinit var name: Name + var backingField: FirBackingField? = null override val annotations: MutableList = mutableListOf() lateinit var diagnostic: ConeDiagnostic lateinit var symbol: FirErrorPropertySymbol @@ -62,6 +64,7 @@ class FirErrorPropertyBuilder : FirAnnotationContainerBuilder { containerSource, dispatchReceiverType, name, + backingField, annotations, diagnostic, symbol, diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirFieldBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirFieldBuilder.kt index dcb7ea60c46..b72c3b59921 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirFieldBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirFieldBuilder.kt @@ -12,6 +12,7 @@ import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite +import org.jetbrains.kotlin.fir.declarations.FirBackingField import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -51,6 +52,7 @@ open class FirFieldBuilder : FirDeclarationBuilder, FirAnnotationContainerBuilde open lateinit var name: Name open var initializer: FirExpression? = null open var isVar: Boolean by kotlin.properties.Delegates.notNull() + open var backingField: FirBackingField? = null override val annotations: MutableList = mutableListOf() open lateinit var symbol: FirFieldSymbol @@ -71,6 +73,7 @@ open class FirFieldBuilder : FirDeclarationBuilder, FirAnnotationContainerBuilde name, initializer, isVar, + backingField, annotations, symbol, ) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPropertyBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPropertyBuilder.kt index e35ff7b2243..93671b003b3 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPropertyBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPropertyBuilder.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite +import org.jetbrains.kotlin.fir.declarations.FirBackingField import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -58,6 +59,7 @@ class FirPropertyBuilder : FirDeclarationBuilder, FirTypeParametersOwnerBuilder, var isVar: Boolean by kotlin.properties.Delegates.notNull() var getter: FirPropertyAccessor? = null var setter: FirPropertyAccessor? = null + var backingField: FirBackingField? = null override val annotations: MutableList = mutableListOf() lateinit var symbol: FirPropertySymbol var delegateFieldSymbol: FirDelegateFieldSymbol? = null @@ -84,6 +86,7 @@ class FirPropertyBuilder : FirDeclarationBuilder, FirTypeParametersOwnerBuilder, isVar, getter, setter, + backingField, annotations, symbol, delegateFieldSymbol, @@ -126,6 +129,7 @@ inline fun buildPropertyCopy(original: FirProperty, init: FirPropertyBuilder.() copyBuilder.isVar = original.isVar copyBuilder.getter = original.getter copyBuilder.setter = original.setter + copyBuilder.backingField = original.backingField copyBuilder.annotations.addAll(original.annotations) copyBuilder.symbol = original.symbol copyBuilder.delegateFieldSymbol = original.delegateFieldSymbol diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirValueParameterBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirValueParameterBuilder.kt index ae4cfc22202..60d543b2f5e 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirValueParameterBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirValueParameterBuilder.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite +import org.jetbrains.kotlin.fir.declarations.FirBackingField import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -47,6 +48,7 @@ open class FirValueParameterBuilder : FirAnnotationContainerBuilder { open var containerSource: DeserializedContainerSource? = null open var dispatchReceiverType: ConeKotlinType? = null open lateinit var name: Name + open var backingField: FirBackingField? = null override val annotations: MutableList = mutableListOf() open lateinit var symbol: FirValueParameterSymbol open var defaultValue: FirExpression? = null @@ -66,6 +68,7 @@ open class FirValueParameterBuilder : FirAnnotationContainerBuilder { containerSource, dispatchReceiverType, name, + backingField, annotations, symbol, defaultValue, @@ -101,6 +104,7 @@ inline fun buildValueParameterCopy(original: FirValueParameter, init: FirValuePa copyBuilder.containerSource = original.containerSource copyBuilder.dispatchReceiverType = original.dispatchReceiverType copyBuilder.name = original.name + copyBuilder.backingField = original.backingField copyBuilder.annotations.addAll(original.annotations) copyBuilder.symbol = original.symbol copyBuilder.defaultValue = original.defaultValue diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirBackingFieldImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirBackingFieldImpl.kt new file mode 100644 index 00000000000..700470b4265 --- /dev/null +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirBackingFieldImpl.kt @@ -0,0 +1,102 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.fir.declarations.impl + +import org.jetbrains.kotlin.fir.FirModuleData +import org.jetbrains.kotlin.fir.FirSourceElement +import org.jetbrains.kotlin.fir.declarations.FirBackingField +import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes +import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin +import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus +import org.jetbrains.kotlin.fir.declarations.FirResolvePhase +import org.jetbrains.kotlin.fir.declarations.FirTypeParameter +import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall +import org.jetbrains.kotlin.fir.expressions.FirExpression +import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirPropertyFieldDeclarationSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol +import org.jetbrains.kotlin.fir.types.FirTypeRef +import org.jetbrains.kotlin.fir.visitors.* + +/* + * This file was generated automatically + * DO NOT MODIFY IT MANUALLY + */ + +internal class FirBackingFieldImpl( + override val source: FirSourceElement?, + override val moduleData: FirModuleData, + @Volatile + override var resolvePhase: FirResolvePhase, + override val origin: FirDeclarationOrigin, + override val attributes: FirDeclarationAttributes, + override var returnTypeRef: FirTypeRef, + override val symbol: FirPropertyFieldDeclarationSymbol, + override val backingFieldSymbol: FirBackingFieldSymbol?, + override val propertySymbol: FirPropertySymbol?, + override var initializer: FirExpression?, + override val annotations: MutableList, + override val typeParameters: MutableList, + override var status: FirDeclarationStatus, +) : FirBackingField() { + init { + symbol.bind(this) + } + + override fun acceptChildren(visitor: FirVisitor, data: D) { + returnTypeRef.accept(visitor, data) + initializer?.accept(visitor, data) + annotations.forEach { it.accept(visitor, data) } + typeParameters.forEach { it.accept(visitor, data) } + status.accept(visitor, data) + } + + override fun transformChildren(transformer: FirTransformer, data: D): FirBackingFieldImpl { + transformReturnTypeRef(transformer, data) + transformInitializer(transformer, data) + transformAnnotations(transformer, data) + transformTypeParameters(transformer, data) + transformStatus(transformer, data) + return this + } + + override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirBackingFieldImpl { + returnTypeRef = returnTypeRef.transform(transformer, data) + return this + } + + override fun transformInitializer(transformer: FirTransformer, data: D): FirBackingFieldImpl { + initializer = initializer?.transform(transformer, data) + return this + } + + override fun transformAnnotations(transformer: FirTransformer, data: D): FirBackingFieldImpl { + annotations.transformInplace(transformer, data) + return this + } + + override fun transformTypeParameters(transformer: FirTransformer, data: D): FirBackingFieldImpl { + typeParameters.transformInplace(transformer, data) + return this + } + + override fun transformStatus(transformer: FirTransformer, data: D): FirBackingFieldImpl { + status = status.transform(transformer, data) + return this + } + + override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) { + resolvePhase = newResolvePhase + } + + override fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef) { + returnTypeRef = newReturnTypeRef + } + + override fun replaceInitializer(newInitializer: FirExpression?) { + initializer = newInitializer + } +} diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt index fd08b563f69..28e7abd7e0c 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations.impl import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite +import org.jetbrains.kotlin.fir.declarations.FirBackingField import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -49,6 +50,7 @@ internal class FirDefaultSetterValueParameter( override val isVal: Boolean, override var getter: FirPropertyAccessor?, override var setter: FirPropertyAccessor?, + override var backingField: FirBackingField?, override val annotations: MutableList, override val symbol: FirValueParameterSymbol, override var defaultValue: FirExpression?, @@ -73,6 +75,7 @@ internal class FirDefaultSetterValueParameter( delegate?.accept(visitor, data) getter?.accept(visitor, data) setter?.accept(visitor, data) + backingField?.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } controlFlowGraphReference?.accept(visitor, data) defaultValue?.accept(visitor, data) @@ -86,6 +89,7 @@ internal class FirDefaultSetterValueParameter( transformDelegate(transformer, data) transformGetter(transformer, data) transformSetter(transformer, data) + transformBackingField(transformer, data) transformOtherChildren(transformer, data) return this } @@ -129,6 +133,11 @@ internal class FirDefaultSetterValueParameter( return this } + override fun transformBackingField(transformer: FirTransformer, data: D): FirDefaultSetterValueParameter { + backingField = backingField?.transform(transformer, data) + return this + } + override fun transformAnnotations(transformer: FirTransformer, data: D): FirDefaultSetterValueParameter { annotations.transformInplace(transformer, data) return this diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirEnumEntryImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirEnumEntryImpl.kt index c2d88052f86..dbf3430586c 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirEnumEntryImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirEnumEntryImpl.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations.impl import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite +import org.jetbrains.kotlin.fir.declarations.FirBackingField import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -44,6 +45,7 @@ internal class FirEnumEntryImpl( override val dispatchReceiverType: ConeKotlinType?, override val name: Name, override var initializer: FirExpression?, + override var backingField: FirBackingField?, override val annotations: MutableList, override val symbol: FirEnumEntrySymbol, ) : FirEnumEntry() { @@ -63,6 +65,7 @@ internal class FirEnumEntryImpl( typeParameters.forEach { it.accept(visitor, data) } status.accept(visitor, data) initializer?.accept(visitor, data) + backingField?.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } } @@ -71,6 +74,7 @@ internal class FirEnumEntryImpl( transformTypeParameters(transformer, data) transformStatus(transformer, data) transformInitializer(transformer, data) + transformBackingField(transformer, data) transformOtherChildren(transformer, data) return this } @@ -111,6 +115,11 @@ internal class FirEnumEntryImpl( return this } + override fun transformBackingField(transformer: FirTransformer, data: D): FirEnumEntryImpl { + backingField = backingField?.transform(transformer, data) + return this + } + override fun transformAnnotations(transformer: FirTransformer, data: D): FirEnumEntryImpl { annotations.transformInplace(transformer, data) return this diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirErrorPropertyImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirErrorPropertyImpl.kt index 169d36dec36..2d7edb2a010 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirErrorPropertyImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirErrorPropertyImpl.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations.impl import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite +import org.jetbrains.kotlin.fir.declarations.FirBackingField import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -43,6 +44,7 @@ internal class FirErrorPropertyImpl( override val containerSource: DeserializedContainerSource?, override val dispatchReceiverType: ConeKotlinType?, override val name: Name, + override var backingField: FirBackingField?, override val annotations: MutableList, override val diagnostic: ConeDiagnostic, override val symbol: FirErrorPropertySymbol, @@ -65,12 +67,14 @@ internal class FirErrorPropertyImpl( override fun acceptChildren(visitor: FirVisitor, data: D) { returnTypeRef.accept(visitor, data) status.accept(visitor, data) + backingField?.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } } override fun transformChildren(transformer: FirTransformer, data: D): FirErrorPropertyImpl { transformReturnTypeRef(transformer, data) transformStatus(transformer, data) + transformBackingField(transformer, data) transformOtherChildren(transformer, data) return this } @@ -109,6 +113,11 @@ internal class FirErrorPropertyImpl( return this } + override fun transformBackingField(transformer: FirTransformer, data: D): FirErrorPropertyImpl { + backingField = backingField?.transform(transformer, data) + return this + } + override fun transformAnnotations(transformer: FirTransformer, data: D): FirErrorPropertyImpl { annotations.transformInplace(transformer, data) return this diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirFieldImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirFieldImpl.kt index d6da034a14d..3fc3ed70ff1 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirFieldImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirFieldImpl.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.fir.FirImplementationDetail import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite +import org.jetbrains.kotlin.fir.declarations.FirBackingField import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -46,6 +47,7 @@ class FirFieldImpl @FirImplementationDetail constructor( override val name: Name, override var initializer: FirExpression?, override val isVar: Boolean, + override var backingField: FirBackingField?, override val annotations: MutableList, override val symbol: FirFieldSymbol, ) : FirField() { @@ -64,6 +66,7 @@ class FirFieldImpl @FirImplementationDetail constructor( typeParameters.forEach { it.accept(visitor, data) } status.accept(visitor, data) initializer?.accept(visitor, data) + backingField?.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } } @@ -72,6 +75,7 @@ class FirFieldImpl @FirImplementationDetail constructor( transformTypeParameters(transformer, data) transformStatus(transformer, data) transformInitializer(transformer, data) + transformBackingField(transformer, data) transformOtherChildren(transformer, data) return this } @@ -112,6 +116,11 @@ class FirFieldImpl @FirImplementationDetail constructor( return this } + override fun transformBackingField(transformer: FirTransformer, data: D): FirFieldImpl { + backingField = backingField?.transform(transformer, data) + return this + } + override fun transformAnnotations(transformer: FirTransformer, data: D): FirFieldImpl { annotations.transformInplace(transformer, data) return this diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyImpl.kt index 343ded2a614..f50611adfbc 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyImpl.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations.impl import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite +import org.jetbrains.kotlin.fir.declarations.FirBackingField import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -52,6 +53,7 @@ internal class FirPropertyImpl( override val isVar: Boolean, override var getter: FirPropertyAccessor?, override var setter: FirPropertyAccessor?, + override var backingField: FirBackingField?, override val annotations: MutableList, override val symbol: FirPropertySymbol, override val delegateFieldSymbol: FirDelegateFieldSymbol?, @@ -77,6 +79,7 @@ internal class FirPropertyImpl( delegate?.accept(visitor, data) getter?.accept(visitor, data) setter?.accept(visitor, data) + backingField?.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } controlFlowGraphReference?.accept(visitor, data) typeParameters.forEach { it.accept(visitor, data) } @@ -90,6 +93,7 @@ internal class FirPropertyImpl( transformDelegate(transformer, data) transformGetter(transformer, data) transformSetter(transformer, data) + transformBackingField(transformer, data) transformTypeParameters(transformer, data) transformOtherChildren(transformer, data) return this @@ -130,6 +134,11 @@ internal class FirPropertyImpl( return this } + override fun transformBackingField(transformer: FirTransformer, data: D): FirPropertyImpl { + backingField = backingField?.transform(transformer, data) + return this + } + override fun transformAnnotations(transformer: FirTransformer, data: D): FirPropertyImpl { annotations.transformInplace(transformer, data) return this diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt index e0e79b8d714..56b5cf37a16 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations.impl import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite +import org.jetbrains.kotlin.fir.declarations.FirBackingField import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -43,6 +44,7 @@ internal class FirValueParameterImpl( override val containerSource: DeserializedContainerSource?, override val dispatchReceiverType: ConeKotlinType?, override val name: Name, + override var backingField: FirBackingField?, override val annotations: MutableList, override val symbol: FirValueParameterSymbol, override var defaultValue: FirExpression?, @@ -68,6 +70,7 @@ internal class FirValueParameterImpl( override fun acceptChildren(visitor: FirVisitor, data: D) { returnTypeRef.accept(visitor, data) status.accept(visitor, data) + backingField?.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } controlFlowGraphReference?.accept(visitor, data) defaultValue?.accept(visitor, data) @@ -76,6 +79,7 @@ internal class FirValueParameterImpl( override fun transformChildren(transformer: FirTransformer, data: D): FirValueParameterImpl { transformReturnTypeRef(transformer, data) transformStatus(transformer, data) + transformBackingField(transformer, data) transformOtherChildren(transformer, data) return this } @@ -114,6 +118,11 @@ internal class FirValueParameterImpl( return this } + override fun transformBackingField(transformer: FirTransformer, data: D): FirValueParameterImpl { + backingField = backingField?.transform(transformer, data) + return this + } + override fun transformAnnotations(transformer: FirTransformer, data: D): FirValueParameterImpl { annotations.transformInplace(transformer, data) return this diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt index b74a0e82483..bde4a259cff 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt @@ -40,6 +40,7 @@ import org.jetbrains.kotlin.fir.declarations.FirFunction import org.jetbrains.kotlin.fir.declarations.FirContractDescriptionOwner import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor +import org.jetbrains.kotlin.fir.declarations.FirBackingField import org.jetbrains.kotlin.fir.declarations.FirConstructor import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.FirPackageDirective @@ -280,6 +281,10 @@ abstract class FirTransformer : FirVisitor() { return transformElement(propertyAccessor, data) } + open fun transformBackingField(backingField: FirBackingField, data: D): FirStatement { + return transformElement(backingField, data) + } + open fun transformConstructor(constructor: FirConstructor, data: D): FirStatement { return transformElement(constructor, data) } @@ -796,6 +801,10 @@ abstract class FirTransformer : FirVisitor() { return transformPropertyAccessor(propertyAccessor, data) } + final override fun visitBackingField(backingField: FirBackingField, data: D): FirStatement { + return transformBackingField(backingField, data) + } + final override fun visitConstructor(constructor: FirConstructor, data: D): FirStatement { return transformConstructor(constructor, data) } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt index 31284bca147..edc4587e4c3 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt @@ -40,6 +40,7 @@ import org.jetbrains.kotlin.fir.declarations.FirFunction import org.jetbrains.kotlin.fir.declarations.FirContractDescriptionOwner import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor +import org.jetbrains.kotlin.fir.declarations.FirBackingField import org.jetbrains.kotlin.fir.declarations.FirConstructor import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.FirPackageDirective @@ -211,6 +212,8 @@ abstract class FirVisitor { open fun visitPropertyAccessor(propertyAccessor: FirPropertyAccessor, data: D): R = visitElement(propertyAccessor, data) + open fun visitBackingField(backingField: FirBackingField, data: D): R = visitElement(backingField, data) + open fun visitConstructor(constructor: FirConstructor, data: D): R = visitElement(constructor, data) open fun visitFile(file: FirFile, data: D): R = visitElement(file, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt index a9e4c5c7099..aadd0ce937e 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt @@ -40,6 +40,7 @@ import org.jetbrains.kotlin.fir.declarations.FirFunction import org.jetbrains.kotlin.fir.declarations.FirContractDescriptionOwner import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor +import org.jetbrains.kotlin.fir.declarations.FirBackingField import org.jetbrains.kotlin.fir.declarations.FirConstructor import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.FirPackageDirective @@ -279,6 +280,10 @@ abstract class FirVisitorVoid : FirVisitor() { visitElement(propertyAccessor) } + open fun visitBackingField(backingField: FirBackingField) { + visitElement(backingField) + } + open fun visitConstructor(constructor: FirConstructor) { visitElement(constructor) } @@ -795,6 +800,10 @@ abstract class FirVisitorVoid : FirVisitor() { visitPropertyAccessor(propertyAccessor) } + final override fun visitBackingField(backingField: FirBackingField, data: Nothing?) { + visitBackingField(backingField) + } + final override fun visitConstructor(constructor: FirConstructor, data: Nothing?) { visitConstructor(constructor) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticProperty.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticProperty.kt index ca855b5a4b3..491d010a619 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticProperty.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticProperty.kt @@ -30,6 +30,7 @@ class FirSyntheticProperty( override var resolvePhase: FirResolvePhase, override val getter: FirSyntheticPropertyAccessor, override val setter: FirSyntheticPropertyAccessor? = null, + override val backingField: FirBackingField? = null, override val deprecation: DeprecationsPerUseSite? = null ) : FirProperty() { init { @@ -122,6 +123,10 @@ class FirSyntheticProperty( throw AssertionError("Transformation of synthetic property isn't supported") } + override fun transformBackingField(transformer: FirTransformer, data: D): FirSyntheticProperty { + throw AssertionError("Transformation of synthetic property isn't supported") + } + override fun transformDelegate(transformer: FirTransformer, data: D): FirProperty { throw AssertionError("Transformation of synthetic property isn't supported") } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirFunctionSymbol.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirFunctionSymbol.kt index 0c6bda06122..3e6e6d0a498 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirFunctionSymbol.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirFunctionSymbol.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.fir.FirLabel import org.jetbrains.kotlin.fir.contracts.FirResolvedContractDescription import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.symbols.AccessorSymbol +import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol import org.jetbrains.kotlin.fir.symbols.ensureResolved import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.name.FqName @@ -70,4 +71,6 @@ class FirAnonymousFunctionSymbol : FirFunctionWithoutNameSymbol(Name.identifier("accessor")) +class FirPropertyFieldDeclarationSymbol() : FirBasedSymbol() + class FirErrorFunctionSymbol : FirFunctionWithoutNameSymbol(Name.identifier("error")) diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt index 06141ee0ced..d339752d951 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt @@ -53,6 +53,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() { val contractDescriptionOwner = sealedElement("ContractDescriptionOwner", Declaration) val simpleFunction = element("SimpleFunction", Declaration, function, contractDescriptionOwner, typeParametersOwner) val propertyAccessor = element("PropertyAccessor", Declaration, function, contractDescriptionOwner, typeParametersOwner) + val backingField = element("BackingField", Declaration, typedDeclaration, typeParametersOwner, statement) val constructor = element("Constructor", Declaration, function, typeParameterRefsOwner) val file = element("File", Declaration, annotatedDeclaration) val packageDirective = element("PackageDirective", Other) diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt index 045b8bd712f..79655959336 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt @@ -333,6 +333,20 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild +typeParameters } + backingField.configure { + +symbol("FirPropertyFieldDeclarationSymbol") + +field("backingFieldSymbol", backingFieldSymbolType, nullable = true).apply { + withBindThis = false + } + +field("propertySymbol", firPropertySymbolType, nullable = true).apply { + withBindThis = false + } + +initializer.withTransform().withReplace() + +annotations + +typeParameters + +status.withTransform() + } + declarationStatus.configure { +visibility +modality @@ -377,6 +391,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild generateBooleanFields("var", "val") +field("getter", propertyAccessor, nullable = true).withTransform() +field("setter", propertyAccessor, nullable = true).withTransform() + +field("backingField", backingField, nullable = true).withTransform() +annotations needTransformOtherChildren() }