[FIR TEST] Add problematic CFG test
This commit is contained in:
+118
@@ -0,0 +1,118 @@
|
||||
digraph secondaryConstructorCfg_kt {
|
||||
graph [nodesep=3]
|
||||
node [shape=box penwidth=2]
|
||||
edge [penwidth=2]
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter function <init>" style="filled" fillcolor=red];
|
||||
2 [label="Delegated constructor call: super<R|kotlin/Any|>()"];
|
||||
1 [label="Exit function <init>" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {2};
|
||||
2 -> {1};
|
||||
|
||||
subgraph cluster_1 {
|
||||
color=red
|
||||
20 [label="Enter function <init>" style="filled" fillcolor=red];
|
||||
22 [label="Access variable R|<local>/p0|"];
|
||||
23 [label="Delegated constructor call: this<R|B|>(...)"];
|
||||
subgraph cluster_2 {
|
||||
color=blue
|
||||
24 [label="Enter block"];
|
||||
25 [label="Access variable R|<local>/p1|"];
|
||||
26 [label="Assignment: R|/B.p3|"];
|
||||
27 [label="Exit block"];
|
||||
}
|
||||
21 [label="Exit function <init>" style="filled" fillcolor=red style="filled" fillcolor=gray];
|
||||
}
|
||||
20 -> {22};
|
||||
22 -> {23};
|
||||
23 -> {24};
|
||||
24 -> {25};
|
||||
25 -> {26};
|
||||
26 -> {27};
|
||||
|
||||
subgraph cluster_3 {
|
||||
color=red
|
||||
37 [label="Enter class B" style="filled" fillcolor=red];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
16 [label="Enter function setter" style="filled" fillcolor=red];
|
||||
17 [label="Exit function setter" style="filled" fillcolor=red];
|
||||
}
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
14 [label="Enter function getter" style="filled" fillcolor=red];
|
||||
15 [label="Exit function getter" style="filled" fillcolor=red];
|
||||
}
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
8 [label="Enter function getter" style="filled" fillcolor=red];
|
||||
9 [label="Exit function getter" style="filled" fillcolor=red];
|
||||
}
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
3 [label="Enter function getter" style="filled" fillcolor=red];
|
||||
4 [label="Exit function getter" style="filled" fillcolor=red];
|
||||
}
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
5 [label="Enter property" style="filled" fillcolor=red];
|
||||
7 [label="Access variable R|<local>/p0|"];
|
||||
6 [label="Exit property" style="filled" fillcolor=red];
|
||||
}
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
10 [label="Enter property" style="filled" fillcolor=red];
|
||||
12 [label="Access variable R|<local>/p0|"];
|
||||
13 [label="Access variable R|kotlin/String.length|"];
|
||||
11 [label="Exit property" style="filled" fillcolor=red];
|
||||
}
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
18 [label="Enter property" style="filled" fillcolor=red];
|
||||
19 [label="Exit property" style="filled" fillcolor=red];
|
||||
}
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
28 [label="Enter init block" style="filled" fillcolor=red];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
30 [label="Enter block"];
|
||||
31 [label="Access variable R|<local>/p0|"];
|
||||
32 [label="Access variable R|kotlin/String.length|"];
|
||||
33 [label="Assignment: R|/B.p1|"];
|
||||
34 [label="Const: String()"];
|
||||
35 [label="Assignment: R|/B.p3|"];
|
||||
36 [label="Exit block"];
|
||||
}
|
||||
29 [label="Exit init block" style="filled" fillcolor=red];
|
||||
}
|
||||
38 [label="Exit class B" style="filled" fillcolor=red];
|
||||
}
|
||||
37 -> {5} [color=green];
|
||||
5 -> {7};
|
||||
6 -> {10} [color=green];
|
||||
7 -> {6};
|
||||
3 -> {4};
|
||||
10 -> {12};
|
||||
11 -> {18} [color=green];
|
||||
12 -> {13};
|
||||
13 -> {11};
|
||||
8 -> {9};
|
||||
18 -> {19};
|
||||
19 -> {28} [color=green];
|
||||
14 -> {15};
|
||||
16 -> {17};
|
||||
28 -> {30};
|
||||
29 -> {38} [color=green];
|
||||
30 -> {31};
|
||||
31 -> {32};
|
||||
32 -> {33};
|
||||
33 -> {34};
|
||||
34 -> {35};
|
||||
35 -> {36};
|
||||
36 -> {29};
|
||||
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
// !DUMP_CFG
|
||||
class B(p0: String) {
|
||||
val p1 = p0
|
||||
val p2: Int = p0.length
|
||||
var p3: String
|
||||
constructor(p0: String, p1: String) : this(p0) {
|
||||
p3 = p1
|
||||
}
|
||||
init {
|
||||
p1 = p0.length
|
||||
p3 = ""
|
||||
}
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
FILE: secondaryConstructorCfg.kt
|
||||
public final class B : R|kotlin/Any| {
|
||||
public constructor(p0: R|kotlin/String|): R|B| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
public final val p1: R|kotlin/String| = R|<local>/p0|
|
||||
public get(): R|kotlin/String|
|
||||
|
||||
public final val p2: R|kotlin/Int| = R|<local>/p0|.R|kotlin/String.length|
|
||||
public get(): R|kotlin/Int|
|
||||
|
||||
public final var p3: R|kotlin/String|
|
||||
public get(): R|kotlin/String|
|
||||
public set(value: R|kotlin/String|): R|kotlin/Unit|
|
||||
|
||||
public constructor(p0: R|kotlin/String|, p1: R|kotlin/String|): R|B| {
|
||||
this<R|B|>(R|<local>/p0|)
|
||||
this@R|/B|.R|/B.p3| = R|<local>/p1|
|
||||
}
|
||||
|
||||
init {
|
||||
this@R|/B|.R|/B.p1| = R|<local>/p0|.R|kotlin/String.length|
|
||||
this@R|/B|.R|/B.p3| = String()
|
||||
}
|
||||
|
||||
}
|
||||
Generated
+5
@@ -1693,6 +1693,11 @@ public class FirDiagnosticsTestGenerated extends AbstractFirDiagnosticsTest {
|
||||
public void testSafeCallInvoke() throws Exception {
|
||||
runTest("compiler/fir/analysis-tests/testData/resolve/problems/safeCallInvoke.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("secondaryConstructorCfg.kt")
|
||||
public void testSecondaryConstructorCfg() throws Exception {
|
||||
runTest("compiler/fir/analysis-tests/testData/resolve/problems/secondaryConstructorCfg.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/fir/analysis-tests/testData/resolve/properties")
|
||||
|
||||
+5
@@ -1693,6 +1693,11 @@ public class FirDiagnosticsWithLightTreeTestGenerated extends AbstractFirDiagnos
|
||||
public void testSafeCallInvoke() throws Exception {
|
||||
runTest("compiler/fir/analysis-tests/testData/resolve/problems/safeCallInvoke.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("secondaryConstructorCfg.kt")
|
||||
public void testSecondaryConstructorCfg() throws Exception {
|
||||
runTest("compiler/fir/analysis-tests/testData/resolve/problems/secondaryConstructorCfg.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/fir/analysis-tests/testData/resolve/properties")
|
||||
|
||||
Reference in New Issue
Block a user