FIR CFG: revise edge kind between local func node and fun enter node
so that local function enter node can be visited by FIR CFA #KT-42814 Fixed
This commit is contained in:
committed by
Dmitriy Novozhilov
parent
ce8d983b2a
commit
1c1e8f7beb
+1
-2
@@ -31,8 +31,7 @@ digraph inLocalFunction_kt {
|
|||||||
}
|
}
|
||||||
0 -> {1};
|
0 -> {1};
|
||||||
1 -> {2};
|
1 -> {2};
|
||||||
2 -> {3};
|
2 -> {7 3};
|
||||||
2 -> {7} [color=red];
|
|
||||||
2 -> {7} [style=dashed];
|
2 -> {7} [style=dashed];
|
||||||
3 -> {4};
|
3 -> {4};
|
||||||
4 -> {5};
|
4 -> {5};
|
||||||
|
|||||||
+5
-1
@@ -192,7 +192,11 @@ class ControlFlowGraphBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (previousNode != null) {
|
if (previousNode != null) {
|
||||||
addEdge(previousNode, enterNode, preferredKind = EdgeKind.DfgForward)
|
if (localFunctionNode == previousNode) {
|
||||||
|
addEdge(localFunctionNode, enterNode, preferredKind = EdgeKind.Forward)
|
||||||
|
} else {
|
||||||
|
addEdge(previousNode, enterNode, preferredKind = EdgeKind.DfgForward)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
createFunctionExitNode(function).also {
|
createFunctionExitNode(function).also {
|
||||||
|
|||||||
@@ -14,4 +14,8 @@ fun foo(arg: Boolean) {
|
|||||||
x.hashCode()
|
x.hashCode()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun local(): Int {
|
||||||
|
return x.hashCode()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user