[FIR] Add FirBackingField

This commit is contained in:
Nikolay Lunyak
2021-08-04 17:06:59 +03:00
committed by TeamCityServer
parent a0982341ee
commit ee58df6b3c
30 changed files with 387 additions and 0 deletions
@@ -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 <D> transformBackingField(transformer: FirTransformer<D>, data: D): FirField {
return this
}
override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirField {
transformAnnotations(transformer, data)
initializer = initializer?.transformSingle(transformer, data)
@@ -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 <D> transformBackingField(transformer: FirTransformer<D>, data: D): FirValueParameter {
return this
}
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirValueParameter {
return this
}
@@ -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<FirAnnotationCall>
abstract override val typeParameters: List<FirTypeParameter>
abstract val status: FirDeclarationStatus
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitBackingField(this, data)
@Suppress("UNCHECKED_CAST")
override fun <E: FirElement, D> transform(transformer: FirTransformer<D>, 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 <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirBackingField
abstract fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirBackingField
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirBackingField
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirBackingField
abstract fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirBackingField
}
@@ -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<FirAnnotationCall>
abstract override val symbol: FirEnumEntrySymbol
@@ -77,6 +78,8 @@ abstract class FirEnumEntry : FirVariable() {
abstract override fun <D> transformSetter(transformer: FirTransformer<D>, data: D): FirEnumEntry
abstract override fun <D> transformBackingField(transformer: FirTransformer<D>, data: D): FirEnumEntry
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirEnumEntry
abstract override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirEnumEntry
@@ -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<FirAnnotationCall>
abstract override val diagnostic: ConeDiagnostic
abstract override val symbol: FirErrorPropertySymbol
@@ -80,6 +81,8 @@ abstract class FirErrorProperty : FirVariable(), FirDiagnosticHolder {
abstract override fun <D> transformSetter(transformer: FirTransformer<D>, data: D): FirErrorProperty
abstract override fun <D> transformBackingField(transformer: FirTransformer<D>, data: D): FirErrorProperty
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirErrorProperty
abstract override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirErrorProperty
@@ -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<FirAnnotationCall>
abstract override val symbol: FirFieldSymbol
@@ -77,6 +78,8 @@ abstract class FirField : FirVariable() {
abstract override fun <D> transformSetter(transformer: FirTransformer<D>, data: D): FirField
abstract override fun <D> transformBackingField(transformer: FirTransformer<D>, data: D): FirField
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirField
abstract override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirField
@@ -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<FirAnnotationCall>
abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
abstract override val symbol: FirPropertySymbol
@@ -87,6 +88,8 @@ abstract class FirProperty : FirVariable(), FirTypeParametersOwner, FirControlFl
abstract override fun <D> transformSetter(transformer: FirTransformer<D>, data: D): FirProperty
abstract override fun <D> transformBackingField(transformer: FirTransformer<D>, data: D): FirProperty
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirProperty
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirProperty
@@ -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<FirAnnotationCall>
abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
abstract override val symbol: FirValueParameterSymbol
@@ -85,6 +86,8 @@ abstract class FirValueParameter : FirVariable(), FirControlFlowGraphOwner {
abstract override fun <D> transformSetter(transformer: FirTransformer<D>, data: D): FirValueParameter
abstract override fun <D> transformBackingField(transformer: FirTransformer<D>, data: D): FirValueParameter
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirValueParameter
abstract override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirValueParameter
@@ -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<FirAnnotationCall>
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitVariable(this, data)
@@ -78,6 +79,8 @@ sealed class FirVariable : FirCallableDeclaration(), FirStatement {
abstract fun <D> transformSetter(transformer: FirTransformer<D>, data: D): FirVariable
abstract fun <D> transformBackingField(transformer: FirTransformer<D>, data: D): FirVariable
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirVariable
abstract fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirVariable
@@ -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<FirAnnotationCall> = mutableListOf()
val typeParameters: MutableList<FirTypeParameter> = 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()
}
@@ -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<FirAnnotationCall> = mutableListOf()
lateinit var symbol: FirValueParameterSymbol
var defaultValue: FirExpression? = null
@@ -78,6 +80,7 @@ class FirDefaultSetterValueParameterBuilder : FirAnnotationContainerBuilder {
isVal,
getter,
setter,
backingField,
annotations,
symbol,
defaultValue,
@@ -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<FirAnnotationCall> = mutableListOf()
lateinit var symbol: FirEnumEntrySymbol
@@ -66,6 +68,7 @@ class FirEnumEntryBuilder : FirAnnotationContainerBuilder {
dispatchReceiverType,
name,
initializer,
backingField,
annotations,
symbol,
)
@@ -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<FirAnnotationCall> = mutableListOf()
lateinit var diagnostic: ConeDiagnostic
lateinit var symbol: FirErrorPropertySymbol
@@ -62,6 +64,7 @@ class FirErrorPropertyBuilder : FirAnnotationContainerBuilder {
containerSource,
dispatchReceiverType,
name,
backingField,
annotations,
diagnostic,
symbol,
@@ -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<Boolean>()
open var backingField: FirBackingField? = null
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
open lateinit var symbol: FirFieldSymbol
@@ -71,6 +73,7 @@ open class FirFieldBuilder : FirDeclarationBuilder, FirAnnotationContainerBuilde
name,
initializer,
isVar,
backingField,
annotations,
symbol,
)
@@ -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<Boolean>()
var getter: FirPropertyAccessor? = null
var setter: FirPropertyAccessor? = null
var backingField: FirBackingField? = null
override val annotations: MutableList<FirAnnotationCall> = 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
@@ -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<FirAnnotationCall> = 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
@@ -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<FirAnnotationCall>,
override val typeParameters: MutableList<FirTypeParameter>,
override var status: FirDeclarationStatus,
) : FirBackingField() {
init {
symbol.bind(this)
}
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, 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 <D> transformChildren(transformer: FirTransformer<D>, data: D): FirBackingFieldImpl {
transformReturnTypeRef(transformer, data)
transformInitializer(transformer, data)
transformAnnotations(transformer, data)
transformTypeParameters(transformer, data)
transformStatus(transformer, data)
return this
}
override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirBackingFieldImpl {
returnTypeRef = returnTypeRef.transform(transformer, data)
return this
}
override fun <D> transformInitializer(transformer: FirTransformer<D>, data: D): FirBackingFieldImpl {
initializer = initializer?.transform(transformer, data)
return this
}
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirBackingFieldImpl {
annotations.transformInplace(transformer, data)
return this
}
override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirBackingFieldImpl {
typeParameters.transformInplace(transformer, data)
return this
}
override fun <D> transformStatus(transformer: FirTransformer<D>, 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
}
}
@@ -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<FirAnnotationCall>,
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 <D> transformBackingField(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter {
backingField = backingField?.transform(transformer, data)
return this
}
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter {
annotations.transformInplace(transformer, data)
return this
@@ -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<FirAnnotationCall>,
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 <D> transformBackingField(transformer: FirTransformer<D>, data: D): FirEnumEntryImpl {
backingField = backingField?.transform(transformer, data)
return this
}
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirEnumEntryImpl {
annotations.transformInplace(transformer, data)
return this
@@ -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<FirAnnotationCall>,
override val diagnostic: ConeDiagnostic,
override val symbol: FirErrorPropertySymbol,
@@ -65,12 +67,14 @@ internal class FirErrorPropertyImpl(
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
returnTypeRef.accept(visitor, data)
status.accept(visitor, data)
backingField?.accept(visitor, data)
annotations.forEach { it.accept(visitor, data) }
}
override fun <D> transformChildren(transformer: FirTransformer<D>, 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 <D> transformBackingField(transformer: FirTransformer<D>, data: D): FirErrorPropertyImpl {
backingField = backingField?.transform(transformer, data)
return this
}
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirErrorPropertyImpl {
annotations.transformInplace(transformer, data)
return this
@@ -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<FirAnnotationCall>,
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 <D> transformBackingField(transformer: FirTransformer<D>, data: D): FirFieldImpl {
backingField = backingField?.transform(transformer, data)
return this
}
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirFieldImpl {
annotations.transformInplace(transformer, data)
return this
@@ -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<FirAnnotationCall>,
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 <D> transformBackingField(transformer: FirTransformer<D>, data: D): FirPropertyImpl {
backingField = backingField?.transform(transformer, data)
return this
}
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirPropertyImpl {
annotations.transformInplace(transformer, data)
return this
@@ -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<FirAnnotationCall>,
override val symbol: FirValueParameterSymbol,
override var defaultValue: FirExpression?,
@@ -68,6 +70,7 @@ internal class FirValueParameterImpl(
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, 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 <D> transformChildren(transformer: FirTransformer<D>, 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 <D> transformBackingField(transformer: FirTransformer<D>, data: D): FirValueParameterImpl {
backingField = backingField?.transform(transformer, data)
return this
}
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirValueParameterImpl {
annotations.transformInplace(transformer, data)
return this
@@ -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<in D> : FirVisitor<FirElement, D>() {
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<in D> : FirVisitor<FirElement, D>() {
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)
}
@@ -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<out R, in D> {
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)
@@ -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<Unit, Nothing?>() {
visitElement(propertyAccessor)
}
open fun visitBackingField(backingField: FirBackingField) {
visitElement(backingField)
}
open fun visitConstructor(constructor: FirConstructor) {
visitElement(constructor)
}
@@ -795,6 +800,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitPropertyAccessor(propertyAccessor)
}
final override fun visitBackingField(backingField: FirBackingField, data: Nothing?) {
visitBackingField(backingField)
}
final override fun visitConstructor(constructor: FirConstructor, data: Nothing?) {
visitConstructor(constructor)
}
@@ -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 <D> transformBackingField(transformer: FirTransformer<D>, data: D): FirSyntheticProperty {
throw AssertionError("Transformation of synthetic property isn't supported")
}
override fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirProperty {
throw AssertionError("Transformation of synthetic property isn't supported")
}
@@ -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<FirAnonymousFunc
class FirPropertyAccessorSymbol : FirFunctionWithoutNameSymbol<FirPropertyAccessor>(Name.identifier("accessor"))
class FirPropertyFieldDeclarationSymbol() : FirBasedSymbol<FirBackingField>()
class FirErrorFunctionSymbol : FirFunctionWithoutNameSymbol<FirErrorFunction>(Name.identifier("error"))
@@ -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)
@@ -333,6 +333,20 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(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<FirTreeBuilder>(FirTreeBuild
generateBooleanFields("var", "val")
+field("getter", propertyAccessor, nullable = true).withTransform()
+field("setter", propertyAccessor, nullable = true).withTransform()
+field("backingField", backingField, nullable = true).withTransform()
+annotations
needTransformOtherChildren()
}