[FIR] Add FirCodeFragment
This commit is contained in:
committed by
Yan Zhulanow
parent
2760a25e2c
commit
33abe75a74
@@ -87,3 +87,7 @@ var FirConstructor.originalConstructorIfTypeAlias: FirConstructor? by FirDeclara
|
||||
|
||||
val FirConstructorSymbol.isTypeAliasedConstructor: Boolean
|
||||
get() = fir.originalConstructorIfTypeAlias != null
|
||||
|
||||
private object CodeFragmentTowerDataContext : FirDeclarationDataKey()
|
||||
|
||||
var FirCodeFragment.towerDataContext: FirTowerDataContext? by FirDeclarationDataRegistry.data(CodeFragmentTowerDataContext)
|
||||
@@ -300,6 +300,19 @@ class ScriptExitNode(owner: ControlFlowGraph, override val fir: FirScript, level
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------- Code Fragments ------------------------------------------
|
||||
|
||||
class CodeFragmentEnterNode(owner: ControlFlowGraph, override val fir: FirCodeFragment, level: Int) : CFGNode<FirCodeFragment>(owner, level), GraphEnterNodeMarker {
|
||||
override fun <R, D> accept(visitor: ControlFlowGraphVisitor<R, D>, data: D): R {
|
||||
return visitor.visitCodeFragmentEnterNode(this, data)
|
||||
}
|
||||
}
|
||||
|
||||
class CodeFragmentExitNode(owner: ControlFlowGraph, override val fir: FirCodeFragment, level: Int) : CFGNode<FirCodeFragment>(owner, level), GraphExitNodeMarker {
|
||||
override fun <R, D> accept(visitor: ControlFlowGraphVisitor<R, D>, data: D): R {
|
||||
return visitor.visitCodeFragmentExitNode(this, data)
|
||||
}
|
||||
}
|
||||
// ----------------------------------- Property -----------------------------------
|
||||
|
||||
class PropertyInitializerEnterNode(owner: ControlFlowGraph, override val fir: FirProperty, level: Int) : CFGNode<FirProperty>(owner, level),
|
||||
|
||||
@@ -106,6 +106,9 @@ fun CFGNode<*>.render(): String =
|
||||
is ScriptEnterNode -> "Enter class ${fir.name}"
|
||||
is ScriptExitNode -> "Exit class ${fir.name}"
|
||||
|
||||
is CodeFragmentEnterNode -> "Enter code fragment"
|
||||
is CodeFragmentExitNode -> "Exit code fragment"
|
||||
|
||||
is FakeExpressionEnterNode -> "Enter fake expression"
|
||||
|
||||
is EnterValueParameterNode -> "Enter default value of ${fir.name}"
|
||||
|
||||
+10
@@ -90,6 +90,16 @@ abstract class ControlFlowGraphVisitor<out R, in D> {
|
||||
return visitNode(node, data)
|
||||
}
|
||||
|
||||
// ----------------------------------- Code Fragments ------------------------------------------
|
||||
|
||||
open fun visitCodeFragmentEnterNode(node: CodeFragmentEnterNode, data: D): R {
|
||||
return visitNode(node, data)
|
||||
}
|
||||
|
||||
open fun visitCodeFragmentExitNode(node: CodeFragmentExitNode, data: D): R {
|
||||
return visitNode(node, data)
|
||||
}
|
||||
|
||||
// ----------------------------------- Property -----------------------------------
|
||||
|
||||
open fun visitPropertyInitializerEnterNode(node: PropertyInitializerEnterNode, data: D): R {
|
||||
|
||||
Reference in New Issue
Block a user