[FIR] Add replaceControlFlowGraphReference function for FirFunction

This commit is contained in:
Oleg Ivanov
2020-07-14 17:57:56 +03:00
parent 7da94cc299
commit 15598b62c9
52 changed files with 168 additions and 286 deletions
@@ -27,10 +27,10 @@ class ControlFlowAnalysisDiagnosticComponent(collector: AbstractDiagnosticCollec
private fun <F : FirClass<F>> visitClass( private fun <F : FirClass<F>> visitClass(
klass: FirClass<F>, klass: FirClass<F>,
controlFlowGraphReference: FirControlFlowGraphReference, controlFlowGraphReference: FirControlFlowGraphReference?,
data: CheckerContext data: CheckerContext
) { ) {
val graph = controlFlowGraphReference.controlFlowGraph ?: return val graph = controlFlowGraphReference?.controlFlowGraph ?: return
runCheck { runCheck {
controlFlowAnalyzer.analyzeClassInitializer(klass, graph, data, it) controlFlowAnalyzer.analyzeClassInitializer(klass, graph, data, it)
} }
@@ -38,7 +38,7 @@ class ControlFlowAnalysisDiagnosticComponent(collector: AbstractDiagnosticCollec
// ------------------------------- Property initializer ------------------------------- // ------------------------------- Property initializer -------------------------------
override fun visitProperty(property: FirProperty, data: CheckerContext) { override fun visitProperty(property: FirProperty, data: CheckerContext) {
val graph = property.controlFlowGraphReference.controlFlowGraph ?: return val graph = property.controlFlowGraphReference?.controlFlowGraph ?: return
runCheck { runCheck {
controlFlowAnalyzer.analyzePropertyInitializer(property, graph, data, it) controlFlowAnalyzer.analyzePropertyInitializer(property, graph, data, it)
} }
@@ -47,7 +47,7 @@ class ControlFlowAnalysisDiagnosticComponent(collector: AbstractDiagnosticCollec
// ------------------------------- Function ------------------------------- // ------------------------------- Function -------------------------------
override fun <F : FirFunction<F>> visitFunction(function: FirFunction<F>, data: CheckerContext) { override fun <F : FirFunction<F>> visitFunction(function: FirFunction<F>, data: CheckerContext) {
val graph = function.controlFlowGraphReference.controlFlowGraph ?: return val graph = function.controlFlowGraphReference?.controlFlowGraph ?: return
runCheck { runCheck {
controlFlowAnalyzer.analyzeFunction(function, graph, data, it) controlFlowAnalyzer.analyzeFunction(function, graph, data, it)
} }
@@ -18,7 +18,6 @@ import org.jetbrains.kotlin.fir.declarations.builder.FirRegularClassBuilder
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.java.JavaTypeParameterStack import org.jetbrains.kotlin.fir.java.JavaTypeParameterStack
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference 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.scopes.FirScopeProvider
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -47,7 +46,7 @@ class FirJavaClass @FirImplementationDetail internal constructor(
internal val existingNestedClassifierNames: List<Name> internal val existingNestedClassifierNames: List<Name>
) : FirRegularClass() { ) : FirRegularClass() {
override val hasLazyNestedClassifiers: Boolean get() = true override val hasLazyNestedClassifiers: Boolean get() = true
override val controlFlowGraphReference: FirControlFlowGraphReference get() = FirEmptyControlFlowGraphReference override val controlFlowGraphReference: FirControlFlowGraphReference? get() = null
init { init {
symbol.bind(this) symbol.bind(this)
@@ -70,6 +69,8 @@ class FirJavaClass @FirImplementationDetail internal constructor(
resolvePhase = newResolvePhase resolvePhase = newResolvePhase
} }
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {}
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) { override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
declarations.forEach { it.accept(visitor, data) } declarations.forEach { it.accept(visitor, data) }
annotations.forEach { it.accept(visitor, data) } annotations.forEach { it.accept(visitor, data) }
@@ -97,10 +98,6 @@ class FirJavaClass @FirImplementationDetail internal constructor(
return this return this
} }
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirRegularClass {
return this
}
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirJavaClass { override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirJavaClass {
annotations.transformInplace(transformer, data) annotations.transformInplace(transformer, data)
return this return this
@@ -16,7 +16,6 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirBlock
import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.visitors.FirTransformer import org.jetbrains.kotlin.fir.visitors.FirTransformer
@@ -56,17 +55,13 @@ class FirJavaConstructor @FirImplementationDetail constructor(
override val attributes: FirDeclarationAttributes = FirDeclarationAttributes() override val attributes: FirDeclarationAttributes = FirDeclarationAttributes()
override val controlFlowGraphReference: FirControlFlowGraphReference get() = FirEmptyControlFlowGraphReference override val controlFlowGraphReference: FirControlFlowGraphReference? get() = null
override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirJavaConstructor { override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirJavaConstructor {
valueParameters.transformInplace(transformer, data) valueParameters.transformInplace(transformer, data)
return this return this
} }
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirJavaConstructor {
return this
}
override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirConstructor { override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirConstructor {
returnTypeRef = returnTypeRef.transformSingle(transformer, data) returnTypeRef = returnTypeRef.transformSingle(transformer, data)
return this return this
@@ -78,7 +73,7 @@ class FirJavaConstructor @FirImplementationDetail constructor(
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)
controlFlowGraphReference.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data)
typeParameters.forEach { it.accept(visitor, data) } typeParameters.forEach { it.accept(visitor, data) }
valueParameters.forEach { it.accept(visitor, data) } valueParameters.forEach { it.accept(visitor, data) }
status.accept(visitor, data) status.accept(visitor, data)
@@ -87,7 +82,6 @@ class FirJavaConstructor @FirImplementationDetail constructor(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirJavaConstructor { override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirJavaConstructor {
transformReturnTypeRef(transformer, data) transformReturnTypeRef(transformer, data)
transformControlFlowGraphReference(transformer, data)
transformTypeParameters(transformer, data) transformTypeParameters(transformer, data)
transformValueParameters(transformer, data) transformValueParameters(transformer, data)
status = status.transformSingle(transformer, data) status = status.transformSingle(transformer, data)
@@ -134,6 +128,8 @@ class FirJavaConstructor @FirImplementationDetail constructor(
} }
override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {} override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {}
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {}
} }
@FirBuilderDsl @FirBuilderDsl
@@ -24,7 +24,6 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirEmptyArgumentList import org.jetbrains.kotlin.fir.expressions.FirEmptyArgumentList
import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression
import org.jetbrains.kotlin.fir.expressions.impl.FirStubStatement import org.jetbrains.kotlin.fir.expressions.impl.FirStubStatement
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirStubReference import org.jetbrains.kotlin.fir.references.impl.FirStubReference
import org.jetbrains.kotlin.fir.render import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -165,7 +164,7 @@ abstract class AbstractRawFirBuilderTestCase : KtParsingTestCase(
private fun throwTwiceVisitingError(element: FirElement) { private fun throwTwiceVisitingError(element: FirElement) {
if (element is FirTypeRef || element is FirNoReceiverExpression || element is FirTypeParameter || if (element is FirTypeRef || element is FirNoReceiverExpression || element is FirTypeParameter ||
element is FirEmptyContractDescription || element is FirEmptyControlFlowGraphReference || element is FirEmptyContractDescription ||
element is FirStubReference || element.isExtensionFunctionAnnotation || element is FirEmptyArgumentList || element is FirStubReference || element.isExtensionFunctionAnnotation || element is FirEmptyArgumentList ||
element is FirStubStatement element is FirStubStatement
) { ) {
@@ -68,7 +68,7 @@ fun FirAnonymousFunction.copy(
annotations: List<FirAnnotationCall> = this.annotations, annotations: List<FirAnnotationCall> = this.annotations,
typeRef: FirTypeRef = this.typeRef, typeRef: FirTypeRef = this.typeRef,
label: FirLabel? = this.label, label: FirLabel? = this.label,
controlFlowGraphReference: FirControlFlowGraphReference = this.controlFlowGraphReference, controlFlowGraphReference: FirControlFlowGraphReference? = this.controlFlowGraphReference,
invocationKind: EventOccurrencesRange? = this.invocationKind invocationKind: EventOccurrencesRange? = this.invocationKind
): FirAnonymousFunction { ): FirAnonymousFunction {
return buildAnonymousFunction { return buildAnonymousFunction {
@@ -133,7 +133,7 @@ sealed class CFGNodeWithCfgOwner<out E : FirControlFlowGraphOwner>(owner: Contro
} }
val subGraphs: List<ControlFlowGraph> by lazy { val subGraphs: List<ControlFlowGraph> by lazy {
_subGraphs.also { it.addIfNotNull(fir.controlFlowGraphReference.controlFlowGraph) } _subGraphs.also { it.addIfNotNull(fir.controlFlowGraphReference?.controlFlowGraph) }
} }
} }
@@ -132,7 +132,7 @@ class ControlFlowGraphBuilder {
else -> fir.extractArgument() else -> fir.extractArgument()
} }
val exitNode = function.controlFlowGraphReference.controlFlowGraph?.exitNode val exitNode = function.controlFlowGraphReference?.controlFlowGraph?.exitNode
?: exitsOfAnonymousFunctions.getValue(function.symbol) ?: exitsOfAnonymousFunctions.getValue(function.symbol)
return exitNode.previousNodes.mapNotNullTo(mutableSetOf()) { return exitNode.previousNodes.mapNotNullTo(mutableSetOf()) {
it.extractArgument() as FirStatement? it.extractArgument() as FirStatement?
@@ -368,8 +368,8 @@ class ControlFlowGraphBuilder {
var prevInitPartNode: CFGNode<*>? = null var prevInitPartNode: CFGNode<*>? = null
for (declaration in klass.declarations) { for (declaration in klass.declarations) {
val graph = when (declaration) { val graph = when (declaration) {
is FirProperty -> declaration.controlFlowGraphReference.controlFlowGraph is FirProperty -> declaration.controlFlowGraphReference?.controlFlowGraph
is FirAnonymousInitializer -> declaration.controlFlowGraphReference.controlFlowGraph is FirAnonymousInitializer -> declaration.controlFlowGraphReference?.controlFlowGraph
else -> null else -> null
} ?: continue } ?: continue
@@ -430,7 +430,7 @@ class ControlFlowGraphBuilder {
fun visitLocalClassFunctions(klass: FirClass<*>, node: CFGNodeWithCfgOwner<*>) { fun visitLocalClassFunctions(klass: FirClass<*>, node: CFGNodeWithCfgOwner<*>) {
klass.declarations.filterIsInstance<FirFunction<*>>().forEach { function -> klass.declarations.filterIsInstance<FirFunction<*>>().forEach { function ->
val functionGraph = function.controlFlowGraphReference.controlFlowGraph val functionGraph = function.controlFlowGraphReference?.controlFlowGraph
if (functionGraph != null && functionGraph.owner == null) { if (functionGraph != null && functionGraph.owner == null) {
addEdge(node, functionGraph.enterNode, preferredKind = EdgeKind.CfgForward) addEdge(node, functionGraph.enterNode, preferredKind = EdgeKind.CfgForward)
node.addSubGraph(functionGraph) node.addSubGraph(functionGraph)
@@ -1115,11 +1115,11 @@ class ControlFlowGraphBuilder {
} }
override fun visitAnonymousFunction(anonymousFunction: FirAnonymousFunction) { override fun visitAnonymousFunction(anonymousFunction: FirAnonymousFunction) {
anonymousFunction.controlFlowGraphReference.accept(this) anonymousFunction.controlFlowGraphReference?.accept(this)
} }
override fun visitAnonymousObject(anonymousObject: FirAnonymousObject) { override fun visitAnonymousObject(anonymousObject: FirAnonymousObject) {
anonymousObject.controlFlowGraphReference.accept(this) anonymousObject.controlFlowGraphReference?.accept(this)
} }
override fun visitControlFlowGraphReference(controlFlowGraphReference: FirControlFlowGraphReference) { override fun visitControlFlowGraphReference(controlFlowGraphReference: FirControlFlowGraphReference) {
@@ -1,42 +0,0 @@
/*
* Copyright 2010-2019 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.resolve.transformers
import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.declarations.FirFunction
import org.jetbrains.kotlin.fir.expressions.FirStatement
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.resolve.dfa.FirControlFlowGraphReferenceImpl
import org.jetbrains.kotlin.fir.resolve.dfa.cfg.ControlFlowGraph
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
import org.jetbrains.kotlin.fir.visitors.FirTransformer
import org.jetbrains.kotlin.fir.visitors.compose
object ControlFlowGraphReferenceTransformer : FirTransformer<ControlFlowGraph>() {
override fun <E : FirElement> transformElement(element: E, data: ControlFlowGraph): CompositeTransformResult<E> {
return element.compose()
}
override fun <F : FirFunction<F>> transformFunction(
function: FirFunction<F>,
data: ControlFlowGraph
): CompositeTransformResult<FirStatement> {
return (function.transformChildren(this, data) as FirFunction<*>).compose()
}
override fun transformControlFlowGraphReference(
controlFlowGraphReference: FirControlFlowGraphReference,
data: ControlFlowGraph
): CompositeTransformResult<FirControlFlowGraphReference> {
return if (controlFlowGraphReference is FirEmptyControlFlowGraphReference) {
FirControlFlowGraphReferenceImpl(data).compose()
} else {
controlFlowGraphReference.compose()
}
}
}
@@ -18,10 +18,10 @@ import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.expressions.builder.buildReturnExpression import org.jetbrains.kotlin.fir.expressions.builder.buildReturnExpression
import org.jetbrains.kotlin.fir.expressions.builder.buildUnitExpression import org.jetbrains.kotlin.fir.expressions.builder.buildUnitExpression
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.resolve.* import org.jetbrains.kotlin.fir.resolve.*
import org.jetbrains.kotlin.fir.resolve.calls.FirNamedReferenceWithCandidate import org.jetbrains.kotlin.fir.resolve.calls.FirNamedReferenceWithCandidate
import org.jetbrains.kotlin.fir.resolve.calls.ImplicitExtensionReceiverValue import org.jetbrains.kotlin.fir.resolve.calls.ImplicitExtensionReceiverValue
import org.jetbrains.kotlin.fir.resolve.dfa.FirControlFlowGraphReferenceImpl
import org.jetbrains.kotlin.fir.resolve.inference.FirDelegatedPropertyInferenceSession import org.jetbrains.kotlin.fir.resolve.inference.FirDelegatedPropertyInferenceSession
import org.jetbrains.kotlin.fir.resolve.inference.extractLambdaInfoFromFunctionalType import org.jetbrains.kotlin.fir.resolve.inference.extractLambdaInfoFromFunctionalType
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
@@ -149,7 +149,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor
} }
property.replaceResolvePhase(transformerPhase) property.replaceResolvePhase(transformerPhase)
dataFlowAnalyzer.exitProperty(property)?.let { dataFlowAnalyzer.exitProperty(property)?.let {
property.transformControlFlowGraphReference(ControlFlowGraphReferenceTransformer, it) property.replaceControlFlowGraphReference(FirControlFlowGraphReferenceImpl(it))
} }
property.compose() property.compose()
} }
@@ -377,7 +377,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor
if (notAnalyzed) { if (notAnalyzed) {
if (!implicitTypeOnly) { if (!implicitTypeOnly) {
val controlFlowGraph = dataFlowAnalyzer.exitRegularClass(result) val controlFlowGraph = dataFlowAnalyzer.exitRegularClass(result)
result.transformControlFlowGraphReference(ControlFlowGraphReferenceTransformer, controlFlowGraph) result.replaceControlFlowGraphReference(FirControlFlowGraphReferenceImpl(controlFlowGraph))
} else { } else {
dataFlowAnalyzer.exitClass() dataFlowAnalyzer.exitClass()
} }
@@ -410,9 +410,9 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor
var result = withScopesForClass(labelName, anonymousObject, type) { var result = withScopesForClass(labelName, anonymousObject, type) {
transformDeclarationContent(anonymousObject, data).single as FirAnonymousObject transformDeclarationContent(anonymousObject, data).single as FirAnonymousObject
} }
if (!implicitTypeOnly && result.controlFlowGraphReference == FirEmptyControlFlowGraphReference) { if (!implicitTypeOnly && result.controlFlowGraphReference == null) {
val graph = dataFlowAnalyzer.exitAnonymousObject(result) val graph = dataFlowAnalyzer.exitAnonymousObject(result)
result = result.transformControlFlowGraphReference(ControlFlowGraphReferenceTransformer, graph) result.replaceControlFlowGraphReference(FirControlFlowGraphReferenceImpl(graph))
} else { } else {
dataFlowAnalyzer.exitClass() dataFlowAnalyzer.exitClass()
} }
@@ -522,7 +522,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor
if (functionIsNotAnalyzed) { if (functionIsNotAnalyzed) {
val result = it.single as FirFunction<*> val result = it.single as FirFunction<*>
val controlFlowGraph = dataFlowAnalyzer.exitFunction(result) val controlFlowGraph = dataFlowAnalyzer.exitFunction(result)
result.transformControlFlowGraphReference(ControlFlowGraphReferenceTransformer, controlFlowGraph) result.replaceControlFlowGraphReference(FirControlFlowGraphReferenceImpl(controlFlowGraph))
} }
} as CompositeTransformResult<FirStatement> } as CompositeTransformResult<FirStatement>
} }
@@ -594,7 +594,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor
} }
val graph = dataFlowAnalyzer.exitFunction(constructor) val graph = dataFlowAnalyzer.exitFunction(constructor)
constructor.transformControlFlowGraphReference(ControlFlowGraphReferenceTransformer, graph) constructor.replaceControlFlowGraphReference(FirControlFlowGraphReferenceImpl(graph))
constructor.compose() constructor.compose()
} }
} }
@@ -612,7 +612,8 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor
val result = val result =
transformDeclarationContent(anonymousInitializer, ResolutionMode.ContextIndependent).single as FirAnonymousInitializer transformDeclarationContent(anonymousInitializer, ResolutionMode.ContextIndependent).single as FirAnonymousInitializer
val graph = dataFlowAnalyzer.exitInitBlock(result) val graph = dataFlowAnalyzer.exitInitBlock(result)
result.transformControlFlowGraphReference(ControlFlowGraphReferenceTransformer, graph).compose() result.replaceControlFlowGraphReference(FirControlFlowGraphReferenceImpl(graph))
result.compose()
} }
} }
@@ -633,7 +634,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor
).single as FirValueParameter ).single as FirValueParameter
dataFlowAnalyzer.exitValueParameter(result)?.let { graph -> dataFlowAnalyzer.exitValueParameter(result)?.let { graph ->
result.transformControlFlowGraphReference(ControlFlowGraphReferenceTransformer, graph) result.replaceControlFlowGraphReference(FirControlFlowGraphReferenceImpl(graph))
} }
return result.compose() return result.compose()
@@ -31,7 +31,7 @@ abstract class FirAnonymousFunction : FirFunction<FirAnonymousFunction>, FirExpr
abstract override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
abstract override val returnTypeRef: FirTypeRef abstract override val returnTypeRef: FirTypeRef
abstract override val receiverTypeRef: FirTypeRef? abstract override val receiverTypeRef: FirTypeRef?
abstract override val controlFlowGraphReference: FirControlFlowGraphReference abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
abstract override val valueParameters: List<FirValueParameter> abstract override val valueParameters: List<FirValueParameter>
abstract override val body: FirBlock? abstract override val body: FirBlock?
abstract override val typeRef: FirTypeRef abstract override val typeRef: FirTypeRef
@@ -49,6 +49,8 @@ abstract class FirAnonymousFunction : FirFunction<FirAnonymousFunction>, FirExpr
abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
abstract override fun replaceValueParameters(newValueParameters: List<FirValueParameter>) abstract override fun replaceValueParameters(newValueParameters: List<FirValueParameter>)
abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) abstract override fun replaceTypeRef(newTypeRef: FirTypeRef)
@@ -61,8 +63,6 @@ abstract class FirAnonymousFunction : FirFunction<FirAnonymousFunction>, FirExpr
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirAnonymousFunction abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirAnonymousFunction
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirAnonymousFunction
abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirAnonymousFunction abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirAnonymousFunction
abstract override fun <D> transformBody(transformer: FirTransformer<D>, data: D): FirAnonymousFunction abstract override fun <D> transformBody(transformer: FirTransformer<D>, data: D): FirAnonymousFunction
@@ -25,7 +25,7 @@ abstract class FirAnonymousInitializer : FirPureAbstractElement(), FirDeclaratio
abstract override val resolvePhase: FirResolvePhase abstract override val resolvePhase: FirResolvePhase
abstract override val origin: FirDeclarationOrigin abstract override val origin: FirDeclarationOrigin
abstract override val attributes: FirDeclarationAttributes abstract override val attributes: FirDeclarationAttributes
abstract override val controlFlowGraphReference: FirControlFlowGraphReference abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
abstract val body: FirBlock? abstract val body: FirBlock?
abstract override val symbol: FirAnonymousInitializerSymbol abstract override val symbol: FirAnonymousInitializerSymbol
@@ -33,5 +33,5 @@ abstract class FirAnonymousInitializer : FirPureAbstractElement(), FirDeclaratio
abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase)
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirAnonymousInitializer abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
} }
@@ -33,7 +33,7 @@ abstract class FirAnonymousObject : FirClass<FirAnonymousObject>, FirControlFlow
abstract override val declarations: List<FirDeclaration> abstract override val declarations: List<FirDeclaration>
abstract override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
abstract override val scopeProvider: FirScopeProvider abstract override val scopeProvider: FirScopeProvider
abstract override val controlFlowGraphReference: FirControlFlowGraphReference abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
abstract override val typeRef: FirTypeRef abstract override val typeRef: FirTypeRef
abstract override val symbol: FirAnonymousObjectSymbol abstract override val symbol: FirAnonymousObjectSymbol
@@ -43,6 +43,8 @@ abstract class FirAnonymousObject : FirClass<FirAnonymousObject>, FirControlFlow
abstract override fun replaceSuperTypeRefs(newSuperTypeRefs: List<FirTypeRef>) abstract override fun replaceSuperTypeRefs(newSuperTypeRefs: List<FirTypeRef>)
abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) abstract override fun replaceTypeRef(newTypeRef: FirTypeRef)
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirAnonymousObject abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirAnonymousObject
@@ -52,6 +54,4 @@ abstract class FirAnonymousObject : FirClass<FirAnonymousObject>, FirControlFlow
abstract override fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirAnonymousObject abstract override fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirAnonymousObject
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirAnonymousObject abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirAnonymousObject
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirAnonymousObject
} }
@@ -31,7 +31,7 @@ abstract class FirConstructor : FirPureAbstractElement(), FirFunction<FirConstru
abstract override val returnTypeRef: FirTypeRef abstract override val returnTypeRef: FirTypeRef
abstract override val receiverTypeRef: FirTypeRef? abstract override val receiverTypeRef: FirTypeRef?
abstract override val typeParameters: List<FirTypeParameterRef> abstract override val typeParameters: List<FirTypeParameterRef>
abstract override val controlFlowGraphReference: FirControlFlowGraphReference abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
abstract override val valueParameters: List<FirValueParameter> abstract override val valueParameters: List<FirValueParameter>
abstract override val status: FirDeclarationStatus abstract override val status: FirDeclarationStatus
abstract override val containerSource: DeserializedContainerSource? abstract override val containerSource: DeserializedContainerSource?
@@ -49,6 +49,8 @@ abstract class FirConstructor : FirPureAbstractElement(), FirFunction<FirConstru
abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
abstract override fun replaceValueParameters(newValueParameters: List<FirValueParameter>) abstract override fun replaceValueParameters(newValueParameters: List<FirValueParameter>)
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirConstructor abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirConstructor
@@ -57,8 +59,6 @@ abstract class FirConstructor : FirPureAbstractElement(), FirFunction<FirConstru
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirConstructor abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirConstructor
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirConstructor
abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirConstructor abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirConstructor
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirConstructor abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirConstructor
@@ -17,9 +17,9 @@ import org.jetbrains.kotlin.fir.visitors.*
interface FirControlFlowGraphOwner : FirElement { interface FirControlFlowGraphOwner : FirElement {
override val source: FirSourceElement? override val source: FirSourceElement?
val controlFlowGraphReference: FirControlFlowGraphReference val controlFlowGraphReference: FirControlFlowGraphReference?
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitControlFlowGraphOwner(this, data) override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitControlFlowGraphOwner(this, data)
fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirControlFlowGraphOwner fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
} }
@@ -31,7 +31,7 @@ abstract class FirErrorFunction : FirPureAbstractElement(), FirFunction<FirError
abstract override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
abstract override val returnTypeRef: FirTypeRef abstract override val returnTypeRef: FirTypeRef
abstract override val receiverTypeRef: FirTypeRef? abstract override val receiverTypeRef: FirTypeRef?
abstract override val controlFlowGraphReference: FirControlFlowGraphReference abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
abstract override val valueParameters: List<FirValueParameter> abstract override val valueParameters: List<FirValueParameter>
abstract override val body: FirBlock? abstract override val body: FirBlock?
abstract override val diagnostic: ConeDiagnostic abstract override val diagnostic: ConeDiagnostic
@@ -46,6 +46,8 @@ abstract class FirErrorFunction : FirPureAbstractElement(), FirFunction<FirError
abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
abstract override fun replaceValueParameters(newValueParameters: List<FirValueParameter>) abstract override fun replaceValueParameters(newValueParameters: List<FirValueParameter>)
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirErrorFunction abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirErrorFunction
@@ -54,8 +56,6 @@ abstract class FirErrorFunction : FirPureAbstractElement(), FirFunction<FirError
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirErrorFunction abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirErrorFunction
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirErrorFunction
abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirErrorFunction abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirErrorFunction
abstract override fun <D> transformBody(transformer: FirTransformer<D>, data: D): FirErrorFunction abstract override fun <D> transformBody(transformer: FirTransformer<D>, data: D): FirErrorFunction
@@ -31,7 +31,7 @@ interface FirFunction<F : FirFunction<F>> : FirCallableDeclaration<F>, FirTarget
override val returnTypeRef: FirTypeRef override val returnTypeRef: FirTypeRef
override val receiverTypeRef: FirTypeRef? override val receiverTypeRef: FirTypeRef?
override val typeParameters: List<FirTypeParameterRef> override val typeParameters: List<FirTypeParameterRef>
override val controlFlowGraphReference: FirControlFlowGraphReference override val controlFlowGraphReference: FirControlFlowGraphReference?
override val symbol: FirFunctionSymbol<F> override val symbol: FirFunctionSymbol<F>
val valueParameters: List<FirValueParameter> val valueParameters: List<FirValueParameter>
val body: FirBlock? val body: FirBlock?
@@ -44,6 +44,8 @@ interface FirFunction<F : FirFunction<F>> : FirCallableDeclaration<F>, FirTarget
override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
fun replaceValueParameters(newValueParameters: List<FirValueParameter>) fun replaceValueParameters(newValueParameters: List<FirValueParameter>)
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirFunction<F> override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirFunction<F>
@@ -54,8 +56,6 @@ interface FirFunction<F : FirFunction<F>> : FirCallableDeclaration<F>, FirTarget
override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirFunction<F> override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirFunction<F>
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirFunction<F>
fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirFunction<F> fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirFunction<F>
fun <D> transformBody(transformer: FirTransformer<D>, data: D): FirFunction<F> fun <D> transformBody(transformer: FirTransformer<D>, data: D): FirFunction<F>
@@ -41,7 +41,7 @@ abstract class FirProperty : FirVariable<FirProperty>(), FirTypeParametersOwner,
abstract override val setter: FirPropertyAccessor? abstract override val setter: FirPropertyAccessor?
abstract override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
abstract override val typeParameters: List<FirTypeParameter> abstract override val typeParameters: List<FirTypeParameter>
abstract override val controlFlowGraphReference: FirControlFlowGraphReference abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
abstract override val containerSource: DeserializedContainerSource? abstract override val containerSource: DeserializedContainerSource?
abstract override val symbol: FirPropertySymbol abstract override val symbol: FirPropertySymbol
abstract val backingFieldSymbol: FirBackingFieldSymbol abstract val backingFieldSymbol: FirBackingFieldSymbol
@@ -56,6 +56,8 @@ abstract class FirProperty : FirVariable<FirProperty>(), FirTypeParametersOwner,
abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirProperty abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirProperty
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirProperty abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirProperty
@@ -72,8 +74,6 @@ abstract class FirProperty : FirVariable<FirProperty>(), FirTypeParametersOwner,
abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirProperty abstract override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirProperty
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirProperty
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirProperty abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirProperty
abstract override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirProperty abstract override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirProperty
@@ -29,7 +29,7 @@ abstract class FirPropertyAccessor : FirPureAbstractElement(), FirFunction<FirPr
abstract override val attributes: FirDeclarationAttributes abstract override val attributes: FirDeclarationAttributes
abstract override val returnTypeRef: FirTypeRef abstract override val returnTypeRef: FirTypeRef
abstract override val receiverTypeRef: FirTypeRef? abstract override val receiverTypeRef: FirTypeRef?
abstract override val controlFlowGraphReference: FirControlFlowGraphReference abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
abstract override val valueParameters: List<FirValueParameter> abstract override val valueParameters: List<FirValueParameter>
abstract override val body: FirBlock? abstract override val body: FirBlock?
abstract override val contractDescription: FirContractDescription abstract override val contractDescription: FirContractDescription
@@ -48,6 +48,8 @@ abstract class FirPropertyAccessor : FirPureAbstractElement(), FirFunction<FirPr
abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
abstract override fun replaceValueParameters(newValueParameters: List<FirValueParameter>) abstract override fun replaceValueParameters(newValueParameters: List<FirValueParameter>)
abstract override fun replaceContractDescription(newContractDescription: FirContractDescription) abstract override fun replaceContractDescription(newContractDescription: FirContractDescription)
@@ -56,8 +58,6 @@ abstract class FirPropertyAccessor : FirPureAbstractElement(), FirFunction<FirPr
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirPropertyAccessor abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirPropertyAccessor
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirPropertyAccessor
abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirPropertyAccessor abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirPropertyAccessor
abstract override fun <D> transformBody(transformer: FirTransformer<D>, data: D): FirPropertyAccessor abstract override fun <D> transformBody(transformer: FirTransformer<D>, data: D): FirPropertyAccessor
@@ -31,7 +31,7 @@ abstract class FirRegularClass : FirPureAbstractElement(), FirMemberDeclaration,
abstract override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
abstract override val typeParameters: List<FirTypeParameterRef> abstract override val typeParameters: List<FirTypeParameterRef>
abstract override val status: FirDeclarationStatus abstract override val status: FirDeclarationStatus
abstract override val controlFlowGraphReference: FirControlFlowGraphReference abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
abstract override val classKind: ClassKind abstract override val classKind: ClassKind
abstract override val declarations: List<FirDeclaration> abstract override val declarations: List<FirDeclaration>
abstract override val scopeProvider: FirScopeProvider abstract override val scopeProvider: FirScopeProvider
@@ -45,6 +45,8 @@ abstract class FirRegularClass : FirPureAbstractElement(), FirMemberDeclaration,
abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase)
abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
abstract override fun replaceSuperTypeRefs(newSuperTypeRefs: List<FirTypeRef>) abstract override fun replaceSuperTypeRefs(newSuperTypeRefs: List<FirTypeRef>)
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirRegularClass abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirRegularClass
@@ -53,8 +55,6 @@ abstract class FirRegularClass : FirPureAbstractElement(), FirMemberDeclaration,
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirRegularClass abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirRegularClass
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirRegularClass
abstract override fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirRegularClass abstract override fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirRegularClass
abstract fun <D> transformCompanionObject(transformer: FirTransformer<D>, data: D): FirRegularClass abstract fun <D> transformCompanionObject(transformer: FirTransformer<D>, data: D): FirRegularClass
@@ -31,7 +31,7 @@ abstract class FirSimpleFunction : FirPureAbstractElement(), FirFunction<FirSimp
abstract override val attributes: FirDeclarationAttributes abstract override val attributes: FirDeclarationAttributes
abstract override val returnTypeRef: FirTypeRef abstract override val returnTypeRef: FirTypeRef
abstract override val receiverTypeRef: FirTypeRef? abstract override val receiverTypeRef: FirTypeRef?
abstract override val controlFlowGraphReference: FirControlFlowGraphReference abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
abstract override val valueParameters: List<FirValueParameter> abstract override val valueParameters: List<FirValueParameter>
abstract override val body: FirBlock? abstract override val body: FirBlock?
abstract override val status: FirDeclarationStatus abstract override val status: FirDeclarationStatus
@@ -50,6 +50,8 @@ abstract class FirSimpleFunction : FirPureAbstractElement(), FirFunction<FirSimp
abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
abstract override fun replaceValueParameters(newValueParameters: List<FirValueParameter>) abstract override fun replaceValueParameters(newValueParameters: List<FirValueParameter>)
abstract override fun replaceContractDescription(newContractDescription: FirContractDescription) abstract override fun replaceContractDescription(newContractDescription: FirContractDescription)
@@ -58,8 +60,6 @@ abstract class FirSimpleFunction : FirPureAbstractElement(), FirFunction<FirSimp
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirSimpleFunction abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirSimpleFunction
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirSimpleFunction
abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirSimpleFunction abstract override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirSimpleFunction
abstract override fun <D> transformBody(transformer: FirTransformer<D>, data: D): FirSimpleFunction abstract override fun <D> transformBody(transformer: FirTransformer<D>, data: D): FirSimpleFunction
@@ -39,7 +39,7 @@ abstract class FirValueParameter : FirVariable<FirValueParameter>(), FirControlF
abstract override val getter: FirPropertyAccessor? abstract override val getter: FirPropertyAccessor?
abstract override val setter: FirPropertyAccessor? abstract override val setter: FirPropertyAccessor?
abstract override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
abstract override val controlFlowGraphReference: FirControlFlowGraphReference abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
abstract val defaultValue: FirExpression? abstract val defaultValue: FirExpression?
abstract val isCrossinline: Boolean abstract val isCrossinline: Boolean
abstract val isNoinline: Boolean abstract val isNoinline: Boolean
@@ -53,6 +53,8 @@ abstract class FirValueParameter : FirVariable<FirValueParameter>(), FirControlF
abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?)
abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirValueParameter abstract override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirValueParameter
abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirValueParameter abstract override fun <D> transformReceiverTypeRef(transformer: FirTransformer<D>, data: D): FirValueParameter
@@ -67,7 +69,5 @@ abstract class FirValueParameter : FirVariable<FirValueParameter>(), FirControlF
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> transformControlFlowGraphReference(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
} }
@@ -41,7 +41,7 @@ interface FirAbstractConstructorBuilder : FirFunctionBuilder {
abstract var resolvePhase: FirResolvePhase abstract var resolvePhase: FirResolvePhase
abstract var receiverTypeRef: FirTypeRef? abstract var receiverTypeRef: FirTypeRef?
abstract val typeParameters: MutableList<FirTypeParameterRef> abstract val typeParameters: MutableList<FirTypeParameterRef>
abstract var controlFlowGraphReference: FirControlFlowGraphReference abstract var controlFlowGraphReference: FirControlFlowGraphReference?
abstract var status: FirDeclarationStatus abstract var status: FirDeclarationStatus
abstract var containerSource: DeserializedContainerSource? abstract var containerSource: DeserializedContainerSource?
abstract var symbol: FirConstructorSymbol abstract var symbol: FirConstructorSymbol
@@ -24,7 +24,6 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirBlock
import org.jetbrains.kotlin.fir.expressions.builder.FirExpressionBuilder import org.jetbrains.kotlin.fir.expressions.builder.FirExpressionBuilder
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousFunctionSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
@@ -43,7 +42,7 @@ class FirAnonymousFunctionBuilder : FirFunctionBuilder, FirAnnotationContainerBu
override val annotations: MutableList<FirAnnotationCall> = mutableListOf() override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
override lateinit var returnTypeRef: FirTypeRef override lateinit var returnTypeRef: FirTypeRef
var receiverTypeRef: FirTypeRef? = null var receiverTypeRef: FirTypeRef? = null
var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference var controlFlowGraphReference: FirControlFlowGraphReference? = null
override val valueParameters: MutableList<FirValueParameter> = mutableListOf() override val valueParameters: MutableList<FirValueParameter> = mutableListOf()
override var body: FirBlock? = null override var body: FirBlock? = null
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null) override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null)
@@ -16,7 +16,6 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.declarations.impl.FirAnonymousInitializerImpl import org.jetbrains.kotlin.fir.declarations.impl.FirAnonymousInitializerImpl
import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirBlock
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
import org.jetbrains.kotlin.fir.visitors.* import org.jetbrains.kotlin.fir.visitors.*
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirAnonymousObjectImpl
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.builder.FirExpressionBuilder import org.jetbrains.kotlin.fir.expressions.builder.FirExpressionBuilder
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference 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.scopes.FirScopeProvider
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousObjectSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousObjectSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -23,7 +23,6 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirBlock
import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.visitors.* import org.jetbrains.kotlin.fir.visitors.*
@@ -72,7 +71,7 @@ open class FirConstructorBuilder : FirAbstractConstructorBuilder, FirAnnotationC
@Deprecated("Modification of 'controlFlowGraphReference' has no impact for FirConstructorBuilder", level = DeprecationLevel.HIDDEN) @Deprecated("Modification of 'controlFlowGraphReference' has no impact for FirConstructorBuilder", level = DeprecationLevel.HIDDEN)
override var controlFlowGraphReference: FirControlFlowGraphReference override var controlFlowGraphReference: FirControlFlowGraphReference?
get() = throw IllegalStateException() get() = throw IllegalStateException()
set(value) { set(value) {
throw IllegalStateException() throw IllegalStateException()
@@ -19,7 +19,6 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultSetterValueParameter
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirBlock
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirErrorFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirErrorFunctionSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.types.impl.FirErrorTypeRefImpl import org.jetbrains.kotlin.fir.types.impl.FirErrorTypeRefImpl
@@ -23,7 +23,6 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirBlock
import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.visitors.* import org.jetbrains.kotlin.fir.visitors.*
@@ -72,7 +71,7 @@ class FirPrimaryConstructorBuilder : FirAbstractConstructorBuilder, FirAnnotatio
@Deprecated("Modification of 'controlFlowGraphReference' has no impact for FirPrimaryConstructorBuilder", level = DeprecationLevel.HIDDEN) @Deprecated("Modification of 'controlFlowGraphReference' has no impact for FirPrimaryConstructorBuilder", level = DeprecationLevel.HIDDEN)
override var controlFlowGraphReference: FirControlFlowGraphReference override var controlFlowGraphReference: FirControlFlowGraphReference?
get() = throw IllegalStateException() get() = throw IllegalStateException()
set(value) { set(value) {
throw IllegalStateException() throw IllegalStateException()
@@ -26,7 +26,6 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirPropertyAccessorImpl
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirBlock
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertyAccessorSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertyAccessorSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.visitors.* import org.jetbrains.kotlin.fir.visitors.*
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirPropertyImpl
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
@@ -23,7 +23,6 @@ import org.jetbrains.kotlin.fir.declarations.builder.FirTypeParameterRefsOwnerBu
import org.jetbrains.kotlin.fir.declarations.impl.FirRegularClassImpl import org.jetbrains.kotlin.fir.declarations.impl.FirRegularClassImpl
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference 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.scopes.FirScopeProvider
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -26,7 +26,6 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirSimpleFunctionImpl
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirBlock
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.visitors.* import org.jetbrains.kotlin.fir.visitors.*
@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirValueParameterImpl
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -34,7 +34,7 @@ internal class FirAnonymousFunctionImpl(
override val annotations: MutableList<FirAnnotationCall>, override val annotations: MutableList<FirAnnotationCall>,
override var returnTypeRef: FirTypeRef, override var returnTypeRef: FirTypeRef,
override var receiverTypeRef: FirTypeRef?, override var receiverTypeRef: FirTypeRef?,
override var controlFlowGraphReference: FirControlFlowGraphReference, override var controlFlowGraphReference: FirControlFlowGraphReference?,
override val valueParameters: MutableList<FirValueParameter>, override val valueParameters: MutableList<FirValueParameter>,
override var body: FirBlock?, override var body: FirBlock?,
override var typeRef: FirTypeRef, override var typeRef: FirTypeRef,
@@ -55,7 +55,7 @@ internal class FirAnonymousFunctionImpl(
annotations.forEach { it.accept(visitor, data) } annotations.forEach { it.accept(visitor, data) }
returnTypeRef.accept(visitor, data) returnTypeRef.accept(visitor, data)
receiverTypeRef?.accept(visitor, data) receiverTypeRef?.accept(visitor, data)
controlFlowGraphReference.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data)
valueParameters.forEach { it.accept(visitor, data) } valueParameters.forEach { it.accept(visitor, data) }
body?.accept(visitor, data) body?.accept(visitor, data)
typeRef.accept(visitor, data) typeRef.accept(visitor, data)
@@ -67,7 +67,7 @@ internal class FirAnonymousFunctionImpl(
transformAnnotations(transformer, data) transformAnnotations(transformer, data)
transformReturnTypeRef(transformer, data) transformReturnTypeRef(transformer, data)
transformReceiverTypeRef(transformer, data) transformReceiverTypeRef(transformer, data)
transformControlFlowGraphReference(transformer, data) controlFlowGraphReference = controlFlowGraphReference?.transformSingle(transformer, data)
transformValueParameters(transformer, data) transformValueParameters(transformer, data)
transformBody(transformer, data) transformBody(transformer, data)
typeRef = typeRef.transformSingle(transformer, data) typeRef = typeRef.transformSingle(transformer, data)
@@ -91,11 +91,6 @@ internal class FirAnonymousFunctionImpl(
return this return this
} }
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirAnonymousFunctionImpl {
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
return this
}
override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirAnonymousFunctionImpl { override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirAnonymousFunctionImpl {
valueParameters.transformInplace(transformer, data) valueParameters.transformInplace(transformer, data)
return this return this
@@ -123,6 +118,10 @@ internal class FirAnonymousFunctionImpl(
receiverTypeRef = newReceiverTypeRef receiverTypeRef = newReceiverTypeRef
} }
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
controlFlowGraphReference = newControlFlowGraphReference
}
override fun replaceValueParameters(newValueParameters: List<FirValueParameter>) { override fun replaceValueParameters(newValueParameters: List<FirValueParameter>) {
valueParameters.clear() valueParameters.clear()
valueParameters.addAll(newValueParameters) valueParameters.addAll(newValueParameters)
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirBlock
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
import org.jetbrains.kotlin.fir.visitors.* import org.jetbrains.kotlin.fir.visitors.*
@@ -31,29 +30,28 @@ internal class FirAnonymousInitializerImpl(
override val symbol: FirAnonymousInitializerSymbol, override val symbol: FirAnonymousInitializerSymbol,
) : FirAnonymousInitializer() { ) : FirAnonymousInitializer() {
override val attributes: FirDeclarationAttributes = FirDeclarationAttributes() override val attributes: FirDeclarationAttributes = FirDeclarationAttributes()
override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference override var controlFlowGraphReference: FirControlFlowGraphReference? = null
init { init {
symbol.bind(this) symbol.bind(this)
} }
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) { override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
controlFlowGraphReference.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data)
body?.accept(visitor, data) body?.accept(visitor, data)
} }
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirAnonymousInitializerImpl { override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirAnonymousInitializerImpl {
transformControlFlowGraphReference(transformer, data) controlFlowGraphReference = controlFlowGraphReference?.transformSingle(transformer, data)
body = body?.transformSingle(transformer, data) body = body?.transformSingle(transformer, data)
return this return this
} }
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirAnonymousInitializerImpl {
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
return this
}
override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) { override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) {
resolvePhase = newResolvePhase resolvePhase = newResolvePhase
} }
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
controlFlowGraphReference = newControlFlowGraphReference
}
} }
@@ -16,7 +16,6 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference 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.scopes.FirScopeProvider
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousObjectSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousObjectSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -42,7 +41,7 @@ internal class FirAnonymousObjectImpl(
override val symbol: FirAnonymousObjectSymbol, override val symbol: FirAnonymousObjectSymbol,
) : FirAnonymousObject() { ) : FirAnonymousObject() {
override val attributes: FirDeclarationAttributes = FirDeclarationAttributes() override val attributes: FirDeclarationAttributes = FirDeclarationAttributes()
override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference override var controlFlowGraphReference: FirControlFlowGraphReference? = null
init { init {
symbol.bind(this) symbol.bind(this)
@@ -53,7 +52,7 @@ internal class FirAnonymousObjectImpl(
superTypeRefs.forEach { it.accept(visitor, data) } superTypeRefs.forEach { it.accept(visitor, data) }
declarations.forEach { it.accept(visitor, data) } declarations.forEach { it.accept(visitor, data) }
annotations.forEach { it.accept(visitor, data) } annotations.forEach { it.accept(visitor, data) }
controlFlowGraphReference.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data)
typeRef.accept(visitor, data) typeRef.accept(visitor, data)
} }
@@ -62,7 +61,7 @@ internal class FirAnonymousObjectImpl(
transformSuperTypeRefs(transformer, data) transformSuperTypeRefs(transformer, data)
transformDeclarations(transformer, data) transformDeclarations(transformer, data)
transformAnnotations(transformer, data) transformAnnotations(transformer, data)
transformControlFlowGraphReference(transformer, data) controlFlowGraphReference = controlFlowGraphReference?.transformSingle(transformer, data)
typeRef = typeRef.transformSingle(transformer, data) typeRef = typeRef.transformSingle(transformer, data)
return this return this
} }
@@ -87,11 +86,6 @@ internal class FirAnonymousObjectImpl(
return this return this
} }
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirAnonymousObjectImpl {
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
return this
}
override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) { override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) {
resolvePhase = newResolvePhase resolvePhase = newResolvePhase
} }
@@ -101,6 +95,10 @@ internal class FirAnonymousObjectImpl(
superTypeRefs.addAll(newSuperTypeRefs) superTypeRefs.addAll(newSuperTypeRefs)
} }
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
controlFlowGraphReference = newControlFlowGraphReference
}
override fun replaceTypeRef(newTypeRef: FirTypeRef) { override fun replaceTypeRef(newTypeRef: FirTypeRef) {
typeRef = newTypeRef typeRef = newTypeRef
} }
@@ -18,7 +18,6 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirBlock
import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
@@ -46,7 +45,7 @@ internal class FirConstructorImpl(
override var body: FirBlock?, override var body: FirBlock?,
) : FirConstructor() { ) : FirConstructor() {
override val attributes: FirDeclarationAttributes = FirDeclarationAttributes() override val attributes: FirDeclarationAttributes = FirDeclarationAttributes()
override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference override var controlFlowGraphReference: FirControlFlowGraphReference? = null
override val isPrimary: Boolean get() = false override val isPrimary: Boolean get() = false
init { init {
@@ -57,7 +56,7 @@ internal class FirConstructorImpl(
returnTypeRef.accept(visitor, data) returnTypeRef.accept(visitor, data)
receiverTypeRef?.accept(visitor, data) receiverTypeRef?.accept(visitor, data)
typeParameters.forEach { it.accept(visitor, data) } typeParameters.forEach { it.accept(visitor, data) }
controlFlowGraphReference.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data)
valueParameters.forEach { it.accept(visitor, data) } valueParameters.forEach { it.accept(visitor, data) }
status.accept(visitor, data) status.accept(visitor, data)
annotations.forEach { it.accept(visitor, data) } annotations.forEach { it.accept(visitor, data) }
@@ -69,7 +68,7 @@ internal class FirConstructorImpl(
transformReturnTypeRef(transformer, data) transformReturnTypeRef(transformer, data)
transformReceiverTypeRef(transformer, data) transformReceiverTypeRef(transformer, data)
transformTypeParameters(transformer, data) transformTypeParameters(transformer, data)
transformControlFlowGraphReference(transformer, data) controlFlowGraphReference = controlFlowGraphReference?.transformSingle(transformer, data)
transformValueParameters(transformer, data) transformValueParameters(transformer, data)
transformStatus(transformer, data) transformStatus(transformer, data)
transformAnnotations(transformer, data) transformAnnotations(transformer, data)
@@ -93,11 +92,6 @@ internal class FirConstructorImpl(
return this return this
} }
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirConstructorImpl {
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
return this
}
override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirConstructorImpl { override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirConstructorImpl {
valueParameters.transformInplace(transformer, data) valueParameters.transformInplace(transformer, data)
return this return this
@@ -135,6 +129,10 @@ internal class FirConstructorImpl(
receiverTypeRef = newReceiverTypeRef receiverTypeRef = newReceiverTypeRef
} }
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
controlFlowGraphReference = newControlFlowGraphReference
}
override fun replaceValueParameters(newValueParameters: List<FirValueParameter>) { override fun replaceValueParameters(newValueParameters: List<FirValueParameter>) {
valueParameters.clear() valueParameters.clear()
valueParameters.addAll(newValueParameters) valueParameters.addAll(newValueParameters)
@@ -15,7 +15,6 @@ import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -50,7 +49,7 @@ internal class FirDefaultSetterValueParameter(
) : FirValueParameter() { ) : FirValueParameter() {
override val attributes: FirDeclarationAttributes = FirDeclarationAttributes() override val attributes: FirDeclarationAttributes = FirDeclarationAttributes()
override val name: Name = Name.identifier("value") override val name: Name = Name.identifier("value")
override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference override var controlFlowGraphReference: FirControlFlowGraphReference? = null
init { init {
symbol.bind(this) symbol.bind(this)
@@ -65,7 +64,7 @@ internal class FirDefaultSetterValueParameter(
getter?.accept(visitor, data) getter?.accept(visitor, data)
setter?.accept(visitor, data) setter?.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,7 +75,6 @@ internal class FirDefaultSetterValueParameter(
transformDelegate(transformer, data) transformDelegate(transformer, data)
transformGetter(transformer, data) transformGetter(transformer, data)
transformSetter(transformer, data) transformSetter(transformer, data)
transformControlFlowGraphReference(transformer, data)
transformOtherChildren(transformer, data) transformOtherChildren(transformer, data)
return this return this
} }
@@ -116,13 +114,9 @@ internal class FirDefaultSetterValueParameter(
return this return this
} }
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter {
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
return this
}
override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter { override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirDefaultSetterValueParameter {
transformAnnotations(transformer, data) transformAnnotations(transformer, data)
controlFlowGraphReference = controlFlowGraphReference?.transformSingle(transformer, data)
defaultValue = defaultValue?.transformSingle(transformer, data) defaultValue = defaultValue?.transformSingle(transformer, data)
return this return this
} }
@@ -138,4 +132,8 @@ internal class FirDefaultSetterValueParameter(
override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) { override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {
receiverTypeRef = newReceiverTypeRef receiverTypeRef = newReceiverTypeRef
} }
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
controlFlowGraphReference = newControlFlowGraphReference
}
} }
@@ -17,7 +17,6 @@ import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirBlock
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirErrorFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirErrorFunctionSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.types.impl.FirErrorTypeRefImpl import org.jetbrains.kotlin.fir.types.impl.FirErrorTypeRefImpl
@@ -42,7 +41,7 @@ internal class FirErrorFunctionImpl(
override val attributes: FirDeclarationAttributes = FirDeclarationAttributes() override val attributes: FirDeclarationAttributes = FirDeclarationAttributes()
override var returnTypeRef: FirTypeRef = FirErrorTypeRefImpl(null, diagnostic) override var returnTypeRef: FirTypeRef = FirErrorTypeRefImpl(null, diagnostic)
override val receiverTypeRef: FirTypeRef? get() = null override val receiverTypeRef: FirTypeRef? get() = null
override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference override var controlFlowGraphReference: FirControlFlowGraphReference? = null
override val body: FirBlock? get() = null override val body: FirBlock? get() = null
init { init {
@@ -52,7 +51,7 @@ internal class FirErrorFunctionImpl(
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) { override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
annotations.forEach { it.accept(visitor, data) } annotations.forEach { it.accept(visitor, data) }
returnTypeRef.accept(visitor, data) returnTypeRef.accept(visitor, data)
controlFlowGraphReference.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data)
valueParameters.forEach { it.accept(visitor, data) } valueParameters.forEach { it.accept(visitor, data) }
typeParameters.forEach { it.accept(visitor, data) } typeParameters.forEach { it.accept(visitor, data) }
} }
@@ -60,7 +59,7 @@ internal class FirErrorFunctionImpl(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirErrorFunctionImpl { override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirErrorFunctionImpl {
transformAnnotations(transformer, data) transformAnnotations(transformer, data)
transformReturnTypeRef(transformer, data) transformReturnTypeRef(transformer, data)
transformControlFlowGraphReference(transformer, data) controlFlowGraphReference = controlFlowGraphReference?.transformSingle(transformer, data)
transformValueParameters(transformer, data) transformValueParameters(transformer, data)
transformTypeParameters(transformer, data) transformTypeParameters(transformer, data)
return this return this
@@ -80,11 +79,6 @@ internal class FirErrorFunctionImpl(
return this return this
} }
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirErrorFunctionImpl {
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
return this
}
override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirErrorFunctionImpl { override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirErrorFunctionImpl {
valueParameters.transformInplace(transformer, data) valueParameters.transformInplace(transformer, data)
return this return this
@@ -109,6 +103,10 @@ internal class FirErrorFunctionImpl(
override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {} override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {}
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
controlFlowGraphReference = newControlFlowGraphReference
}
override fun replaceValueParameters(newValueParameters: List<FirValueParameter>) { override fun replaceValueParameters(newValueParameters: List<FirValueParameter>) {
valueParameters.clear() valueParameters.clear()
valueParameters.addAll(newValueParameters) valueParameters.addAll(newValueParameters)
@@ -18,7 +18,6 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirBlock
import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
@@ -46,7 +45,7 @@ internal class FirPrimaryConstructor(
override var body: FirBlock?, override var body: FirBlock?,
) : FirConstructor() { ) : FirConstructor() {
override val attributes: FirDeclarationAttributes = FirDeclarationAttributes() override val attributes: FirDeclarationAttributes = FirDeclarationAttributes()
override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference override var controlFlowGraphReference: FirControlFlowGraphReference? = null
override val isPrimary: Boolean get() = true override val isPrimary: Boolean get() = true
init { init {
@@ -57,7 +56,7 @@ internal class FirPrimaryConstructor(
returnTypeRef.accept(visitor, data) returnTypeRef.accept(visitor, data)
receiverTypeRef?.accept(visitor, data) receiverTypeRef?.accept(visitor, data)
typeParameters.forEach { it.accept(visitor, data) } typeParameters.forEach { it.accept(visitor, data) }
controlFlowGraphReference.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data)
valueParameters.forEach { it.accept(visitor, data) } valueParameters.forEach { it.accept(visitor, data) }
status.accept(visitor, data) status.accept(visitor, data)
annotations.forEach { it.accept(visitor, data) } annotations.forEach { it.accept(visitor, data) }
@@ -69,7 +68,7 @@ internal class FirPrimaryConstructor(
transformReturnTypeRef(transformer, data) transformReturnTypeRef(transformer, data)
transformReceiverTypeRef(transformer, data) transformReceiverTypeRef(transformer, data)
transformTypeParameters(transformer, data) transformTypeParameters(transformer, data)
transformControlFlowGraphReference(transformer, data) controlFlowGraphReference = controlFlowGraphReference?.transformSingle(transformer, data)
transformValueParameters(transformer, data) transformValueParameters(transformer, data)
transformStatus(transformer, data) transformStatus(transformer, data)
transformAnnotations(transformer, data) transformAnnotations(transformer, data)
@@ -93,11 +92,6 @@ internal class FirPrimaryConstructor(
return this return this
} }
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirPrimaryConstructor {
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
return this
}
override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirPrimaryConstructor { override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirPrimaryConstructor {
valueParameters.transformInplace(transformer, data) valueParameters.transformInplace(transformer, data)
return this return this
@@ -135,6 +129,10 @@ internal class FirPrimaryConstructor(
receiverTypeRef = newReceiverTypeRef receiverTypeRef = newReceiverTypeRef
} }
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
controlFlowGraphReference = newControlFlowGraphReference
}
override fun replaceValueParameters(newValueParameters: List<FirValueParameter>) { override fun replaceValueParameters(newValueParameters: List<FirValueParameter>) {
valueParameters.clear() valueParameters.clear()
valueParameters.addAll(newValueParameters) valueParameters.addAll(newValueParameters)
@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirBlock
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertyAccessorSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertyAccessorSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.visitors.* import org.jetbrains.kotlin.fir.visitors.*
@@ -47,7 +46,7 @@ open class FirPropertyAccessorImpl @FirImplementationDetail constructor(
) : FirPropertyAccessor() { ) : FirPropertyAccessor() {
override val attributes: FirDeclarationAttributes = FirDeclarationAttributes() override val attributes: FirDeclarationAttributes = FirDeclarationAttributes()
override val receiverTypeRef: FirTypeRef? get() = null override val receiverTypeRef: FirTypeRef? get() = null
override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference override var controlFlowGraphReference: FirControlFlowGraphReference? = null
override val isSetter: Boolean get() = !isGetter override val isSetter: Boolean get() = !isGetter
init { init {
@@ -56,7 +55,7 @@ open class FirPropertyAccessorImpl @FirImplementationDetail constructor(
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)
controlFlowGraphReference.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data)
valueParameters.forEach { it.accept(visitor, data) } valueParameters.forEach { it.accept(visitor, data) }
body?.accept(visitor, data) body?.accept(visitor, data)
contractDescription.accept(visitor, data) contractDescription.accept(visitor, data)
@@ -67,7 +66,7 @@ open class FirPropertyAccessorImpl @FirImplementationDetail constructor(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirPropertyAccessorImpl { override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirPropertyAccessorImpl {
transformReturnTypeRef(transformer, data) transformReturnTypeRef(transformer, data)
transformControlFlowGraphReference(transformer, data) controlFlowGraphReference = controlFlowGraphReference?.transformSingle(transformer, data)
transformValueParameters(transformer, data) transformValueParameters(transformer, data)
transformBody(transformer, data) transformBody(transformer, data)
transformContractDescription(transformer, data) transformContractDescription(transformer, data)
@@ -86,11 +85,6 @@ open class FirPropertyAccessorImpl @FirImplementationDetail constructor(
return this return this
} }
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirPropertyAccessorImpl {
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
return this
}
override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirPropertyAccessorImpl { override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirPropertyAccessorImpl {
valueParameters.transformInplace(transformer, data) valueParameters.transformInplace(transformer, data)
return this return this
@@ -131,6 +125,10 @@ open class FirPropertyAccessorImpl @FirImplementationDetail constructor(
override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {} override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {}
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
controlFlowGraphReference = newControlFlowGraphReference
}
override fun replaceValueParameters(newValueParameters: List<FirValueParameter>) { override fun replaceValueParameters(newValueParameters: List<FirValueParameter>) {
valueParameters.clear() valueParameters.clear()
valueParameters.addAll(newValueParameters) valueParameters.addAll(newValueParameters)
@@ -17,7 +17,6 @@ import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
@@ -54,7 +53,7 @@ internal class FirPropertyImpl(
) : FirProperty() { ) : FirProperty() {
override val attributes: FirDeclarationAttributes = FirDeclarationAttributes() override val attributes: FirDeclarationAttributes = FirDeclarationAttributes()
override val isVal: Boolean get() = !isVar override val isVal: Boolean get() = !isVar
override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference override var controlFlowGraphReference: FirControlFlowGraphReference? = null
override val backingFieldSymbol: FirBackingFieldSymbol = FirBackingFieldSymbol(symbol.callableId) override val backingFieldSymbol: FirBackingFieldSymbol = FirBackingFieldSymbol(symbol.callableId)
init { init {
@@ -72,7 +71,7 @@ internal class FirPropertyImpl(
setter?.accept(visitor, data) setter?.accept(visitor, data)
annotations.forEach { it.accept(visitor, data) } annotations.forEach { it.accept(visitor, data) }
typeParameters.forEach { it.accept(visitor, data) } typeParameters.forEach { it.accept(visitor, data) }
controlFlowGraphReference.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data)
status.accept(visitor, data) status.accept(visitor, data)
} }
@@ -84,7 +83,6 @@ internal class FirPropertyImpl(
transformGetter(transformer, data) transformGetter(transformer, data)
transformSetter(transformer, data) transformSetter(transformer, data)
transformTypeParameters(transformer, data) transformTypeParameters(transformer, data)
transformControlFlowGraphReference(transformer, data)
transformStatus(transformer, data) transformStatus(transformer, data)
transformOtherChildren(transformer, data) transformOtherChildren(transformer, data)
return this return this
@@ -130,11 +128,6 @@ internal class FirPropertyImpl(
return this return this
} }
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirPropertyImpl {
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
return this
}
override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirPropertyImpl { override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirPropertyImpl {
status = status.transformSingle(transformer, data) status = status.transformSingle(transformer, data)
return this return this
@@ -142,6 +135,7 @@ internal class FirPropertyImpl(
override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirPropertyImpl { override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirPropertyImpl {
transformAnnotations(transformer, data) transformAnnotations(transformer, data)
controlFlowGraphReference = controlFlowGraphReference?.transformSingle(transformer, data)
return this return this
} }
@@ -156,4 +150,8 @@ internal class FirPropertyImpl(
override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) { override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {
receiverTypeRef = newReceiverTypeRef receiverTypeRef = newReceiverTypeRef
} }
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
controlFlowGraphReference = newControlFlowGraphReference
}
} }
@@ -17,7 +17,6 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference 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.scopes.FirScopeProvider
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -46,7 +45,7 @@ internal class FirRegularClassImpl(
override val superTypeRefs: MutableList<FirTypeRef>, override val superTypeRefs: MutableList<FirTypeRef>,
) : FirRegularClass() { ) : FirRegularClass() {
override val attributes: FirDeclarationAttributes = FirDeclarationAttributes() override val attributes: FirDeclarationAttributes = FirDeclarationAttributes()
override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference override var controlFlowGraphReference: FirControlFlowGraphReference? = null
override val hasLazyNestedClassifiers: Boolean get() = false override val hasLazyNestedClassifiers: Boolean get() = false
init { init {
@@ -57,7 +56,7 @@ internal class FirRegularClassImpl(
annotations.forEach { it.accept(visitor, data) } annotations.forEach { it.accept(visitor, data) }
typeParameters.forEach { it.accept(visitor, data) } typeParameters.forEach { it.accept(visitor, data) }
status.accept(visitor, data) status.accept(visitor, data)
controlFlowGraphReference.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data)
declarations.forEach { it.accept(visitor, data) } declarations.forEach { it.accept(visitor, data) }
superTypeRefs.forEach { it.accept(visitor, data) } superTypeRefs.forEach { it.accept(visitor, data) }
} }
@@ -66,7 +65,7 @@ internal class FirRegularClassImpl(
transformAnnotations(transformer, data) transformAnnotations(transformer, data)
transformTypeParameters(transformer, data) transformTypeParameters(transformer, data)
transformStatus(transformer, data) transformStatus(transformer, data)
transformControlFlowGraphReference(transformer, data) controlFlowGraphReference = controlFlowGraphReference?.transformSingle(transformer, data)
transformDeclarations(transformer, data) transformDeclarations(transformer, data)
companionObject = declarations.asSequence().filterIsInstance<FirRegularClass>().firstOrNull { it.status.isCompanion } companionObject = declarations.asSequence().filterIsInstance<FirRegularClass>().firstOrNull { it.status.isCompanion }
transformSuperTypeRefs(transformer, data) transformSuperTypeRefs(transformer, data)
@@ -88,11 +87,6 @@ internal class FirRegularClassImpl(
return this return this
} }
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirRegularClassImpl {
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
return this
}
override fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirRegularClassImpl { override fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirRegularClassImpl {
declarations.transformInplace(transformer, data) declarations.transformInplace(transformer, data)
return this return this
@@ -112,6 +106,10 @@ internal class FirRegularClassImpl(
resolvePhase = newResolvePhase resolvePhase = newResolvePhase
} }
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
controlFlowGraphReference = newControlFlowGraphReference
}
override fun replaceSuperTypeRefs(newSuperTypeRefs: List<FirTypeRef>) { override fun replaceSuperTypeRefs(newSuperTypeRefs: List<FirTypeRef>) {
superTypeRefs.clear() superTypeRefs.clear()
superTypeRefs.addAll(newSuperTypeRefs) superTypeRefs.addAll(newSuperTypeRefs)
@@ -19,7 +19,6 @@ import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirBlock
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
@@ -49,7 +48,7 @@ open class FirSimpleFunctionImpl @FirImplementationDetail constructor(
override val typeParameters: MutableList<FirTypeParameter>, override val typeParameters: MutableList<FirTypeParameter>,
) : FirSimpleFunction() { ) : FirSimpleFunction() {
override val attributes: FirDeclarationAttributes = FirDeclarationAttributes() override val attributes: FirDeclarationAttributes = FirDeclarationAttributes()
override var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference override var controlFlowGraphReference: FirControlFlowGraphReference? = null
init { init {
symbol.bind(this) symbol.bind(this)
@@ -58,7 +57,7 @@ open class FirSimpleFunctionImpl @FirImplementationDetail constructor(
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)
receiverTypeRef?.accept(visitor, data) receiverTypeRef?.accept(visitor, data)
controlFlowGraphReference.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data)
valueParameters.forEach { it.accept(visitor, data) } valueParameters.forEach { it.accept(visitor, data) }
body?.accept(visitor, data) body?.accept(visitor, data)
status.accept(visitor, data) status.accept(visitor, data)
@@ -70,7 +69,7 @@ open class FirSimpleFunctionImpl @FirImplementationDetail constructor(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirSimpleFunctionImpl { override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirSimpleFunctionImpl {
transformReturnTypeRef(transformer, data) transformReturnTypeRef(transformer, data)
transformReceiverTypeRef(transformer, data) transformReceiverTypeRef(transformer, data)
transformControlFlowGraphReference(transformer, data) controlFlowGraphReference = controlFlowGraphReference?.transformSingle(transformer, data)
transformValueParameters(transformer, data) transformValueParameters(transformer, data)
transformBody(transformer, data) transformBody(transformer, data)
transformStatus(transformer, data) transformStatus(transformer, data)
@@ -90,11 +89,6 @@ open class FirSimpleFunctionImpl @FirImplementationDetail constructor(
return this return this
} }
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirSimpleFunctionImpl {
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
return this
}
override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirSimpleFunctionImpl { override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirSimpleFunctionImpl {
valueParameters.transformInplace(transformer, data) valueParameters.transformInplace(transformer, data)
return this return this
@@ -137,6 +131,10 @@ open class FirSimpleFunctionImpl @FirImplementationDetail constructor(
receiverTypeRef = newReceiverTypeRef receiverTypeRef = newReceiverTypeRef
} }
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
controlFlowGraphReference = newControlFlowGraphReference
}
override fun replaceValueParameters(newValueParameters: List<FirValueParameter>) { override fun replaceValueParameters(newValueParameters: List<FirValueParameter>) {
valueParameters.clear() valueParameters.clear()
valueParameters.addAll(newValueParameters) valueParameters.addAll(newValueParameters)
@@ -16,7 +16,6 @@ import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -51,7 +50,7 @@ open class FirValueParameterImpl @FirImplementationDetail constructor(
override val isVal: Boolean get() = true override val isVal: Boolean get() = true
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 var controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference override var controlFlowGraphReference: FirControlFlowGraphReference? = null
init { init {
symbol.bind(this) symbol.bind(this)
@@ -61,13 +60,12 @@ open class FirValueParameterImpl @FirImplementationDetail constructor(
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)
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)
} }
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)
transformControlFlowGraphReference(transformer, data)
transformOtherChildren(transformer, data) transformOtherChildren(transformer, data)
return this return this
} }
@@ -102,13 +100,9 @@ open class FirValueParameterImpl @FirImplementationDetail constructor(
return this return this
} }
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirValueParameterImpl {
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
return this
}
override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirValueParameterImpl { override fun <D> transformOtherChildren(transformer: FirTransformer<D>, data: D): FirValueParameterImpl {
transformAnnotations(transformer, data) transformAnnotations(transformer, data)
controlFlowGraphReference = controlFlowGraphReference?.transformSingle(transformer, data)
defaultValue = defaultValue?.transformSingle(transformer, data) defaultValue = defaultValue?.transformSingle(transformer, data)
return this return this
} }
@@ -122,4 +116,8 @@ open class FirValueParameterImpl @FirImplementationDetail constructor(
} }
override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {} override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {}
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
controlFlowGraphReference = newControlFlowGraphReference
}
} }
@@ -1,26 +0,0 @@
/*
* Copyright 2010-2020 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.references.impl
import org.jetbrains.kotlin.fir.FirImplementationDetail
import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.visitors.*
/*
* This file was generated automatically
* DO NOT MODIFY IT MANUALLY
*/
object FirEmptyControlFlowGraphReference : FirControlFlowGraphReference() {
override val source: FirSourceElement? get() = null
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirEmptyControlFlowGraphReference {
return this
}
}
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirAccessorSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirAccessorSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
@@ -71,7 +70,7 @@ class FirSyntheticProperty(
override val containerSource: DeserializedContainerSource? override val containerSource: DeserializedContainerSource?
get() = null get() = null
override val controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference override val controlFlowGraphReference: FirControlFlowGraphReference? = null
override val attributes: FirDeclarationAttributes = FirDeclarationAttributes() override val attributes: FirDeclarationAttributes = FirDeclarationAttributes()
@@ -95,10 +94,6 @@ class FirSyntheticProperty(
throw AssertionError("Transformation of synthetic property isn't supported") throw AssertionError("Transformation of synthetic property isn't supported")
} }
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirSyntheticProperty {
throw AssertionError("Transformation of synthetic property isn't supported")
}
override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirSyntheticProperty { override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirSyntheticProperty {
throw AssertionError("Transformation of synthetic property isn't supported") throw AssertionError("Transformation of synthetic property isn't supported")
} }
@@ -142,4 +137,8 @@ class FirSyntheticProperty(
override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) { override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {
throw AssertionError("Mutation of synthetic property isn't supported") throw AssertionError("Mutation of synthetic property isn't supported")
} }
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
throw AssertionError("Mutation of synthetic property isn't supported")
}
} }
@@ -14,7 +14,6 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirPropertyAccessorImpl
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirBlock
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.impl.FirEmptyControlFlowGraphReference
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertyAccessorSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertyAccessorSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.visitors.FirTransformer import org.jetbrains.kotlin.fir.visitors.FirTransformer
@@ -67,13 +66,13 @@ class FirSyntheticPropertyAccessor(
bind(this@FirSyntheticPropertyAccessor) bind(this@FirSyntheticPropertyAccessor)
} }
override val controlFlowGraphReference: FirControlFlowGraphReference = FirEmptyControlFlowGraphReference override val controlFlowGraphReference: FirControlFlowGraphReference? = null
override val contractDescription: FirContractDescription = FirEmptyContractDescription override val contractDescription: FirContractDescription = FirEmptyContractDescription
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) { override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
delegate.accept(visitor, data) delegate.accept(visitor, data)
controlFlowGraphReference.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data)
contractDescription.accept(visitor, data) contractDescription.accept(visitor, data)
} }
@@ -89,10 +88,6 @@ class FirSyntheticPropertyAccessor(
throw AssertionError("Transformation of synthetic property accessor isn't supported") throw AssertionError("Transformation of synthetic property accessor isn't supported")
} }
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirPropertyAccessorImpl {
throw AssertionError("Transformation of synthetic property accessor isn't supported")
}
override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirPropertyAccessorImpl { override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirPropertyAccessorImpl {
throw AssertionError("Transformation of synthetic property accessor isn't supported") throw AssertionError("Transformation of synthetic property accessor isn't supported")
} }
@@ -136,4 +131,8 @@ class FirSyntheticPropertyAccessor(
override fun replaceContractDescription(newContractDescription: FirContractDescription) { override fun replaceContractDescription(newContractDescription: FirContractDescription) {
throw AssertionError("Mutation of synthetic property accessor isn't supported") throw AssertionError("Mutation of synthetic property accessor isn't supported")
} }
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
throw AssertionError("Mutation of synthetic property accessor isn't supported")
}
} }
@@ -197,9 +197,7 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
builder(anonymousFunction) { builder(anonymousFunction) {
parents += functionBuilder parents += functionBuilder
defaultNull("invocationKind", "label", "body") defaultNull("invocationKind", "label", "body", "controlFlowGraphReference")
default("controlFlowGraphReference", "FirEmptyControlFlowGraphReference")
useTypes(emptyCfgReferenceType)
} }
builder(propertyAccessor) { builder(propertyAccessor) {
@@ -74,7 +74,7 @@ object FieldSets {
val status = field("status", declarationStatus) val status = field("status", declarationStatus)
val controlFlowGraphReferenceField = field("controlFlowGraphReference", controlFlowGraphReference).withTransform() val controlFlowGraphReferenceField = field("controlFlowGraphReference", controlFlowGraphReference, withReplace = true, nullable = true)
val visibility = field(visibilityType) val visibility = field(visibilityType)
@@ -370,10 +370,7 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
impl(superReference, "FirExplicitSuperReference") impl(superReference, "FirExplicitSuperReference")
impl(controlFlowGraphReference, "FirEmptyControlFlowGraphReference") { noImpl(controlFlowGraphReference)
noSource()
kind = Object
}
impl(resolvedTypeRef) { impl(resolvedTypeRef) {
publicImplementation() publicImplementation()
@@ -470,10 +467,9 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
private fun configureAllImplementations() { private fun configureAllImplementations() {
configureFieldInAllImplementations( configureFieldInAllImplementations(
field = "controlFlowGraphReference", field = "controlFlowGraphReference",
implementationPredicate = { it.type != "FirAnonymousFunctionImpl"} implementationPredicate = { it.type != "FirAnonymousFunctionImpl" }
) { ) {
default(it, "FirEmptyControlFlowGraphReference") defaultNull(it)
useTypes(emptyCfgReferenceType)
} }
val implementationWithConfigurableTypeRef = listOf( val implementationWithConfigurableTypeRef = listOf(