Files
kotlin-fork/compiler/fir/analysis-tests/testData/resolve/cfg/propertiesAndInitBlocks.dot
T
pyos 7ff5ad1ad0 FIR CFA: remove modes
They are only used in one place that can just as well use kinds.

Especially considering that "the one place" used them incorrectly and
would not attach local functions in property accessors as subgraphs.
2023-01-10 15:40:48 +02:00

317 lines
11 KiB
Plaintext
Vendored

digraph propertiesAndInitBlocks_kt {
graph [nodesep=3]
node [shape=box penwidth=2]
edge [penwidth=2]
subgraph cluster_0 {
color=red
0 [label="Enter function run" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
2 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
3 [label="Exit block"];
}
4 [label="Exit function run" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
subgraph cluster_2 {
color=red
5 [label="Enter property" style="filled" fillcolor=red];
6 [label="Const: Int(1)"];
7 [label="Exit property" style="filled" fillcolor=red];
}
5 -> {6};
6 -> {7};
subgraph cluster_3 {
color=red
8 [label="Enter function getter" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
9 [label="Enter block"];
10 [label="Const: Int(1)"];
11 [label="Jump: ^ Int(1)"];
12 [label="Stub" style="filled" fillcolor=gray];
13 [label="Exit block" style="filled" fillcolor=gray];
}
14 [label="Exit function getter" style="filled" fillcolor=red];
}
8 -> {9};
9 -> {10};
10 -> {11};
11 -> {14};
11 -> {12} [style=dotted];
12 -> {13} [style=dotted];
13 -> {14} [style=dotted];
subgraph cluster_5 {
color=red
15 [label="Enter function setter" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
16 [label="Enter block"];
17 [label="Const: Int(1)"];
18 [label="Assignment: F|/x2|"];
19 [label="Exit block"];
}
20 [label="Exit function setter" style="filled" fillcolor=red];
}
15 -> {16};
16 -> {17};
17 -> {18};
18 -> {19};
19 -> {20};
subgraph cluster_7 {
color=red
21 [label="Enter property" style="filled" fillcolor=red];
22 [label="Const: Int(1)"];
23 [label="Exit property" style="filled" fillcolor=red];
}
21 -> {22};
22 -> {23};
subgraph cluster_8 {
color=red
58 [label="Enter function getter" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
59 [label="Enter block"];
60 [label="Exit local class <getter>"];
61 [label="Exit block"];
}
62 [label="Exit function getter" style="filled" fillcolor=red];
}
subgraph cluster_10 {
color=blue
63 [label="Enter class GetterLocalClass" style="filled" fillcolor=red];
64 [label="Part of class initialization"];
subgraph cluster_11 {
color=blue
66 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
67 [label="Enter block"];
68 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
69 [label="Throw: throw R|java/lang/Exception.Exception|()"];
70 [label="Stub" style="filled" fillcolor=gray];
71 [label="Exit block" style="filled" fillcolor=gray];
}
72 [label="Exit init block" style="filled" fillcolor=red style="filled" fillcolor=gray];
}
65 [label="Exit class GetterLocalClass" style="filled" fillcolor=red style="filled" fillcolor=gray];
}
subgraph cluster_13 {
color=blue
73 [label="Enter function <init>" style="filled" fillcolor=red style="filled" fillcolor=gray];
74 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
75 [label="Exit function <init>" style="filled" fillcolor=red];
}
58 -> {59};
59 -> {60};
59 -> {66 73} [color=red];
60 -> {61};
60 -> {63} [color=green];
60 -> {63} [style=dashed];
61 -> {62};
63 -> {64} [color=green];
64 -> {66} [color=green];
64 -> {65} [style=dotted];
64 -> {66} [style=dashed];
65 -> {73} [style=dotted];
65 -> {73} [style=dashed];
66 -> {67};
67 -> {68};
68 -> {69};
69 -> {70} [style=dotted];
70 -> {71} [style=dotted];
71 -> {72} [style=dotted];
72 -> {65} [style=dotted];
73 -> {74};
74 -> {75};
subgraph cluster_14 {
color=red
76 [label="Enter property" style="filled" fillcolor=red];
77 [label="Postponed enter to lambda"];
subgraph cluster_15 {
color=blue
24 [label="Enter function anonymousFunction" style="filled" fillcolor=red];
subgraph cluster_16 {
color=blue
25 [label="Enter block"];
26 [label="Local function declaration <anonymous>"];
27 [label="Exit local class <anonymous>"];
28 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
29 [label="Throw: throw R|java/lang/Exception.Exception|()"];
30 [label="Stub" style="filled" fillcolor=gray];
31 [label="Exit block" style="filled" fillcolor=gray];
}
32 [label="Exit function anonymousFunction" style="filled" fillcolor=red style="filled" fillcolor=gray];
}
subgraph cluster_17 {
color=blue
44 [label="Enter class InitializerLocalClass" style="filled" fillcolor=red];
45 [label="Part of class initialization"];
subgraph cluster_18 {
color=blue
47 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_19 {
color=blue
48 [label="Enter block"];
49 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
50 [label="Throw: throw R|java/lang/Exception.Exception|()"];
51 [label="Stub" style="filled" fillcolor=gray];
52 [label="Const: Int(1)" style="filled" fillcolor=gray];
53 [label="Exit block" style="filled" fillcolor=gray];
}
54 [label="Exit init block" style="filled" fillcolor=red style="filled" fillcolor=gray];
}
46 [label="Exit class InitializerLocalClass" style="filled" fillcolor=red style="filled" fillcolor=gray];
}
subgraph cluster_20 {
color=blue
55 [label="Enter function <init>" style="filled" fillcolor=red style="filled" fillcolor=gray];
56 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
57 [label="Exit function <init>" style="filled" fillcolor=red];
}
subgraph cluster_21 {
color=blue
33 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_22 {
color=blue
34 [label="Enter block"];
35 [label="Const: Int(1)"];
36 [label="Const: Int(1)"];
37 [label="Function call: Int(1).R|kotlin/Int.plus|(...)" style="filled" fillcolor=yellow];
38 [label="Variable declaration: lval c: R|kotlin/Int|"];
39 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
40 [label="Throw: throw R|java/lang/Exception.Exception|()"];
41 [label="Stub" style="filled" fillcolor=gray];
42 [label="Exit block" style="filled" fillcolor=gray];
}
43 [label="Exit function foo" style="filled" fillcolor=red style="filled" fillcolor=gray];
}
78 [label="Postponed exit from lambda"];
79 [label="Function call: R|/run|(...)" style="filled" fillcolor=yellow];
80 [label="Exit property" style="filled" fillcolor=red];
}
76 -> {77};
77 -> {24 78 79};
77 -> {24} [style=dashed];
78 -> {79};
78 -> {77} [color=green style=dashed];
79 -> {80};
24 -> {25};
25 -> {26};
26 -> {27 33};
26 -> {47 55} [color=red];
26 -> {33} [style=dashed];
27 -> {28};
27 -> {44} [color=green];
27 -> {44} [style=dashed];
28 -> {29};
29 -> {30} [style=dotted];
30 -> {31} [style=dotted];
31 -> {32} [style=dotted];
32 -> {78} [style=dotted];
33 -> {34};
34 -> {35};
35 -> {36};
36 -> {37};
37 -> {38};
38 -> {39};
39 -> {40};
40 -> {41} [style=dotted];
41 -> {42} [style=dotted];
42 -> {43} [style=dotted];
44 -> {45} [color=green];
45 -> {47} [color=green];
45 -> {46} [style=dotted];
45 -> {47} [style=dashed];
46 -> {55} [style=dotted];
46 -> {55} [style=dashed];
47 -> {48};
48 -> {49};
49 -> {50};
50 -> {51} [style=dotted];
51 -> {52} [style=dotted];
52 -> {53} [style=dotted];
53 -> {54} [style=dotted];
54 -> {46} [style=dotted];
55 -> {56};
56 -> {57};
subgraph cluster_23 {
color=red
81 [label="Enter property" style="filled" fillcolor=red];
subgraph cluster_24 {
color=blue
82 [label="Try expression enter"];
subgraph cluster_25 {
color=blue
83 [label="Try main block enter"];
subgraph cluster_26 {
color=blue
84 [label="Enter block"];
85 [label="Const: Int(1)"];
86 [label="Exit block"];
}
87 [label="Try main block exit"];
}
subgraph cluster_27 {
color=blue
88 [label="Catch enter"];
89 [label="Variable declaration: e: R|kotlin/Exception|"];
subgraph cluster_28 {
color=blue
90 [label="Enter block"];
91 [label="Const: Int(2)"];
92 [label="Exit block"];
}
93 [label="Catch exit"];
}
subgraph cluster_29 {
color=blue
94 [label="Enter finally"];
subgraph cluster_30 {
color=blue
95 [label="Enter block"];
96 [label="Const: Int(0)"];
97 [label="Exit block"];
}
98 [label="Exit finally"];
}
99 [label="Try expression exit"];
}
100 [label="Exit property" style="filled" fillcolor=red];
}
81 -> {82};
82 -> {83 88};
82 -> {94} [label="onUncaughtException"];
83 -> {84};
84 -> {85};
85 -> {86};
86 -> {87};
87 -> {88 94};
88 -> {89};
88 -> {94} [label="onUncaughtException"];
89 -> {90};
90 -> {91};
91 -> {92};
92 -> {93};
93 -> {94};
94 -> {95};
95 -> {96};
96 -> {97};
97 -> {98};
98 -> {99};
99 -> {100};
}