FIR CFA: rewrite handling of try-catch-finally

The result is the same, but it should now be much clearer what the
shortcomings of the current implementation are.
This commit is contained in:
pyos
2022-11-27 21:27:37 +01:00
committed by Dmitriy Novozhilov
parent a079010fad
commit 069d99c5ea
10 changed files with 390 additions and 466 deletions
+21 -21
View File
@@ -276,22 +276,22 @@ digraph loops_kt {
color=blue
94 [label="Enter block"];
95 [label="Jump: break@@@[Boolean(true)] "];
96 [label="Stub" style="filled" fillcolor=gray];
97 [label="Exit block" style="filled" fillcolor=gray];
100 [label="Stub" style="filled" fillcolor=gray];
101 [label="Exit block" style="filled" fillcolor=gray];
}
98 [label="Exit when branch result" style="filled" fillcolor=gray];
99 [label="Exit when"];
102 [label="Exit when branch result" style="filled" fillcolor=gray];
103 [label="Exit when"];
}
100 [label="Exit block"];
104 [label="Exit block"];
}
101 [label="Exit loop block"];
105 [label="Exit loop block"];
}
102 [label="Exit whileloop"];
96 [label="Exit whileloop"];
}
103 [label="Const: Int(1)"];
104 [label="Exit block"];
97 [label="Const: Int(1)"];
98 [label="Exit block"];
}
105 [label="Exit function testWhileTrueWithBreak" style="filled" fillcolor=red];
99 [label="Exit function testWhileTrueWithBreak" style="filled" fillcolor=red];
}
80 -> {81};
81 -> {82};
@@ -299,27 +299,27 @@ digraph loops_kt {
83 -> {84};
84 -> {85};
85 -> {86};
85 -> {102} [style=dotted];
85 -> {96} [style=dotted];
86 -> {87};
87 -> {88};
88 -> {89};
89 -> {90};
90 -> {91};
91 -> {92 93};
92 -> {99};
92 -> {103};
93 -> {94};
94 -> {95};
95 -> {102};
95 -> {96} [style=dotted];
96 -> {97} [style=dotted];
97 -> {98} [style=dotted];
98 -> {99} [style=dotted];
99 -> {100};
100 -> {101};
101 -> {83} [color=green style=dashed];
102 -> {103};
95 -> {96};
95 -> {100} [style=dotted];
96 -> {97};
97 -> {98};
98 -> {99};
100 -> {101} [style=dotted];
101 -> {102} [style=dotted];
102 -> {103} [style=dotted];
103 -> {104};
104 -> {105};
105 -> {83} [color=green style=dashed];
subgraph cluster_34 {
color=red