[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 isVal: Boolean get() = !isVar
override val getter: FirPropertyAccessor? get() = null override val getter: FirPropertyAccessor? get() = null
override val setter: FirPropertyAccessor? get() = null override val setter: FirPropertyAccessor? get() = null
override val backingField: FirBackingField? = null
override val origin: FirDeclarationOrigin override val origin: FirDeclarationOrigin
get() = FirDeclarationOrigin.Java get() = FirDeclarationOrigin.Java
@@ -78,6 +79,10 @@ class FirJavaField @FirImplementationDetail constructor(
return this return this
} }
override fun <D> transformBackingField(transformer: FirTransformer<D>, data: D): FirField {
return this
}
override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirField { override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirField {
transformAnnotations(transformer, data) transformAnnotations(transformer, data)
initializer = initializer?.transformSingle(transformer, data) initializer = initializer?.transformSingle(transformer, data)
@@ -79,6 +79,9 @@ class FirJavaValueParameter @FirImplementationDetail constructor(
override val setter: FirPropertyAccessor? override val setter: FirPropertyAccessor?
get() = null get() = null
override val backingField: FirBackingField?
get() = null
override val controlFlowGraphReference: FirControlFlowGraphReference? override val controlFlowGraphReference: FirControlFlowGraphReference?
get() = null get() = null
@@ -131,6 +134,10 @@ class FirJavaValueParameter @FirImplementationDetail constructor(
return this return this
} }
override fun <D> transformBackingField(transformer: FirTransformer<D>, data: D): FirValueParameter {
return this
}
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirValueParameter { override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirValueParameter {
return this 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 isVal: Boolean
abstract override val getter: FirPropertyAccessor? abstract override val getter: FirPropertyAccessor?
abstract override val setter: FirPropertyAccessor? abstract override val setter: FirPropertyAccessor?
abstract override val backingField: FirBackingField?
abstract override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
abstract override val symbol: FirEnumEntrySymbol 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> 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> transformAnnotations(transformer: FirTransformer<D>, data: D): FirEnumEntry
abstract override fun <D> transformOtherChildren(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 isVal: Boolean
abstract override val getter: FirPropertyAccessor? abstract override val getter: FirPropertyAccessor?
abstract override val setter: FirPropertyAccessor? abstract override val setter: FirPropertyAccessor?
abstract override val backingField: FirBackingField?
abstract override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
abstract override val diagnostic: ConeDiagnostic abstract override val diagnostic: ConeDiagnostic
abstract override val symbol: FirErrorPropertySymbol 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> 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> transformAnnotations(transformer: FirTransformer<D>, data: D): FirErrorProperty
abstract override fun <D> transformOtherChildren(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 isVal: Boolean
abstract override val getter: FirPropertyAccessor? abstract override val getter: FirPropertyAccessor?
abstract override val setter: FirPropertyAccessor? abstract override val setter: FirPropertyAccessor?
abstract override val backingField: FirBackingField?
abstract override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
abstract override val symbol: FirFieldSymbol 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> 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> transformAnnotations(transformer: FirTransformer<D>, data: D): FirField
abstract override fun <D> transformOtherChildren(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 isVal: Boolean
abstract override val getter: FirPropertyAccessor? abstract override val getter: FirPropertyAccessor?
abstract override val setter: FirPropertyAccessor? abstract override val setter: FirPropertyAccessor?
abstract override val backingField: FirBackingField?
abstract override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
abstract override val controlFlowGraphReference: FirControlFlowGraphReference? abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
abstract override val symbol: FirPropertySymbol 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> 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> transformAnnotations(transformer: FirTransformer<D>, data: D): FirProperty
abstract override fun <D> transformTypeParameters(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 isVal: Boolean
abstract override val getter: FirPropertyAccessor? abstract override val getter: FirPropertyAccessor?
abstract override val setter: FirPropertyAccessor? abstract override val setter: FirPropertyAccessor?
abstract override val backingField: FirBackingField?
abstract override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
abstract override val controlFlowGraphReference: FirControlFlowGraphReference? abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
abstract override val symbol: FirValueParameterSymbol 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> 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> transformAnnotations(transformer: FirTransformer<D>, data: D): FirValueParameter
abstract override fun <D> transformOtherChildren(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 isVal: Boolean
abstract val getter: FirPropertyAccessor? abstract val getter: FirPropertyAccessor?
abstract val setter: FirPropertyAccessor? abstract val setter: FirPropertyAccessor?
abstract val backingField: FirBackingField?
abstract override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitVariable(this, data) 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> 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 override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirVariable
abstract fun <D> transformOtherChildren(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.FirAnnotationContainerBuilder
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite 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.FirDeclarationAttributes
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
@@ -53,6 +54,7 @@ class FirDefaultSetterValueParameterBuilder : FirAnnotationContainerBuilder {
var isVal: Boolean = true var isVal: Boolean = true
var getter: FirPropertyAccessor? = null var getter: FirPropertyAccessor? = null
var setter: FirPropertyAccessor? = null var setter: FirPropertyAccessor? = null
var backingField: FirBackingField? = null
override val annotations: MutableList<FirAnnotationCall> = mutableListOf() override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
lateinit var symbol: FirValueParameterSymbol lateinit var symbol: FirValueParameterSymbol
var defaultValue: FirExpression? = null var defaultValue: FirExpression? = null
@@ -78,6 +80,7 @@ class FirDefaultSetterValueParameterBuilder : FirAnnotationContainerBuilder {
isVal, isVal,
getter, getter,
setter, setter,
backingField,
annotations, annotations,
symbol, symbol,
defaultValue, defaultValue,
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite 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.FirDeclarationAttributes
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
@@ -48,6 +49,7 @@ class FirEnumEntryBuilder : FirAnnotationContainerBuilder {
var dispatchReceiverType: ConeKotlinType? = null var dispatchReceiverType: ConeKotlinType? = null
lateinit var name: Name lateinit var name: Name
var initializer: FirExpression? = null var initializer: FirExpression? = null
var backingField: FirBackingField? = null
override val annotations: MutableList<FirAnnotationCall> = mutableListOf() override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
lateinit var symbol: FirEnumEntrySymbol lateinit var symbol: FirEnumEntrySymbol
@@ -66,6 +68,7 @@ class FirEnumEntryBuilder : FirAnnotationContainerBuilder {
dispatchReceiverType, dispatchReceiverType,
name, name,
initializer, initializer,
backingField,
annotations, annotations,
symbol, symbol,
) )
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite 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.FirDeclarationAttributes
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
@@ -47,6 +48,7 @@ class FirErrorPropertyBuilder : FirAnnotationContainerBuilder {
var containerSource: DeserializedContainerSource? = null var containerSource: DeserializedContainerSource? = null
var dispatchReceiverType: ConeKotlinType? = null var dispatchReceiverType: ConeKotlinType? = null
lateinit var name: Name lateinit var name: Name
var backingField: FirBackingField? = null
override val annotations: MutableList<FirAnnotationCall> = mutableListOf() override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
lateinit var diagnostic: ConeDiagnostic lateinit var diagnostic: ConeDiagnostic
lateinit var symbol: FirErrorPropertySymbol lateinit var symbol: FirErrorPropertySymbol
@@ -62,6 +64,7 @@ class FirErrorPropertyBuilder : FirAnnotationContainerBuilder {
containerSource, containerSource,
dispatchReceiverType, dispatchReceiverType,
name, name,
backingField,
annotations, annotations,
diagnostic, diagnostic,
symbol, symbol,
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite 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.FirDeclarationAttributes
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
@@ -51,6 +52,7 @@ open class FirFieldBuilder : FirDeclarationBuilder, FirAnnotationContainerBuilde
open lateinit var name: Name open lateinit var name: Name
open var initializer: FirExpression? = null open var initializer: FirExpression? = null
open var isVar: Boolean by kotlin.properties.Delegates.notNull<Boolean>() open var isVar: Boolean by kotlin.properties.Delegates.notNull<Boolean>()
open var backingField: FirBackingField? = null
override val annotations: MutableList<FirAnnotationCall> = mutableListOf() override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
open lateinit var symbol: FirFieldSymbol open lateinit var symbol: FirFieldSymbol
@@ -71,6 +73,7 @@ open class FirFieldBuilder : FirDeclarationBuilder, FirAnnotationContainerBuilde
name, name,
initializer, initializer,
isVar, isVar,
backingField,
annotations, annotations,
symbol, symbol,
) )
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite 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.FirDeclarationAttributes
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus 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 isVar: Boolean by kotlin.properties.Delegates.notNull<Boolean>()
var getter: FirPropertyAccessor? = null var getter: FirPropertyAccessor? = null
var setter: FirPropertyAccessor? = null var setter: FirPropertyAccessor? = null
var backingField: FirBackingField? = null
override val annotations: MutableList<FirAnnotationCall> = mutableListOf() override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
lateinit var symbol: FirPropertySymbol lateinit var symbol: FirPropertySymbol
var delegateFieldSymbol: FirDelegateFieldSymbol? = null var delegateFieldSymbol: FirDelegateFieldSymbol? = null
@@ -84,6 +86,7 @@ class FirPropertyBuilder : FirDeclarationBuilder, FirTypeParametersOwnerBuilder,
isVar, isVar,
getter, getter,
setter, setter,
backingField,
annotations, annotations,
symbol, symbol,
delegateFieldSymbol, delegateFieldSymbol,
@@ -126,6 +129,7 @@ inline fun buildPropertyCopy(original: FirProperty, init: FirPropertyBuilder.()
copyBuilder.isVar = original.isVar copyBuilder.isVar = original.isVar
copyBuilder.getter = original.getter copyBuilder.getter = original.getter
copyBuilder.setter = original.setter copyBuilder.setter = original.setter
copyBuilder.backingField = original.backingField
copyBuilder.annotations.addAll(original.annotations) copyBuilder.annotations.addAll(original.annotations)
copyBuilder.symbol = original.symbol copyBuilder.symbol = original.symbol
copyBuilder.delegateFieldSymbol = original.delegateFieldSymbol 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.FirAnnotationContainerBuilder
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite 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.FirDeclarationAttributes
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
@@ -47,6 +48,7 @@ open class FirValueParameterBuilder : FirAnnotationContainerBuilder {
open var containerSource: DeserializedContainerSource? = null open var containerSource: DeserializedContainerSource? = null
open var dispatchReceiverType: ConeKotlinType? = null open var dispatchReceiverType: ConeKotlinType? = null
open lateinit var name: Name open lateinit var name: Name
open var backingField: FirBackingField? = null
override val annotations: MutableList<FirAnnotationCall> = mutableListOf() override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
open lateinit var symbol: FirValueParameterSymbol open lateinit var symbol: FirValueParameterSymbol
open var defaultValue: FirExpression? = null open var defaultValue: FirExpression? = null
@@ -66,6 +68,7 @@ open class FirValueParameterBuilder : FirAnnotationContainerBuilder {
containerSource, containerSource,
dispatchReceiverType, dispatchReceiverType,
name, name,
backingField,
annotations, annotations,
symbol, symbol,
defaultValue, defaultValue,
@@ -101,6 +104,7 @@ inline fun buildValueParameterCopy(original: FirValueParameter, init: FirValuePa
copyBuilder.containerSource = original.containerSource copyBuilder.containerSource = original.containerSource
copyBuilder.dispatchReceiverType = original.dispatchReceiverType copyBuilder.dispatchReceiverType = original.dispatchReceiverType
copyBuilder.name = original.name copyBuilder.name = original.name
copyBuilder.backingField = original.backingField
copyBuilder.annotations.addAll(original.annotations) copyBuilder.annotations.addAll(original.annotations)
copyBuilder.symbol = original.symbol copyBuilder.symbol = original.symbol
copyBuilder.defaultValue = original.defaultValue 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.FirModuleData
import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite 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.FirDeclarationAttributes
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
@@ -49,6 +50,7 @@ internal class FirDefaultSetterValueParameter(
override val isVal: Boolean, override val isVal: Boolean,
override var getter: FirPropertyAccessor?, override var getter: FirPropertyAccessor?,
override var setter: FirPropertyAccessor?, override var setter: FirPropertyAccessor?,
override var backingField: FirBackingField?,
override val annotations: MutableList<FirAnnotationCall>, override val annotations: MutableList<FirAnnotationCall>,
override val symbol: FirValueParameterSymbol, override val symbol: FirValueParameterSymbol,
override var defaultValue: FirExpression?, override var defaultValue: FirExpression?,
@@ -73,6 +75,7 @@ internal class FirDefaultSetterValueParameter(
delegate?.accept(visitor, data) delegate?.accept(visitor, data)
getter?.accept(visitor, data) getter?.accept(visitor, data)
setter?.accept(visitor, data) setter?.accept(visitor, data)
backingField?.accept(visitor, data)
annotations.forEach { it.accept(visitor, data) } annotations.forEach { it.accept(visitor, data) }
controlFlowGraphReference?.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data)
defaultValue?.accept(visitor, data) defaultValue?.accept(visitor, data)
@@ -86,6 +89,7 @@ internal class FirDefaultSetterValueParameter(
transformDelegate(transformer, data) transformDelegate(transformer, data)
transformGetter(transformer, data) transformGetter(transformer, data)
transformSetter(transformer, data) transformSetter(transformer, data)
transformBackingField(transformer, data)
transformOtherChildren(transformer, data) transformOtherChildren(transformer, data)
return this return this
} }
@@ -129,6 +133,11 @@ internal class FirDefaultSetterValueParameter(
return this 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 { override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter {
annotations.transformInplace(transformer, data) annotations.transformInplace(transformer, data)
return this return this
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations.impl
import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite 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.FirDeclarationAttributes
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
@@ -44,6 +45,7 @@ internal class FirEnumEntryImpl(
override val dispatchReceiverType: ConeKotlinType?, override val dispatchReceiverType: ConeKotlinType?,
override val name: Name, override val name: Name,
override var initializer: FirExpression?, override var initializer: FirExpression?,
override var backingField: FirBackingField?,
override val annotations: MutableList<FirAnnotationCall>, override val annotations: MutableList<FirAnnotationCall>,
override val symbol: FirEnumEntrySymbol, override val symbol: FirEnumEntrySymbol,
) : FirEnumEntry() { ) : FirEnumEntry() {
@@ -63,6 +65,7 @@ internal class FirEnumEntryImpl(
typeParameters.forEach { it.accept(visitor, data) } typeParameters.forEach { it.accept(visitor, data) }
status.accept(visitor, data) status.accept(visitor, data)
initializer?.accept(visitor, data) initializer?.accept(visitor, data)
backingField?.accept(visitor, data)
annotations.forEach { it.accept(visitor, data) } annotations.forEach { it.accept(visitor, data) }
} }
@@ -71,6 +74,7 @@ internal class FirEnumEntryImpl(
transformTypeParameters(transformer, data) transformTypeParameters(transformer, data)
transformStatus(transformer, data) transformStatus(transformer, data)
transformInitializer(transformer, data) transformInitializer(transformer, data)
transformBackingField(transformer, data)
transformOtherChildren(transformer, data) transformOtherChildren(transformer, data)
return this return this
} }
@@ -111,6 +115,11 @@ internal class FirEnumEntryImpl(
return this 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 { override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirEnumEntryImpl {
annotations.transformInplace(transformer, data) annotations.transformInplace(transformer, data)
return this return this
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations.impl
import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite 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.FirDeclarationAttributes
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
@@ -43,6 +44,7 @@ internal class FirErrorPropertyImpl(
override val containerSource: DeserializedContainerSource?, override val containerSource: DeserializedContainerSource?,
override val dispatchReceiverType: ConeKotlinType?, override val dispatchReceiverType: ConeKotlinType?,
override val name: Name, override val name: Name,
override var backingField: FirBackingField?,
override val annotations: MutableList<FirAnnotationCall>, override val annotations: MutableList<FirAnnotationCall>,
override val diagnostic: ConeDiagnostic, override val diagnostic: ConeDiagnostic,
override val symbol: FirErrorPropertySymbol, override val symbol: FirErrorPropertySymbol,
@@ -65,12 +67,14 @@ internal class FirErrorPropertyImpl(
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) { override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
returnTypeRef.accept(visitor, data) returnTypeRef.accept(visitor, data)
status.accept(visitor, data) status.accept(visitor, data)
backingField?.accept(visitor, data)
annotations.forEach { it.accept(visitor, data) } annotations.forEach { it.accept(visitor, data) }
} }
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirErrorPropertyImpl { override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirErrorPropertyImpl {
transformReturnTypeRef(transformer, data) transformReturnTypeRef(transformer, data)
transformStatus(transformer, data) transformStatus(transformer, data)
transformBackingField(transformer, data)
transformOtherChildren(transformer, data) transformOtherChildren(transformer, data)
return this return this
} }
@@ -109,6 +113,11 @@ internal class FirErrorPropertyImpl(
return this 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 { override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirErrorPropertyImpl {
annotations.transformInplace(transformer, data) annotations.transformInplace(transformer, data)
return this return this
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.fir.FirImplementationDetail
import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite 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.FirDeclarationAttributes
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
@@ -46,6 +47,7 @@ class FirFieldImpl @FirImplementationDetail constructor(
override val name: Name, override val name: Name,
override var initializer: FirExpression?, override var initializer: FirExpression?,
override val isVar: Boolean, override val isVar: Boolean,
override var backingField: FirBackingField?,
override val annotations: MutableList<FirAnnotationCall>, override val annotations: MutableList<FirAnnotationCall>,
override val symbol: FirFieldSymbol, override val symbol: FirFieldSymbol,
) : FirField() { ) : FirField() {
@@ -64,6 +66,7 @@ class FirFieldImpl @FirImplementationDetail constructor(
typeParameters.forEach { it.accept(visitor, data) } typeParameters.forEach { it.accept(visitor, data) }
status.accept(visitor, data) status.accept(visitor, data)
initializer?.accept(visitor, data) initializer?.accept(visitor, data)
backingField?.accept(visitor, data)
annotations.forEach { it.accept(visitor, data) } annotations.forEach { it.accept(visitor, data) }
} }
@@ -72,6 +75,7 @@ class FirFieldImpl @FirImplementationDetail constructor(
transformTypeParameters(transformer, data) transformTypeParameters(transformer, data)
transformStatus(transformer, data) transformStatus(transformer, data)
transformInitializer(transformer, data) transformInitializer(transformer, data)
transformBackingField(transformer, data)
transformOtherChildren(transformer, data) transformOtherChildren(transformer, data)
return this return this
} }
@@ -112,6 +116,11 @@ class FirFieldImpl @FirImplementationDetail constructor(
return this 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 { override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirFieldImpl {
annotations.transformInplace(transformer, data) annotations.transformInplace(transformer, data)
return this return this
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations.impl
import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite 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.FirDeclarationAttributes
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
@@ -52,6 +53,7 @@ internal class FirPropertyImpl(
override val isVar: Boolean, override val isVar: Boolean,
override var getter: FirPropertyAccessor?, override var getter: FirPropertyAccessor?,
override var setter: FirPropertyAccessor?, override var setter: FirPropertyAccessor?,
override var backingField: FirBackingField?,
override val annotations: MutableList<FirAnnotationCall>, override val annotations: MutableList<FirAnnotationCall>,
override val symbol: FirPropertySymbol, override val symbol: FirPropertySymbol,
override val delegateFieldSymbol: FirDelegateFieldSymbol?, override val delegateFieldSymbol: FirDelegateFieldSymbol?,
@@ -77,6 +79,7 @@ internal class FirPropertyImpl(
delegate?.accept(visitor, data) delegate?.accept(visitor, data)
getter?.accept(visitor, data) getter?.accept(visitor, data)
setter?.accept(visitor, data) setter?.accept(visitor, data)
backingField?.accept(visitor, data)
annotations.forEach { it.accept(visitor, data) } annotations.forEach { it.accept(visitor, data) }
controlFlowGraphReference?.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data)
typeParameters.forEach { it.accept(visitor, data) } typeParameters.forEach { it.accept(visitor, data) }
@@ -90,6 +93,7 @@ internal class FirPropertyImpl(
transformDelegate(transformer, data) transformDelegate(transformer, data)
transformGetter(transformer, data) transformGetter(transformer, data)
transformSetter(transformer, data) transformSetter(transformer, data)
transformBackingField(transformer, data)
transformTypeParameters(transformer, data) transformTypeParameters(transformer, data)
transformOtherChildren(transformer, data) transformOtherChildren(transformer, data)
return this return this
@@ -130,6 +134,11 @@ internal class FirPropertyImpl(
return this 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 { override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirPropertyImpl {
annotations.transformInplace(transformer, data) annotations.transformInplace(transformer, data)
return this return this
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations.impl
import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite 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.FirDeclarationAttributes
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
@@ -43,6 +44,7 @@ internal class FirValueParameterImpl(
override val containerSource: DeserializedContainerSource?, override val containerSource: DeserializedContainerSource?,
override val dispatchReceiverType: ConeKotlinType?, override val dispatchReceiverType: ConeKotlinType?,
override val name: Name, override val name: Name,
override var backingField: FirBackingField?,
override val annotations: MutableList<FirAnnotationCall>, override val annotations: MutableList<FirAnnotationCall>,
override val symbol: FirValueParameterSymbol, override val symbol: FirValueParameterSymbol,
override var defaultValue: FirExpression?, override var defaultValue: FirExpression?,
@@ -68,6 +70,7 @@ internal class FirValueParameterImpl(
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) { override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
returnTypeRef.accept(visitor, data) returnTypeRef.accept(visitor, data)
status.accept(visitor, data) status.accept(visitor, data)
backingField?.accept(visitor, data)
annotations.forEach { it.accept(visitor, data) } annotations.forEach { it.accept(visitor, data) }
controlFlowGraphReference?.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data)
defaultValue?.accept(visitor, data) defaultValue?.accept(visitor, data)
@@ -76,6 +79,7 @@ internal class FirValueParameterImpl(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirValueParameterImpl { override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirValueParameterImpl {
transformReturnTypeRef(transformer, data) transformReturnTypeRef(transformer, data)
transformStatus(transformer, data) transformStatus(transformer, data)
transformBackingField(transformer, data)
transformOtherChildren(transformer, data) transformOtherChildren(transformer, data)
return this return this
} }
@@ -114,6 +118,11 @@ internal class FirValueParameterImpl(
return this 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 { override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirValueParameterImpl {
annotations.transformInplace(transformer, data) annotations.transformInplace(transformer, data)
return this 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.FirContractDescriptionOwner
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor 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.FirConstructor
import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.FirPackageDirective import org.jetbrains.kotlin.fir.FirPackageDirective
@@ -280,6 +281,10 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
return transformElement(propertyAccessor, data) return transformElement(propertyAccessor, data)
} }
open fun transformBackingField(backingField: FirBackingField, data: D): FirStatement {
return transformElement(backingField, data)
}
open fun transformConstructor(constructor: FirConstructor, data: D): FirStatement { open fun transformConstructor(constructor: FirConstructor, data: D): FirStatement {
return transformElement(constructor, data) return transformElement(constructor, data)
} }
@@ -796,6 +801,10 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
return transformPropertyAccessor(propertyAccessor, data) 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 { final override fun visitConstructor(constructor: FirConstructor, data: D): FirStatement {
return transformConstructor(constructor, data) 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.FirContractDescriptionOwner
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor 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.FirConstructor
import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.FirPackageDirective 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 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 visitConstructor(constructor: FirConstructor, data: D): R = visitElement(constructor, data)
open fun visitFile(file: FirFile, data: D): R = visitElement(file, 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.FirContractDescriptionOwner
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor 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.FirConstructor
import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.FirPackageDirective import org.jetbrains.kotlin.fir.FirPackageDirective
@@ -279,6 +280,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitElement(propertyAccessor) visitElement(propertyAccessor)
} }
open fun visitBackingField(backingField: FirBackingField) {
visitElement(backingField)
}
open fun visitConstructor(constructor: FirConstructor) { open fun visitConstructor(constructor: FirConstructor) {
visitElement(constructor) visitElement(constructor)
} }
@@ -795,6 +800,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitPropertyAccessor(propertyAccessor) visitPropertyAccessor(propertyAccessor)
} }
final override fun visitBackingField(backingField: FirBackingField, data: Nothing?) {
visitBackingField(backingField)
}
final override fun visitConstructor(constructor: FirConstructor, data: Nothing?) { final override fun visitConstructor(constructor: FirConstructor, data: Nothing?) {
visitConstructor(constructor) visitConstructor(constructor)
} }
@@ -30,6 +30,7 @@ class FirSyntheticProperty(
override var resolvePhase: FirResolvePhase, override var resolvePhase: FirResolvePhase,
override val getter: FirSyntheticPropertyAccessor, override val getter: FirSyntheticPropertyAccessor,
override val setter: FirSyntheticPropertyAccessor? = null, override val setter: FirSyntheticPropertyAccessor? = null,
override val backingField: FirBackingField? = null,
override val deprecation: DeprecationsPerUseSite? = null override val deprecation: DeprecationsPerUseSite? = null
) : FirProperty() { ) : FirProperty() {
init { init {
@@ -122,6 +123,10 @@ class FirSyntheticProperty(
throw AssertionError("Transformation of synthetic property isn't supported") 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 { override fun <D> transformDelegate(transformer: FirTransformer<D>, data: D): FirProperty {
throw AssertionError("Transformation of synthetic property isn't supported") 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.contracts.FirResolvedContractDescription
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.symbols.AccessorSymbol 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.fir.symbols.ensureResolved
import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.name.CallableId
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
@@ -70,4 +71,6 @@ class FirAnonymousFunctionSymbol : FirFunctionWithoutNameSymbol<FirAnonymousFunc
class FirPropertyAccessorSymbol : FirFunctionWithoutNameSymbol<FirPropertyAccessor>(Name.identifier("accessor")) class FirPropertyAccessorSymbol : FirFunctionWithoutNameSymbol<FirPropertyAccessor>(Name.identifier("accessor"))
class FirPropertyFieldDeclarationSymbol() : FirBasedSymbol<FirBackingField>()
class FirErrorFunctionSymbol : FirFunctionWithoutNameSymbol<FirErrorFunction>(Name.identifier("error")) class FirErrorFunctionSymbol : FirFunctionWithoutNameSymbol<FirErrorFunction>(Name.identifier("error"))
@@ -53,6 +53,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
val contractDescriptionOwner = sealedElement("ContractDescriptionOwner", Declaration) val contractDescriptionOwner = sealedElement("ContractDescriptionOwner", Declaration)
val simpleFunction = element("SimpleFunction", Declaration, function, contractDescriptionOwner, typeParametersOwner) val simpleFunction = element("SimpleFunction", Declaration, function, contractDescriptionOwner, typeParametersOwner)
val propertyAccessor = element("PropertyAccessor", 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 constructor = element("Constructor", Declaration, function, typeParameterRefsOwner)
val file = element("File", Declaration, annotatedDeclaration) val file = element("File", Declaration, annotatedDeclaration)
val packageDirective = element("PackageDirective", Other) val packageDirective = element("PackageDirective", Other)
@@ -333,6 +333,20 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
+typeParameters +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 { declarationStatus.configure {
+visibility +visibility
+modality +modality
@@ -377,6 +391,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
generateBooleanFields("var", "val") generateBooleanFields("var", "val")
+field("getter", propertyAccessor, nullable = true).withTransform() +field("getter", propertyAccessor, nullable = true).withTransform()
+field("setter", propertyAccessor, nullable = true).withTransform() +field("setter", propertyAccessor, nullable = true).withTransform()
+field("backingField", backingField, nullable = true).withTransform()
+annotations +annotations
needTransformOtherChildren() needTransformOtherChildren()
} }