diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaClass.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaClass.kt index e15817f234c..ead57e08b27 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaClass.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaClass.kt @@ -18,6 +18,8 @@ import org.jetbrains.kotlin.fir.declarations.builder.AbstractFirRegularClassBuil import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.java.JavaTypeParameterStack +import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference +import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference import org.jetbrains.kotlin.fir.scopes.FirScopeProvider import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.fir.types.FirTypeRef @@ -46,6 +48,7 @@ class FirJavaClass @FirImplementationDetail internal constructor( internal val existingNestedClassifierNames: List ) : FirRegularClass() { override val hasLazyNestedClassifiers: Boolean get() = true + override val controlFlowGraphReference: FirControlFlowGraphReference get() = FirEmptyControlFlowGraphReference init { symbol.bind(this) @@ -85,6 +88,10 @@ class FirJavaClass @FirImplementationDetail internal constructor( status = status.transformSingle(transformer, data) return this } + + override fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirRegularClass { + return this + } } @FirBuilderDsl @@ -151,6 +158,13 @@ internal class FirJavaClassBuilder : AbstractFirRegularClassBuilder, FirAnnotati set(value) { throw IllegalStateException() } + + @Deprecated("Modification of 'controlFlowGraphReference' has no impact for FirClassImplBuilder", level = DeprecationLevel.HIDDEN) + override var controlFlowGraphReference: FirControlFlowGraphReference + get() = throw IllegalStateException() + set(value) { + throw IllegalStateException() + } } internal inline fun buildJavaClass(init: FirJavaClassBuilder.() -> Unit): FirJavaClass { diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousObject.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousObject.kt index 7db8d7f62fb..b30d95e1f9c 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousObject.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousObject.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirSession 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.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.scopes.FirScopeProvider import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousObjectSymbol import org.jetbrains.kotlin.fir.types.FirTypeRef @@ -31,6 +32,9 @@ abstract class FirAnonymousObject : FirClass, FirExpression( abstract override val scopeProvider: FirScopeProvider abstract override val typeRef: FirTypeRef abstract override val symbol: FirAnonymousObjectSymbol + abstract val controlFlowGraphReference: FirControlFlowGraphReference override fun accept(visitor: FirVisitor, data: D): R = visitor.visitAnonymousObject(this, data) + + abstract fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirAnonymousObject } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirRegularClass.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirRegularClass.kt index ee23285fb3f..da980b1e787 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirRegularClass.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirRegularClass.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirPureAbstractElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall +import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.scopes.FirScopeProvider import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.fir.types.FirTypeRef @@ -36,10 +37,13 @@ abstract class FirRegularClass : FirPureAbstractElement(), FirMemberDeclaration, abstract val companionObject: FirRegularClass? abstract val hasLazyNestedClassifiers: Boolean abstract override val superTypeRefs: List + abstract val controlFlowGraphReference: FirControlFlowGraphReference override fun accept(visitor: FirVisitor, data: D): R = visitor.visitRegularClass(this, data) abstract override fun replaceSuperTypeRefs(newSuperTypeRefs: List) abstract override fun transformStatus(transformer: FirTransformer, data: D): FirRegularClass + + abstract fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirRegularClass } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSealedClass.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSealedClass.kt index c48f74aa786..b973d21842c 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSealedClass.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSealedClass.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall +import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.scopes.FirScopeProvider import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.fir.types.FirTypeRef @@ -36,6 +37,7 @@ abstract class FirSealedClass : FirRegularClass() { abstract override val companionObject: FirRegularClass? abstract override val hasLazyNestedClassifiers: Boolean abstract override val superTypeRefs: List + abstract override val controlFlowGraphReference: FirControlFlowGraphReference abstract val inheritors: List override fun accept(visitor: FirVisitor, data: D): R = visitor.visitSealedClass(this, data) @@ -43,4 +45,6 @@ abstract class FirSealedClass : FirRegularClass() { abstract fun replaceInheritors(newInheritors: List) abstract override fun transformStatus(transformer: FirTransformer, data: D): FirSealedClass + + abstract override fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirSealedClass } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/AbstractFirRegularClassBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/AbstractFirRegularClassBuilder.kt index 3ebdd36f52d..76462c9a060 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/AbstractFirRegularClassBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/AbstractFirRegularClassBuilder.kt @@ -17,6 +17,7 @@ import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.declarations.builder.FirClassBuilder import org.jetbrains.kotlin.fir.declarations.builder.FirTypeParametersOwnerBuilder import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall +import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.scopes.FirScopeProvider import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.fir.types.FirTypeRef @@ -44,5 +45,6 @@ interface AbstractFirRegularClassBuilder : FirClassBuilder, FirTypeParametersOwn abstract var symbol: FirRegularClassSymbol abstract var companionObject: FirRegularClass? abstract var hasLazyNestedClassifiers: Boolean + abstract var controlFlowGraphReference: FirControlFlowGraphReference override fun build(): FirRegularClass } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirAnonymousObjectBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirAnonymousObjectBuilder.kt index b1bd3cebbda..5dbb8803b04 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirAnonymousObjectBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirAnonymousObjectBuilder.kt @@ -18,6 +18,8 @@ import org.jetbrains.kotlin.fir.declarations.builder.FirClassBuilder import org.jetbrains.kotlin.fir.declarations.impl.FirAnonymousObjectImpl import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.builder.FirExpressionBuilder +import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference +import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference import org.jetbrains.kotlin.fir.scopes.FirScopeProvider import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousObjectSymbol import org.jetbrains.kotlin.fir.types.FirTypeRef diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirClassImplBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirClassImplBuilder.kt index 7e32f9d5a2f..0f8d1bf832d 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirClassImplBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirClassImplBuilder.kt @@ -19,6 +19,8 @@ import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.declarations.builder.AbstractFirRegularClassBuilder import org.jetbrains.kotlin.fir.declarations.impl.FirClassImpl import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall +import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference +import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference import org.jetbrains.kotlin.fir.scopes.FirScopeProvider import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.fir.types.FirTypeRef @@ -71,6 +73,13 @@ open class FirClassImplBuilder : AbstractFirRegularClassBuilder, FirAnnotationCo set(value) { throw IllegalStateException() } + + @Deprecated("Modification of 'controlFlowGraphReference' has no impact for FirClassImplBuilder", level = DeprecationLevel.HIDDEN) + override var controlFlowGraphReference: FirControlFlowGraphReference + get() = throw IllegalStateException() + set(value) { + throw IllegalStateException() + } } @OptIn(ExperimentalContracts::class) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirSealedClassBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirSealedClassBuilder.kt index 67d351edbb9..71f7b0e7895 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirSealedClassBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirSealedClassBuilder.kt @@ -20,6 +20,8 @@ import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.declarations.builder.AbstractFirRegularClassBuilder import org.jetbrains.kotlin.fir.declarations.impl.FirSealedClassImpl import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall +import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference +import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference import org.jetbrains.kotlin.fir.scopes.FirScopeProvider import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.fir.types.FirTypeRef @@ -75,6 +77,13 @@ class FirSealedClassBuilder : AbstractFirRegularClassBuilder, FirAnnotationConta set(value) { throw IllegalStateException() } + + @Deprecated("Modification of 'controlFlowGraphReference' has no impact for FirSealedClassBuilder", level = DeprecationLevel.HIDDEN) + override var controlFlowGraphReference: FirControlFlowGraphReference + get() = throw IllegalStateException() + set(value) { + throw IllegalStateException() + } } @OptIn(ExperimentalContracts::class) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousObjectImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousObjectImpl.kt index 30338ea4355..f124c44fa78 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousObjectImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousObjectImpl.kt @@ -12,6 +12,8 @@ import org.jetbrains.kotlin.fir.declarations.FirAnonymousObject import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall +import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference +import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference import org.jetbrains.kotlin.fir.scopes.FirScopeProvider import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousObjectSymbol import org.jetbrains.kotlin.fir.types.FirTypeRef @@ -34,6 +36,8 @@ internal class FirAnonymousObjectImpl( override var typeRef: FirTypeRef, override val symbol: FirAnonymousObjectSymbol, ) : FirAnonymousObject() { + override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference + init { symbol.bind(this) } @@ -43,6 +47,7 @@ internal class FirAnonymousObjectImpl( declarations.forEach { it.accept(visitor, data) } annotations.forEach { it.accept(visitor, data) } typeRef.accept(visitor, data) + controlFlowGraphReference.accept(visitor, data) } override fun transformChildren(transformer: FirTransformer, data: D): FirAnonymousObjectImpl { @@ -50,6 +55,12 @@ internal class FirAnonymousObjectImpl( declarations.transformInplace(transformer, data) annotations.transformInplace(transformer, data) typeRef = typeRef.transformSingle(transformer, data) + transformControlFlowGraphReference(transformer, data) + return this + } + + override fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirAnonymousObjectImpl { + controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data) return this } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirClassImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirClassImpl.kt index 376367ae5e9..de30c599719 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirClassImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirClassImpl.kt @@ -14,6 +14,8 @@ import org.jetbrains.kotlin.fir.declarations.FirRegularClass 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.references.FirControlFlowGraphReference +import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference import org.jetbrains.kotlin.fir.scopes.FirScopeProvider import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.fir.types.FirTypeRef @@ -41,6 +43,7 @@ internal class FirClassImpl( override val superTypeRefs: MutableList, ) : FirRegularClass() { override val hasLazyNestedClassifiers: Boolean get() = false + override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference init { symbol.bind(this) @@ -53,6 +56,7 @@ internal class FirClassImpl( (declarations.firstOrNull { it is FirConstructorImpl } as? FirConstructorImpl)?.typeParameters?.forEach { it.accept(visitor, data) } declarations.forEach { it.accept(visitor, data) } superTypeRefs.forEach { it.accept(visitor, data) } + controlFlowGraphReference.accept(visitor, data) } override fun transformChildren(transformer: FirTransformer, data: D): FirClassImpl { @@ -63,6 +67,7 @@ internal class FirClassImpl( declarations.transformInplace(transformer, data) companionObject = declarations.asSequence().filterIsInstance().firstOrNull { it.status.isCompanion } superTypeRefs.transformInplace(transformer, data) + transformControlFlowGraphReference(transformer, data) return this } @@ -71,6 +76,11 @@ internal class FirClassImpl( return this } + override fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirClassImpl { + controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data) + return this + } + override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) { resolvePhase = newResolvePhase } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirSealedClassImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirSealedClassImpl.kt index 8c5e8cb9deb..be925169c9d 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirSealedClassImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirSealedClassImpl.kt @@ -15,6 +15,8 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirSealedClass import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall +import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference +import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference import org.jetbrains.kotlin.fir.scopes.FirScopeProvider import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.fir.types.FirTypeRef @@ -44,6 +46,7 @@ internal class FirSealedClassImpl( override val inheritors: MutableList, ) : FirSealedClass() { override val hasLazyNestedClassifiers: Boolean get() = false + override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference init { symbol.bind(this) @@ -56,6 +59,7 @@ internal class FirSealedClassImpl( (declarations.firstOrNull { it is FirConstructorImpl } as? FirConstructorImpl)?.typeParameters?.forEach { it.accept(visitor, data) } declarations.forEach { it.accept(visitor, data) } superTypeRefs.forEach { it.accept(visitor, data) } + controlFlowGraphReference.accept(visitor, data) } override fun transformChildren(transformer: FirTransformer, data: D): FirSealedClassImpl { @@ -66,6 +70,7 @@ internal class FirSealedClassImpl( declarations.transformInplace(transformer, data) companionObject = declarations.asSequence().filterIsInstance().firstOrNull { it.status.isCompanion } superTypeRefs.transformInplace(transformer, data) + transformControlFlowGraphReference(transformer, data) return this } @@ -74,6 +79,11 @@ internal class FirSealedClassImpl( return this } + override fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirSealedClassImpl { + controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data) + return this + } + override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) { resolvePhase = newResolvePhase } diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FieldSets.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FieldSets.kt index 8a3f1234035..eada563bc62 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FieldSets.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FieldSets.kt @@ -71,7 +71,7 @@ object FieldSets { val status = field("status", declarationStatus) - val controlFlowGraphReferenceField = field("controlFlowGraphReference", controlFlowGraphReference) + val controlFlowGraphReferenceField = field("controlFlowGraphReference", controlFlowGraphReference).withTransform() val visibility = field(visibilityType) diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt index 237367c5e0d..77096fae03d 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt @@ -85,7 +85,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild function.configure { withArg("F", "FirFunction") parentArg(callableDeclaration, "F", "F") - +controlFlowGraphReferenceField.withTransform() + +controlFlowGraphReferenceField +symbol("FirFunctionSymbol", "F") +fieldList(valueParameter, withReplace = true).withTransform() +body(nullable = true) @@ -231,11 +231,13 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild +field("companionObject", regularClass, nullable = true) +booleanField("hasLazyNestedClassifiers") +superTypeRefs(withReplace = true) + +controlFlowGraphReferenceField } anonymousObject.configure { parentArg(klass, "F", anonymousObject) +symbol("FirAnonymousObjectSymbol") + +controlFlowGraphReferenceField } sealedClass.configure { @@ -285,7 +287,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild property.configure { parentArg(variable, "F", property) parentArg(callableMemberDeclaration, "F", property) - +controlFlowGraphReferenceField.withTransform() + +controlFlowGraphReferenceField +symbol("FirPropertySymbol") +field("backingFieldSymbol", backingFieldSymbolType) +booleanField("isLocal")