FIR CFA: remove class initializer part nodes

Instead, attach subgraphs directly to the class enter node.
This commit is contained in:
pyos
2022-12-11 13:43:55 +01:00
committed by Dmitriy Novozhilov
parent b9f366af05
commit c6e9afb788
25 changed files with 3271 additions and 3385 deletions
@@ -224,8 +224,10 @@ class AnonymousFunctionExpressionNode(owner: ControlFlowGraph, override val fir:
// ----------------------------------- Classes -----------------------------------
class ClassEnterNode(owner: ControlFlowGraph, override val fir: FirClass, level: Int, id: Int) : CFGNode<FirClass>(owner, level, id),
class ClassEnterNode(owner: ControlFlowGraph, override val fir: FirClass, level: Int, id: Int) : CFGNodeWithSubgraphs<FirClass>(owner, level, id),
GraphEnterNodeMarker {
override lateinit var subGraphs: List<ControlFlowGraph>
override fun <R, D> accept(visitor: ControlFlowGraphVisitor<R, D>, data: D): R {
return visitor.visitClassEnterNode(this, data)
}
@@ -279,14 +281,6 @@ class ScriptExitNode(owner: ControlFlowGraph, override val fir: FirScript, level
}
}
// ----------------------------------- Initialization -----------------------------------
class PartOfClassInitializationNode(owner: ControlFlowGraph, override val fir: FirControlFlowGraphOwner, level: Int, id: Int) : CFGNodeWithCfgOwner<FirControlFlowGraphOwner>(owner, level, id) {
override fun <R, D> accept(visitor: ControlFlowGraphVisitor<R, D>, data: D): R {
return visitor.visitPartOfClassInitializationNode(this, data)
}
}
// ----------------------------------- Property -----------------------------------
class PropertyInitializerEnterNode(owner: ControlFlowGraph, override val fir: FirProperty, level: Int, id: Int) : CFGNode<FirProperty>(owner, level, id),
@@ -82,7 +82,6 @@ fun CFGNode<*>.render(): String =
is BinaryOrEnterRightOperandNode -> "Enter right part of ||"
is BinaryOrExitNode -> "Exit ||"
is PartOfClassInitializationNode -> "Part of class initialization"
is PropertyInitializerEnterNode -> "Enter property"
is PropertyInitializerExitNode -> "Exit property"
is DelegateExpressionExitNode -> "Exit property delegate"
@@ -96,12 +96,6 @@ abstract class ControlFlowGraphVisitor<out R, in D> {
return visitNode(node, data)
}
// ----------------------------------- Initialization -----------------------------------
open fun visitPartOfClassInitializationNode(node: PartOfClassInitializationNode, data: D): R {
return visitNode(node, data)
}
// ----------------------------------- Property -----------------------------------
open fun visitPropertyInitializerEnterNode(node: PropertyInitializerEnterNode, data: D): R {