[FIR] Fix incorrect cluster creating in CFG dumps

This commit is contained in:
Dmitriy Novozhilov
2020-10-12 11:09:52 +03:00
parent 3495ec198d
commit f794ced888
19 changed files with 4222 additions and 4274 deletions
@@ -6,94 +6,90 @@ digraph initBlock_kt {
subgraph cluster_0 { subgraph cluster_0 {
color=red color=red
0 [label="Enter class Foo" style="filled" fillcolor=red]; 0 [label="Enter class Foo" style="filled" fillcolor=red];
subgraph cluster_1 { 1 [label="Part of class initialization"];
color=blue 2 [label="Exit class Foo" style="filled" fillcolor=red];
1 [label="Part of class initialization"]; }
2 [label="Exit class Foo" style="filled" fillcolor=red]; 0 -> {1} [color=green];
} 1 -> {2} [style=dotted];
0 -> {1} [color=green]; 1 -> {6} [color=green];
1 -> {2} [style=dotted]; 1 -> {6} [style=dashed];
1 -> {6} [color=green];
1 -> {6} [style=dashed];
subgraph cluster_2 { subgraph cluster_1 {
color=red color=red
3 [label="Enter function <init>" style="filled" fillcolor=red]; 3 [label="Enter function <init>" style="filled" fillcolor=red];
4 [label="Delegated constructor call: super<R|kotlin/Any|>()"]; 4 [label="Delegated constructor call: super<R|kotlin/Any|>()"];
5 [label="Exit function <init>" style="filled" fillcolor=red]; 5 [label="Exit function <init>" style="filled" fillcolor=red];
} }
3 -> {4}; 3 -> {4};
4 -> {5}; 4 -> {5};
subgraph cluster_2 {
color=red
6 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_3 { subgraph cluster_3 {
color=red color=blue
6 [label="Enter init block" style="filled" fillcolor=red]; 7 [label="Enter block"];
subgraph cluster_4 { 8 [label="Const: Int(1)"];
color=blue 9 [label="Variable declaration: lval x: R|kotlin/Int|"];
7 [label="Enter block"]; 10 [label="Exit block"];
8 [label="Const: Int(1)"];
9 [label="Variable declaration: lval x: R|kotlin/Int|"];
10 [label="Exit block"];
}
11 [label="Exit init block" style="filled" fillcolor=red];
} }
6 -> {7}; 11 [label="Exit init block" style="filled" fillcolor=red];
7 -> {8}; }
8 -> {9}; 6 -> {7};
9 -> {10}; 7 -> {8};
10 -> {11}; 8 -> {9};
11 -> {2} [color=green]; 9 -> {10};
10 -> {11};
11 -> {2} [color=green];
subgraph cluster_5 { subgraph cluster_4 {
color=red color=red
12 [label="Enter class Bar" style="filled" fillcolor=red]; 12 [label="Enter class Bar" style="filled" fillcolor=red];
subgraph cluster_6 { 13 [label="Part of class initialization"];
color=blue 14 [label="Exit class Bar" style="filled" fillcolor=red];
13 [label="Part of class initialization"]; }
14 [label="Exit class Bar" style="filled" fillcolor=red]; 12 -> {13} [color=green];
} 13 -> {14} [style=dotted];
12 -> {13} [color=green]; 13 -> {18} [color=green];
13 -> {14} [style=dotted]; 13 -> {18} [style=dashed];
13 -> {18} [color=green];
13 -> {18} [style=dashed];
subgraph cluster_7 { subgraph cluster_5 {
color=red color=red
15 [label="Enter function <init>" style="filled" fillcolor=red]; 15 [label="Enter function <init>" style="filled" fillcolor=red];
16 [label="Delegated constructor call: super<R|kotlin/Any|>()"]; 16 [label="Delegated constructor call: super<R|kotlin/Any|>()"];
17 [label="Exit function <init>" style="filled" fillcolor=red]; 17 [label="Exit function <init>" style="filled" fillcolor=red];
} }
15 -> {16}; 15 -> {16};
16 -> {17}; 16 -> {17};
subgraph cluster_8 {
color=red
18 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
19 [label="Enter block"];
20 [label="Const: Int(1)"];
21 [label="Variable declaration: lval x: R|kotlin/Int|"];
22 [label="Function call: R|java/lang/Exception.Exception|()"];
23 [label="Throw: throw R|java/lang/Exception.Exception|()"];
24 [label="Stub" style="filled" fillcolor=gray];
25 [label="Const: Int(2)" style="filled" fillcolor=gray];
26 [label="Variable declaration: lval y: R|kotlin/Int|" style="filled" fillcolor=gray];
27 [label="Exit block" style="filled" fillcolor=gray];
}
28 [label="Exit init block" style="filled" fillcolor=red];
}
18 -> {19};
19 -> {20};
20 -> {21};
21 -> {22};
22 -> {23};
23 -> {28};
23 -> {24} [style=dotted];
24 -> {25} [style=dotted];
25 -> {26} [style=dotted];
26 -> {27} [style=dotted];
27 -> {28} [style=dotted];
28 -> {14} [color=green];
subgraph cluster_6 {
color=red
18 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
19 [label="Enter block"];
20 [label="Const: Int(1)"];
21 [label="Variable declaration: lval x: R|kotlin/Int|"];
22 [label="Function call: R|java/lang/Exception.Exception|()"];
23 [label="Throw: throw R|java/lang/Exception.Exception|()"];
24 [label="Stub" style="filled" fillcolor=gray];
25 [label="Const: Int(2)" style="filled" fillcolor=gray];
26 [label="Variable declaration: lval y: R|kotlin/Int|" style="filled" fillcolor=gray];
27 [label="Exit block" style="filled" fillcolor=gray];
} }
28 [label="Exit init block" style="filled" fillcolor=red];
}
18 -> {19};
19 -> {20};
20 -> {21};
21 -> {22};
22 -> {23};
23 -> {28};
23 -> {24} [style=dotted];
24 -> {25} [style=dotted];
25 -> {26} [style=dotted];
26 -> {27} [style=dotted];
27 -> {28} [style=dotted];
28 -> {14} [color=green];
}
@@ -27,79 +27,77 @@ digraph initBlockAndInPlaceLambda_kt {
subgraph cluster_3 { subgraph cluster_3 {
color=red color=red
6 [label="Enter class C" style="filled" fillcolor=red]; 6 [label="Enter class C" style="filled" fillcolor=red];
subgraph cluster_4 { 7 [label="Part of class initialization"];
color=blue 8 [label="Exit class C" style="filled" fillcolor=red];
7 [label="Part of class initialization"]; }
8 [label="Exit class C" style="filled" fillcolor=red]; 6 -> {7} [color=green];
} 7 -> {8} [style=dotted];
6 -> {7} [color=green]; 7 -> {12} [color=green];
7 -> {8} [style=dotted]; 7 -> {12} [style=dashed];
7 -> {12} [color=green];
7 -> {12} [style=dashed];
subgraph cluster_5 { subgraph cluster_4 {
color=red color=red
9 [label="Enter function <init>" style="filled" fillcolor=red]; 9 [label="Enter function <init>" style="filled" fillcolor=red];
10 [label="Delegated constructor call: super<R|kotlin/Any|>()"]; 10 [label="Delegated constructor call: super<R|kotlin/Any|>()"];
11 [label="Exit function <init>" style="filled" fillcolor=red]; 11 [label="Exit function <init>" style="filled" fillcolor=red];
} }
9 -> {10}; 9 -> {10};
10 -> {11}; 10 -> {11};
subgraph cluster_5 {
color=red
12 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_6 { subgraph cluster_6 {
color=red color=blue
12 [label="Enter init block" style="filled" fillcolor=red]; 13 [label="Enter block"];
14 [label="Access variable R|<local>/a|"];
15 [label="Access variable R|/A.b|"];
16 [label="Enter safe call"];
17 [label="Postponed enter to lambda"];
subgraph cluster_7 { subgraph cluster_7 {
color=blue color=blue
13 [label="Enter block"]; 25 [label="Enter function anonymousFunction" style="filled" fillcolor=red];
14 [label="Access variable R|<local>/a|"];
15 [label="Access variable R|/A.b|"];
16 [label="Enter safe call"];
17 [label="Postponed enter to lambda"];
subgraph cluster_8 { subgraph cluster_8 {
color=blue color=blue
25 [label="Enter function anonymousFunction" style="filled" fillcolor=red]; 26 [label="Enter block"];
subgraph cluster_9 { 27 [label="Access variable R|<local>/a|"];
color=blue 28 [label="Access variable R|<local>/it|"];
26 [label="Enter block"]; 29 [label="Function call: R|/C.C|(...)"];
27 [label="Access variable R|<local>/a|"]; 30 [label="Exit block"];
28 [label="Access variable R|<local>/it|"];
29 [label="Function call: R|/C.C|(...)"];
30 [label="Exit block"];
}
31 [label="Exit function anonymousFunction" style="filled" fillcolor=red];
} }
18 [label="Call arguments union" style="filled" fillcolor=yellow]; 31 [label="Exit function anonymousFunction" style="filled" fillcolor=red];
19 [label="Postponed exit from lambda"];
20 [label="Function call: $subj$.R|kotlin/let|<R|B|, R|C|>(...)"];
21 [label="Exit safe call"];
22 [label="Variable declaration: lval c: R|C?|"];
23 [label="Exit block"];
} }
24 [label="Exit init block" style="filled" fillcolor=red]; 18 [label="Call arguments union" style="filled" fillcolor=yellow];
19 [label="Postponed exit from lambda"];
20 [label="Function call: $subj$.R|kotlin/let|<R|B|, R|C|>(...)"];
21 [label="Exit safe call"];
22 [label="Variable declaration: lval c: R|C?|"];
23 [label="Exit block"];
} }
12 -> {13}; 24 [label="Exit init block" style="filled" fillcolor=red];
13 -> {14};
14 -> {15};
15 -> {16 21};
16 -> {17};
17 -> {25};
17 -> {19} [color=red];
17 -> {25} [style=dashed];
18 -> {20} [color=red];
19 -> {20} [color=green];
20 -> {21};
21 -> {22};
22 -> {23};
23 -> {24};
24 -> {8} [color=green];
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {29};
29 -> {30};
30 -> {31};
31 -> {18} [color=red];
31 -> {19} [color=green];
} }
12 -> {13};
13 -> {14};
14 -> {15};
15 -> {16 21};
16 -> {17};
17 -> {25};
17 -> {19} [color=red];
17 -> {25} [style=dashed];
18 -> {20} [color=red];
19 -> {20} [color=green];
20 -> {21};
21 -> {22};
22 -> {23};
23 -> {24};
24 -> {8} [color=green];
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {29};
29 -> {30};
30 -> {31};
31 -> {18} [color=red];
31 -> {19} [color=green];
}
@@ -22,103 +22,101 @@ digraph postponedLambdaInConstructor_kt {
subgraph cluster_2 { subgraph cluster_2 {
color=red color=red
5 [label="Enter class B" style="filled" fillcolor=red]; 5 [label="Enter class B" style="filled" fillcolor=red];
subgraph cluster_3 { 6 [label="Part of class initialization"];
color=blue 7 [label="Exit class B" style="filled" fillcolor=red];
6 [label="Part of class initialization"]; }
7 [label="Exit class B" style="filled" fillcolor=red]; 5 -> {6} [color=green];
} 6 -> {7} [style=dotted];
5 -> {6} [color=green]; 6 -> {29} [color=green];
6 -> {7} [style=dotted]; 6 -> {29} [style=dashed];
6 -> {29} [color=green];
6 -> {29} [style=dashed];
subgraph cluster_3 {
color=red
8 [label="Enter function <init>" style="filled" fillcolor=red];
9 [label="Access variable R|<local>/s|"];
10 [label="Postponed enter to lambda"];
subgraph cluster_4 { subgraph cluster_4 {
color=red color=blue
8 [label="Enter function <init>" style="filled" fillcolor=red]; 16 [label="Enter function anonymousFunction" style="filled" fillcolor=red];
9 [label="Access variable R|<local>/s|"];
10 [label="Postponed enter to lambda"];
subgraph cluster_5 { subgraph cluster_5 {
color=blue color=blue
16 [label="Enter function anonymousFunction" style="filled" fillcolor=red]; 17 [label="Enter block"];
18 [label="Postponed enter to lambda"];
subgraph cluster_6 { subgraph cluster_6 {
color=blue color=blue
17 [label="Enter block"]; 22 [label="Enter function anonymousFunction" style="filled" fillcolor=red];
18 [label="Postponed enter to lambda"];
subgraph cluster_7 { subgraph cluster_7 {
color=blue color=blue
22 [label="Enter function anonymousFunction" style="filled" fillcolor=red]; 23 [label="Enter block"];
subgraph cluster_8 { 24 [label="Access variable R|<local>/it|"];
color=blue 25 [label="Exit block"];
23 [label="Enter block"];
24 [label="Access variable R|<local>/it|"];
25 [label="Exit block"];
}
26 [label="Exit function anonymousFunction" style="filled" fillcolor=red];
} }
19 [label="Postponed exit from lambda"]; 26 [label="Exit function anonymousFunction" style="filled" fillcolor=red];
20 [label="Exit block"];
} }
21 [label="Exit function anonymousFunction" style="filled" fillcolor=red]; 19 [label="Postponed exit from lambda"];
20 [label="Exit block"];
} }
11 [label="Postponed exit from lambda"]; 21 [label="Exit function anonymousFunction" style="filled" fillcolor=red];
12 [label="Function call: R|<local>/s|.R|kotlin/let|<R|kotlin/String|, R|() -> kotlin/String|>(...)"];
13 [label="Call arguments union" style="filled" fillcolor=yellow];
14 [label="Delegated constructor call: super<R|A|>(...)"];
15 [label="Exit function <init>" style="filled" fillcolor=red];
} }
8 -> {9}; 11 [label="Postponed exit from lambda"];
9 -> {10}; 12 [label="Function call: R|<local>/s|.R|kotlin/let|<R|kotlin/String|, R|() -> kotlin/String|>(...)"];
10 -> {16}; 13 [label="Call arguments union" style="filled" fillcolor=yellow];
10 -> {11} [color=red]; 14 [label="Delegated constructor call: super<R|A|>(...)"];
10 -> {16} [style=dashed]; 15 [label="Exit function <init>" style="filled" fillcolor=red];
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15};
16 -> {17};
17 -> {18};
18 -> {19 22};
18 -> {22} [style=dashed];
19 -> {20};
20 -> {21};
21 -> {13} [color=red];
21 -> {11} [color=green];
22 -> {23};
23 -> {24};
24 -> {25};
25 -> {26};
subgraph cluster_9 {
color=red
27 [label="Enter function getter" style="filled" fillcolor=red];
28 [label="Exit function getter" style="filled" fillcolor=red];
}
27 -> {28};
subgraph cluster_10 {
color=red
29 [label="Enter property" style="filled" fillcolor=red];
30 [label="Access variable R|<local>/s|"];
31 [label="Exit property" style="filled" fillcolor=red];
}
29 -> {30};
30 -> {31};
31 -> {7} [color=green];
subgraph cluster_11 {
color=red
32 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
33 [label="Enter block"];
34 [label="Function call: this@R|/B|.R|/B.foo|()"];
35 [label="Exit block"];
}
36 [label="Exit function foo" style="filled" fillcolor=red];
}
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36};
} }
8 -> {9};
9 -> {10};
10 -> {16};
10 -> {11} [color=red];
10 -> {16} [style=dashed];
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15};
16 -> {17};
17 -> {18};
18 -> {19 22};
18 -> {22} [style=dashed];
19 -> {20};
20 -> {21};
21 -> {13} [color=red];
21 -> {11} [color=green];
22 -> {23};
23 -> {24};
24 -> {25};
25 -> {26};
subgraph cluster_8 {
color=red
27 [label="Enter function getter" style="filled" fillcolor=red];
28 [label="Exit function getter" style="filled" fillcolor=red];
}
27 -> {28};
subgraph cluster_9 {
color=red
29 [label="Enter property" style="filled" fillcolor=red];
30 [label="Access variable R|<local>/s|"];
31 [label="Exit property" style="filled" fillcolor=red];
}
29 -> {30};
30 -> {31};
31 -> {7} [color=green];
subgraph cluster_10 {
color=red
32 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
33 [label="Enter block"];
34 [label="Function call: this@R|/B|.R|/B.foo|()"];
35 [label="Exit block"];
}
36 [label="Exit function foo" style="filled" fillcolor=red];
}
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36};
}
@@ -159,175 +159,171 @@ digraph propertiesAndInitBlocks_kt {
subgraph cluster_16 { subgraph cluster_16 {
color=blue color=blue
64 [label="Enter class GetterLocalClass" style="filled" fillcolor=red]; 64 [label="Enter class GetterLocalClass" style="filled" fillcolor=red];
subgraph cluster_17 { 65 [label="Part of class initialization"];
color=blue 66 [label="Exit class GetterLocalClass" style="filled" fillcolor=red];
65 [label="Part of class initialization"]; }
66 [label="Exit class GetterLocalClass" style="filled" fillcolor=red]; 59 -> {60};
} 60 -> {61};
59 -> {60}; 60 -> {67 70} [color=red];
60 -> {61}; 61 -> {62};
60 -> {67 70} [color=red]; 61 -> {67 64} [color=green];
61 -> {62}; 61 -> {67 64} [style=dashed];
61 -> {67 64} [color=green]; 62 -> {63};
61 -> {67 64} [style=dashed]; 64 -> {65} [color=green];
62 -> {63}; 65 -> {66} [style=dotted];
64 -> {65} [color=green]; 65 -> {70} [color=green];
65 -> {66} [style=dotted]; 65 -> {70} [style=dashed];
65 -> {70} [color=green];
65 -> {70} [style=dashed];
subgraph cluster_18 { subgraph cluster_17 {
color=red color=red
67 [label="Enter function <init>" style="filled" fillcolor=red]; 67 [label="Enter function <init>" style="filled" fillcolor=red];
68 [label="Delegated constructor call: super<R|kotlin/Any|>()"]; 68 [label="Delegated constructor call: super<R|kotlin/Any|>()"];
69 [label="Exit function <init>" style="filled" fillcolor=red]; 69 [label="Exit function <init>" style="filled" fillcolor=red];
} }
67 -> {68}; 67 -> {68};
68 -> {69}; 68 -> {69};
subgraph cluster_18 {
color=red
70 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_19 { subgraph cluster_19 {
color=red color=blue
70 [label="Enter init block" style="filled" fillcolor=red]; 71 [label="Enter block"];
subgraph cluster_20 { 72 [label="Function call: R|java/lang/Exception.Exception|()"];
color=blue 73 [label="Throw: throw R|java/lang/Exception.Exception|()"];
71 [label="Enter block"]; 74 [label="Stub" style="filled" fillcolor=gray];
72 [label="Function call: R|java/lang/Exception.Exception|()"]; 75 [label="Exit block" style="filled" fillcolor=gray];
73 [label="Throw: throw R|java/lang/Exception.Exception|()"];
74 [label="Stub" style="filled" fillcolor=gray];
75 [label="Exit block" style="filled" fillcolor=gray];
}
76 [label="Exit init block" style="filled" fillcolor=red];
} }
70 -> {71}; 76 [label="Exit init block" style="filled" fillcolor=red];
71 -> {72}; }
72 -> {73}; 70 -> {71};
73 -> {76}; 71 -> {72};
73 -> {74} [style=dotted]; 72 -> {73};
74 -> {75} [style=dotted]; 73 -> {76};
75 -> {76} [style=dotted]; 73 -> {74} [style=dotted];
76 -> {66} [color=green]; 74 -> {75} [style=dotted];
75 -> {76} [style=dotted];
76 -> {66} [color=green];
subgraph cluster_20 {
color=red
77 [label="Enter property" style="filled" fillcolor=red];
78 [label="Postponed enter to lambda"];
subgraph cluster_21 { subgraph cluster_21 {
color=red color=blue
77 [label="Enter property" style="filled" fillcolor=red]; 26 [label="Enter function anonymousFunction" style="filled" fillcolor=red];
78 [label="Postponed enter to lambda"];
subgraph cluster_22 { subgraph cluster_22 {
color=blue color=blue
26 [label="Enter function anonymousFunction" style="filled" fillcolor=red]; 27 [label="Enter block"];
subgraph cluster_23 { 28 [label="Exit local class <anonymous>"];
color=blue 29 [label="Function call: R|java/lang/Exception.Exception|()"];
27 [label="Enter block"]; 30 [label="Throw: throw R|java/lang/Exception.Exception|()"];
28 [label="Exit local class <anonymous>"]; 31 [label="Stub" style="filled" fillcolor=gray];
29 [label="Function call: R|java/lang/Exception.Exception|()"]; 32 [label="Exit block" style="filled" fillcolor=gray];
30 [label="Throw: throw R|java/lang/Exception.Exception|()"];
31 [label="Stub" style="filled" fillcolor=gray];
32 [label="Exit block" style="filled" fillcolor=gray];
}
subgraph cluster_24 {
color=blue
34 [label="Enter class InitializerLocalClass" style="filled" fillcolor=red];
subgraph cluster_25 {
color=blue
35 [label="Part of class initialization"];
36 [label="Exit class InitializerLocalClass" style="filled" fillcolor=red];
}
33 [label="Exit function anonymousFunction" style="filled" fillcolor=red];
}
79 [label="Postponed exit from lambda"];
80 [label="Function call: R|/run|(...)"];
81 [label="Exit property" style="filled" fillcolor=red];
} }
77 -> {78}; subgraph cluster_23 {
78 -> {26}; color=blue
78 -> {79} [color=red]; 34 [label="Enter class InitializerLocalClass" style="filled" fillcolor=red];
78 -> {26} [style=dashed]; 35 [label="Part of class initialization"];
79 -> {80}; 36 [label="Exit class InitializerLocalClass" style="filled" fillcolor=red];
80 -> {81};
26 -> {33 27};
27 -> {28};
27 -> {37 48 51} [color=red];
28 -> {29};
28 -> {48 34} [color=green];
28 -> {48 34} [style=dashed];
29 -> {30};
30 -> {33};
30 -> {31} [style=dotted];
31 -> {32} [style=dotted];
32 -> {33} [style=dotted];
33 -> {79} [color=green];
33 -> {26} [color=green style=dashed];
34 -> {35} [color=green];
35 -> {36} [style=dotted];
35 -> {51} [color=green];
35 -> {51} [style=dashed];
subgraph cluster_26 {
color=red
82 [label="Enter function getter" style="filled" fillcolor=red];
83 [label="Exit function getter" style="filled" fillcolor=red];
} }
82 -> {83}; 33 [label="Exit function anonymousFunction" style="filled" fillcolor=red];
}
79 [label="Postponed exit from lambda"];
80 [label="Function call: R|/run|(...)"];
81 [label="Exit property" style="filled" fillcolor=red];
}
77 -> {78};
78 -> {26};
78 -> {79} [color=red];
78 -> {26} [style=dashed];
79 -> {80};
80 -> {81};
26 -> {33 27};
27 -> {28};
27 -> {37 48 51} [color=red];
28 -> {29};
28 -> {48 34} [color=green];
28 -> {48 34} [style=dashed];
29 -> {30};
30 -> {33};
30 -> {31} [style=dotted];
31 -> {32} [style=dotted];
32 -> {33} [style=dotted];
33 -> {79} [color=green];
33 -> {26} [color=green style=dashed];
34 -> {35} [color=green];
35 -> {36} [style=dotted];
35 -> {51} [color=green];
35 -> {51} [style=dashed];
subgraph cluster_24 {
color=red
82 [label="Enter function getter" style="filled" fillcolor=red];
83 [label="Exit function getter" style="filled" fillcolor=red];
}
82 -> {83};
subgraph cluster_25 {
color=red
84 [label="Enter property" style="filled" fillcolor=red];
subgraph cluster_26 {
color=blue
85 [label="Try expression enter"];
subgraph cluster_27 { subgraph cluster_27 {
color=red color=blue
84 [label="Enter property" style="filled" fillcolor=red]; 86 [label="Try main block enter"];
subgraph cluster_28 { subgraph cluster_28 {
color=blue color=blue
85 [label="Try expression enter"]; 87 [label="Enter block"];
subgraph cluster_29 { 88 [label="Const: Int(1)"];
color=blue 89 [label="Exit block"];
86 [label="Try main block enter"];
subgraph cluster_30 {
color=blue
87 [label="Enter block"];
88 [label="Const: Int(1)"];
89 [label="Exit block"];
}
90 [label="Try main block exit"];
}
subgraph cluster_31 {
color=blue
91 [label="Enter finally"];
subgraph cluster_32 {
color=blue
92 [label="Enter block"];
93 [label="Const: Int(0)"];
94 [label="Exit block"];
}
95 [label="Exit finally"];
}
subgraph cluster_33 {
color=blue
96 [label="Catch enter"];
subgraph cluster_34 {
color=blue
97 [label="Enter block"];
98 [label="Const: Int(2)"];
99 [label="Exit block"];
}
100 [label="Catch exit"];
}
101 [label="Try expression exit"];
} }
102 [label="Exit property" style="filled" fillcolor=red]; 90 [label="Try main block exit"];
} }
84 -> {85}; subgraph cluster_29 {
85 -> {86}; color=blue
86 -> {102 96 91 87}; 91 [label="Enter finally"];
87 -> {88}; subgraph cluster_30 {
88 -> {89}; color=blue
89 -> {90}; 92 [label="Enter block"];
90 -> {101}; 93 [label="Const: Int(0)"];
91 -> {92}; 94 [label="Exit block"];
92 -> {93}; }
93 -> {94}; 95 [label="Exit finally"];
94 -> {95}; }
95 -> {101}; subgraph cluster_31 {
96 -> {102 97}; color=blue
97 -> {98}; 96 [label="Catch enter"];
98 -> {99}; subgraph cluster_32 {
99 -> {100}; color=blue
100 -> {101}; 97 [label="Enter block"];
101 -> {102}; 98 [label="Const: Int(2)"];
99 [label="Exit block"];
}
100 [label="Catch exit"];
}
101 [label="Try expression exit"];
} }
102 [label="Exit property" style="filled" fillcolor=red];
}
84 -> {85};
85 -> {86};
86 -> {102 96 91 87};
87 -> {88};
88 -> {89};
89 -> {90};
90 -> {101};
91 -> {92};
92 -> {93};
93 -> {94};
94 -> {95};
95 -> {101};
96 -> {102 97};
97 -> {98};
98 -> {99};
99 -> {100};
100 -> {101};
101 -> {102};
}
@@ -6,132 +6,126 @@ digraph secondaryConstructorCfg_kt {
subgraph cluster_0 { subgraph cluster_0 {
color=red color=red
0 [label="Enter class B" style="filled" fillcolor=red]; 0 [label="Enter class B" style="filled" fillcolor=red];
subgraph cluster_1 { 1 [label="Part of class initialization"];
2 [label="Part of class initialization"];
3 [label="Part of class initialization"];
4 [label="Exit class B" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
1 -> {2} [style=dotted];
1 -> {10} [color=green];
1 -> {10} [style=dashed];
2 -> {3} [style=dotted];
2 -> {15} [color=green];
2 -> {15} [style=dashed];
3 -> {4} [style=dotted];
3 -> {31} [color=green];
3 -> {31} [style=dashed];
subgraph cluster_1 {
color=red
5 [label="Enter function <init>" style="filled" fillcolor=red];
6 [label="Delegated constructor call: super<R|kotlin/Any|>()"];
7 [label="Exit function <init>" style="filled" fillcolor=red];
}
5 -> {6};
6 -> {7};
subgraph cluster_2 {
color=red
8 [label="Enter function getter" style="filled" fillcolor=red];
9 [label="Exit function getter" style="filled" fillcolor=red];
}
8 -> {9};
subgraph cluster_3 {
color=red
10 [label="Enter property" style="filled" fillcolor=red];
11 [label="Access variable R|<local>/p0|"];
12 [label="Exit property" style="filled" fillcolor=red];
}
10 -> {11};
11 -> {12};
12 -> {2} [color=green];
subgraph cluster_4 {
color=red
13 [label="Enter function getter" style="filled" fillcolor=red];
14 [label="Exit function getter" style="filled" fillcolor=red];
}
13 -> {14};
subgraph cluster_5 {
color=red
15 [label="Enter property" style="filled" fillcolor=red];
16 [label="Access variable R|<local>/p0|"];
17 [label="Access variable R|kotlin/String.length|"];
18 [label="Exit property" style="filled" fillcolor=red];
}
15 -> {16};
16 -> {17};
17 -> {18};
18 -> {3} [color=green];
subgraph cluster_6 {
color=red
19 [label="Enter function getter" style="filled" fillcolor=red];
20 [label="Exit function getter" style="filled" fillcolor=red];
}
19 -> {20};
subgraph cluster_7 {
color=red
21 [label="Enter function setter" style="filled" fillcolor=red];
22 [label="Exit function setter" style="filled" fillcolor=red];
}
21 -> {22};
subgraph cluster_8 {
color=red
23 [label="Enter function <init>" style="filled" fillcolor=red];
24 [label="Access variable R|<local>/p0|"];
25 [label="Delegated constructor call: this<R|B|>(...)"];
subgraph cluster_9 {
color=blue color=blue
1 [label="Part of class initialization"]; 26 [label="Enter block"];
subgraph cluster_2 { 27 [label="Access variable R|<local>/p1|"];
color=blue 28 [label="Assignment: R|/B.p3|"];
2 [label="Part of class initialization"]; 29 [label="Exit block"];
subgraph cluster_3 { }
color=blue 30 [label="Exit function <init>" style="filled" fillcolor=red];
3 [label="Part of class initialization"]; }
4 [label="Exit class B" style="filled" fillcolor=red]; 23 -> {24};
} 24 -> {25};
0 -> {1} [color=green]; 25 -> {26};
1 -> {2} [style=dotted]; 26 -> {27};
1 -> {10} [color=green]; 27 -> {28};
1 -> {10} [style=dashed]; 28 -> {29};
2 -> {3} [style=dotted]; 29 -> {30};
2 -> {15} [color=green];
2 -> {15} [style=dashed];
3 -> {4} [style=dotted];
3 -> {31} [color=green];
3 -> {31} [style=dashed];
subgraph cluster_4 { subgraph cluster_10 {
color=red color=red
5 [label="Enter function <init>" style="filled" fillcolor=red]; 31 [label="Enter init block" style="filled" fillcolor=red];
6 [label="Delegated constructor call: super<R|kotlin/Any|>()"]; subgraph cluster_11 {
7 [label="Exit function <init>" style="filled" fillcolor=red]; color=blue
} 32 [label="Enter block"];
5 -> {6}; 33 [label="Access variable R|<local>/p0|"];
6 -> {7}; 34 [label="Access variable R|kotlin/String.length|"];
35 [label="Assignment: R|/B.p1|"];
36 [label="Const: String()"];
37 [label="Assignment: R|/B.p3|"];
38 [label="Exit block"];
}
39 [label="Exit init block" style="filled" fillcolor=red];
}
31 -> {32};
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36};
36 -> {37};
37 -> {38};
38 -> {39};
39 -> {4} [color=green];
subgraph cluster_5 { }
color=red
8 [label="Enter function getter" style="filled" fillcolor=red];
9 [label="Exit function getter" style="filled" fillcolor=red];
}
8 -> {9};
subgraph cluster_6 {
color=red
10 [label="Enter property" style="filled" fillcolor=red];
11 [label="Access variable R|<local>/p0|"];
12 [label="Exit property" style="filled" fillcolor=red];
}
10 -> {11};
11 -> {12};
12 -> {2} [color=green];
subgraph cluster_7 {
color=red
13 [label="Enter function getter" style="filled" fillcolor=red];
14 [label="Exit function getter" style="filled" fillcolor=red];
}
13 -> {14};
subgraph cluster_8 {
color=red
15 [label="Enter property" style="filled" fillcolor=red];
16 [label="Access variable R|<local>/p0|"];
17 [label="Access variable R|kotlin/String.length|"];
18 [label="Exit property" style="filled" fillcolor=red];
}
15 -> {16};
16 -> {17};
17 -> {18};
18 -> {3} [color=green];
subgraph cluster_9 {
color=red
19 [label="Enter function getter" style="filled" fillcolor=red];
20 [label="Exit function getter" style="filled" fillcolor=red];
}
19 -> {20};
subgraph cluster_10 {
color=red
21 [label="Enter function setter" style="filled" fillcolor=red];
22 [label="Exit function setter" style="filled" fillcolor=red];
}
21 -> {22};
subgraph cluster_11 {
color=red
23 [label="Enter function <init>" style="filled" fillcolor=red];
24 [label="Access variable R|<local>/p0|"];
25 [label="Delegated constructor call: this<R|B|>(...)"];
subgraph cluster_12 {
color=blue
26 [label="Enter block"];
27 [label="Access variable R|<local>/p1|"];
28 [label="Assignment: R|/B.p3|"];
29 [label="Exit block"];
}
30 [label="Exit function <init>" style="filled" fillcolor=red];
}
23 -> {24};
24 -> {25};
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {29};
29 -> {30};
subgraph cluster_13 {
color=red
31 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_14 {
color=blue
32 [label="Enter block"];
33 [label="Access variable R|<local>/p0|"];
34 [label="Access variable R|kotlin/String.length|"];
35 [label="Assignment: R|/B.p1|"];
36 [label="Const: String()"];
37 [label="Assignment: R|/B.p3|"];
38 [label="Exit block"];
}
39 [label="Exit init block" style="filled" fillcolor=red];
}
31 -> {32};
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36};
36 -> {37};
37 -> {38};
38 -> {39};
39 -> {4} [color=green];
}
@@ -317,195 +317,193 @@ digraph boundSmartcasts_kt {
subgraph cluster_27 { subgraph cluster_27 {
color=red color=red
115 [label="Enter class D" style="filled" fillcolor=red]; 115 [label="Enter class D" style="filled" fillcolor=red];
subgraph cluster_28 { 116 [label="Part of class initialization"];
color=blue 117 [label="Exit class D" style="filled" fillcolor=red];
116 [label="Part of class initialization"];
117 [label="Exit class D" style="filled" fillcolor=red];
}
115 -> {116} [color=green];
116 -> {117} [style=dotted];
116 -> {123} [color=green];
116 -> {123} [style=dashed];
subgraph cluster_29 {
color=red
118 [label="Enter function <init>" style="filled" fillcolor=red];
119 [label="Delegated constructor call: super<R|kotlin/Any|>()"];
120 [label="Exit function <init>" style="filled" fillcolor=red];
}
118 -> {119};
119 -> {120};
subgraph cluster_30 {
color=red
121 [label="Enter function getter" style="filled" fillcolor=red];
122 [label="Exit function getter" style="filled" fillcolor=red];
}
121 -> {122};
subgraph cluster_31 {
color=red
123 [label="Enter property" style="filled" fillcolor=red];
124 [label="Access variable R|<local>/any|"];
125 [label="Exit property" style="filled" fillcolor=red];
}
123 -> {124};
124 -> {125};
125 -> {117} [color=green];
subgraph cluster_32 {
color=red
126 [label="Enter function baz" style="filled" fillcolor=red];
subgraph cluster_33 {
color=blue
127 [label="Enter block"];
128 [label="Exit block"];
}
129 [label="Exit function baz" style="filled" fillcolor=red];
}
126 -> {127};
127 -> {128};
128 -> {129};
subgraph cluster_34 {
color=red
130 [label="Enter function test_5" style="filled" fillcolor=red];
subgraph cluster_35 {
color=blue
131 [label="Enter block"];
132 [label="Access variable R|<local>/d|"];
133 [label="Access variable R|/D.any|"];
134 [label="Exit lhs of ?:"];
135 [label="Enter rhs of ?:"];
136 [label="Jump: ^test_5 Unit"];
137 [label="Stub" style="filled" fillcolor=gray];
138 [label="Lhs of ?: is not null"];
139 [label="Exit ?:"];
140 [label="Variable declaration: lval a: R|kotlin/Any|"];
141 [label="Access variable R|<local>/a|"];
142 [label="Function call: R|<local>/a|.R|/baz|()"];
143 [label="Access variable R|<local>/d|"];
144 [label="Access variable R|/D.any|"];
145 [label="Function call: R|<local>/d|.R|/D.any|.R|/baz|()"];
146 [label="Access variable R|<local>/a|"];
147 [label="Type operator: (R|<local>/a| as R|A|)"];
148 [label="Access variable R|<local>/a|"];
149 [label="Function call: R|<local>/a|.R|/A.foo|()"];
150 [label="Exit block"];
}
151 [label="Exit function test_5" style="filled" fillcolor=red];
}
130 -> {131};
131 -> {132};
132 -> {133};
133 -> {134};
134 -> {138 135};
135 -> {136};
136 -> {151};
136 -> {137} [style=dotted];
137 -> {139} [style=dotted];
138 -> {139};
139 -> {140};
140 -> {141};
141 -> {142};
142 -> {143};
143 -> {144};
144 -> {145};
145 -> {146};
146 -> {147};
147 -> {148};
148 -> {149};
149 -> {150};
150 -> {151};
subgraph cluster_36 {
color=red
152 [label="Enter function test_6" style="filled" fillcolor=red];
subgraph cluster_37 {
color=blue
153 [label="Enter block"];
154 [label="Access variable R|<local>/d1|"];
155 [label="Access variable R|/D.any|"];
156 [label="Variable declaration: lval a: R|kotlin/Any?|"];
157 [label="Access variable R|<local>/a|"];
158 [label="Type operator: (R|<local>/a| as R|A|)"];
159 [label="Access variable R|<local>/a|"];
160 [label="Function call: R|<local>/a|.R|/A.foo|()"];
161 [label="Access variable R|<local>/d1|"];
162 [label="Access variable R|/D.any|"];
163 [label="Function call: R|<local>/d1|.R|/D.any|.R|/A.foo|()"];
164 [label="Access variable R|<local>/d1|"];
165 [label="Access variable R|/D.any|"];
166 [label="Function call: R|<local>/d1|.R|/D.any|.R|/baz|()"];
167 [label="Exit block"];
}
168 [label="Exit function test_6" style="filled" fillcolor=red];
}
152 -> {153};
153 -> {154};
154 -> {155};
155 -> {156};
156 -> {157};
157 -> {158};
158 -> {159};
159 -> {160};
160 -> {161};
161 -> {162};
162 -> {163};
163 -> {164};
164 -> {165};
165 -> {166};
166 -> {167};
167 -> {168};
subgraph cluster_38 {
color=red
169 [label="Enter function test_7" style="filled" fillcolor=red];
subgraph cluster_39 {
color=blue
170 [label="Enter block"];
171 [label="Access variable R|<local>/d1|"];
172 [label="Enter safe call"];
173 [label="Access variable R|/D.any|"];
174 [label="Exit safe call"];
175 [label="Variable declaration: lval a: R|kotlin/Any?|"];
176 [label="Access variable R|<local>/d2|"];
177 [label="Enter safe call"];
178 [label="Access variable R|/D.any|"];
179 [label="Exit safe call"];
180 [label="Variable declaration: lval b: R|kotlin/Any?|"];
181 [label="Access variable R|<local>/a|"];
182 [label="Type operator: (R|<local>/a| as R|A|)"];
183 [label="Access variable R|<local>/a|"];
184 [label="Function call: R|<local>/a|.R|/A.foo|()"];
185 [label="Access variable R|<local>/b|"];
186 [label="Type operator: (R|<local>/b| as R|B|)"];
187 [label="Access variable R|<local>/b|"];
188 [label="Function call: R|<local>/b|.R|/B.bar|()"];
189 [label="Exit block"];
}
190 [label="Exit function test_7" style="filled" fillcolor=red];
}
169 -> {170};
170 -> {171};
171 -> {172 174};
172 -> {173};
173 -> {174};
174 -> {175};
175 -> {176};
176 -> {177 179};
177 -> {178};
178 -> {179};
179 -> {180};
180 -> {181};
181 -> {182};
182 -> {183};
183 -> {184};
184 -> {185};
185 -> {186};
186 -> {187};
187 -> {188};
188 -> {189};
189 -> {190};
} }
115 -> {116} [color=green];
116 -> {117} [style=dotted];
116 -> {123} [color=green];
116 -> {123} [style=dashed];
subgraph cluster_28 {
color=red
118 [label="Enter function <init>" style="filled" fillcolor=red];
119 [label="Delegated constructor call: super<R|kotlin/Any|>()"];
120 [label="Exit function <init>" style="filled" fillcolor=red];
}
118 -> {119};
119 -> {120};
subgraph cluster_29 {
color=red
121 [label="Enter function getter" style="filled" fillcolor=red];
122 [label="Exit function getter" style="filled" fillcolor=red];
}
121 -> {122};
subgraph cluster_30 {
color=red
123 [label="Enter property" style="filled" fillcolor=red];
124 [label="Access variable R|<local>/any|"];
125 [label="Exit property" style="filled" fillcolor=red];
}
123 -> {124};
124 -> {125};
125 -> {117} [color=green];
subgraph cluster_31 {
color=red
126 [label="Enter function baz" style="filled" fillcolor=red];
subgraph cluster_32 {
color=blue
127 [label="Enter block"];
128 [label="Exit block"];
}
129 [label="Exit function baz" style="filled" fillcolor=red];
}
126 -> {127};
127 -> {128};
128 -> {129};
subgraph cluster_33 {
color=red
130 [label="Enter function test_5" style="filled" fillcolor=red];
subgraph cluster_34 {
color=blue
131 [label="Enter block"];
132 [label="Access variable R|<local>/d|"];
133 [label="Access variable R|/D.any|"];
134 [label="Exit lhs of ?:"];
135 [label="Enter rhs of ?:"];
136 [label="Jump: ^test_5 Unit"];
137 [label="Stub" style="filled" fillcolor=gray];
138 [label="Lhs of ?: is not null"];
139 [label="Exit ?:"];
140 [label="Variable declaration: lval a: R|kotlin/Any|"];
141 [label="Access variable R|<local>/a|"];
142 [label="Function call: R|<local>/a|.R|/baz|()"];
143 [label="Access variable R|<local>/d|"];
144 [label="Access variable R|/D.any|"];
145 [label="Function call: R|<local>/d|.R|/D.any|.R|/baz|()"];
146 [label="Access variable R|<local>/a|"];
147 [label="Type operator: (R|<local>/a| as R|A|)"];
148 [label="Access variable R|<local>/a|"];
149 [label="Function call: R|<local>/a|.R|/A.foo|()"];
150 [label="Exit block"];
}
151 [label="Exit function test_5" style="filled" fillcolor=red];
}
130 -> {131};
131 -> {132};
132 -> {133};
133 -> {134};
134 -> {138 135};
135 -> {136};
136 -> {151};
136 -> {137} [style=dotted];
137 -> {139} [style=dotted];
138 -> {139};
139 -> {140};
140 -> {141};
141 -> {142};
142 -> {143};
143 -> {144};
144 -> {145};
145 -> {146};
146 -> {147};
147 -> {148};
148 -> {149};
149 -> {150};
150 -> {151};
subgraph cluster_35 {
color=red
152 [label="Enter function test_6" style="filled" fillcolor=red];
subgraph cluster_36 {
color=blue
153 [label="Enter block"];
154 [label="Access variable R|<local>/d1|"];
155 [label="Access variable R|/D.any|"];
156 [label="Variable declaration: lval a: R|kotlin/Any?|"];
157 [label="Access variable R|<local>/a|"];
158 [label="Type operator: (R|<local>/a| as R|A|)"];
159 [label="Access variable R|<local>/a|"];
160 [label="Function call: R|<local>/a|.R|/A.foo|()"];
161 [label="Access variable R|<local>/d1|"];
162 [label="Access variable R|/D.any|"];
163 [label="Function call: R|<local>/d1|.R|/D.any|.R|/A.foo|()"];
164 [label="Access variable R|<local>/d1|"];
165 [label="Access variable R|/D.any|"];
166 [label="Function call: R|<local>/d1|.R|/D.any|.R|/baz|()"];
167 [label="Exit block"];
}
168 [label="Exit function test_6" style="filled" fillcolor=red];
}
152 -> {153};
153 -> {154};
154 -> {155};
155 -> {156};
156 -> {157};
157 -> {158};
158 -> {159};
159 -> {160};
160 -> {161};
161 -> {162};
162 -> {163};
163 -> {164};
164 -> {165};
165 -> {166};
166 -> {167};
167 -> {168};
subgraph cluster_37 {
color=red
169 [label="Enter function test_7" style="filled" fillcolor=red];
subgraph cluster_38 {
color=blue
170 [label="Enter block"];
171 [label="Access variable R|<local>/d1|"];
172 [label="Enter safe call"];
173 [label="Access variable R|/D.any|"];
174 [label="Exit safe call"];
175 [label="Variable declaration: lval a: R|kotlin/Any?|"];
176 [label="Access variable R|<local>/d2|"];
177 [label="Enter safe call"];
178 [label="Access variable R|/D.any|"];
179 [label="Exit safe call"];
180 [label="Variable declaration: lval b: R|kotlin/Any?|"];
181 [label="Access variable R|<local>/a|"];
182 [label="Type operator: (R|<local>/a| as R|A|)"];
183 [label="Access variable R|<local>/a|"];
184 [label="Function call: R|<local>/a|.R|/A.foo|()"];
185 [label="Access variable R|<local>/b|"];
186 [label="Type operator: (R|<local>/b| as R|B|)"];
187 [label="Access variable R|<local>/b|"];
188 [label="Function call: R|<local>/b|.R|/B.bar|()"];
189 [label="Exit block"];
}
190 [label="Exit function test_7" style="filled" fillcolor=red];
}
169 -> {170};
170 -> {171};
171 -> {172 174};
172 -> {173};
173 -> {174};
174 -> {175};
175 -> {176};
176 -> {177 179};
177 -> {178};
178 -> {179};
179 -> {180};
180 -> {181};
181 -> {182};
182 -> {183};
183 -> {184};
184 -> {185};
185 -> {186};
186 -> {187};
187 -> {188};
188 -> {189};
189 -> {190};
}
@@ -22,109 +22,107 @@ digraph functionCallBound_kt {
subgraph cluster_2 { subgraph cluster_2 {
color=red color=red
5 [label="Enter class Sub" style="filled" fillcolor=red]; 5 [label="Enter class Sub" style="filled" fillcolor=red];
subgraph cluster_3 { 6 [label="Part of class initialization"];
color=blue 7 [label="Exit class Sub" style="filled" fillcolor=red];
6 [label="Part of class initialization"]; }
7 [label="Exit class Sub" style="filled" fillcolor=red]; 5 -> {6} [color=green];
} 6 -> {7} [style=dotted];
5 -> {6} [color=green]; 6 -> {13} [color=green];
6 -> {7} [style=dotted]; 6 -> {13} [style=dashed];
6 -> {13} [color=green];
6 -> {13} [style=dashed];
subgraph cluster_4 { subgraph cluster_3 {
color=red color=red
8 [label="Enter function <init>" style="filled" fillcolor=red]; 8 [label="Enter function <init>" style="filled" fillcolor=red];
9 [label="Delegated constructor call: super<R|Base|>()"]; 9 [label="Delegated constructor call: super<R|Base|>()"];
10 [label="Exit function <init>" style="filled" fillcolor=red]; 10 [label="Exit function <init>" style="filled" fillcolor=red];
} }
8 -> {9}; 8 -> {9};
9 -> {10}; 9 -> {10};
subgraph cluster_5 { subgraph cluster_4 {
color=red color=red
11 [label="Enter function getter" style="filled" fillcolor=red]; 11 [label="Enter function getter" style="filled" fillcolor=red];
12 [label="Exit function getter" style="filled" fillcolor=red]; 12 [label="Exit function getter" style="filled" fillcolor=red];
} }
11 -> {12}; 11 -> {12};
subgraph cluster_6 { subgraph cluster_5 {
color=red color=red
13 [label="Enter property" style="filled" fillcolor=red]; 13 [label="Enter property" style="filled" fillcolor=red];
14 [label="Access variable R|<local>/data|"]; 14 [label="Access variable R|<local>/data|"];
15 [label="Exit property" style="filled" fillcolor=red]; 15 [label="Exit property" style="filled" fillcolor=red];
} }
13 -> {14}; 13 -> {14};
14 -> {15}; 14 -> {15};
15 -> {7} [color=green]; 15 -> {7} [color=green];
subgraph cluster_6 {
color=red
16 [label="Enter function isOk" style="filled" fillcolor=red];
subgraph cluster_7 { subgraph cluster_7 {
color=red color=blue
16 [label="Enter function isOk" style="filled" fillcolor=red]; 17 [label="Enter block"];
subgraph cluster_8 { 18 [label="Const: Boolean(true)"];
color=blue 19 [label="Jump: ^isOk Boolean(true)"];
17 [label="Enter block"]; 20 [label="Stub" style="filled" fillcolor=gray];
18 [label="Const: Boolean(true)"]; 21 [label="Exit block" style="filled" fillcolor=gray];
19 [label="Jump: ^isOk Boolean(true)"];
20 [label="Stub" style="filled" fillcolor=gray];
21 [label="Exit block" style="filled" fillcolor=gray];
}
22 [label="Exit function isOk" style="filled" fillcolor=red];
} }
16 -> {17}; 22 [label="Exit function isOk" style="filled" fillcolor=red];
17 -> {18}; }
18 -> {19}; 16 -> {17};
19 -> {22}; 17 -> {18};
19 -> {20} [style=dotted]; 18 -> {19};
20 -> {21} [style=dotted]; 19 -> {22};
21 -> {22} [style=dotted]; 19 -> {20} [style=dotted];
20 -> {21} [style=dotted];
21 -> {22} [style=dotted];
subgraph cluster_8 {
color=red
23 [label="Enter function check" style="filled" fillcolor=red];
subgraph cluster_9 { subgraph cluster_9 {
color=red color=blue
23 [label="Enter function check" style="filled" fillcolor=red]; 24 [label="Enter block"];
subgraph cluster_10 { subgraph cluster_10 {
color=blue color=blue
24 [label="Enter block"]; 25 [label="Enter when"];
subgraph cluster_11 { subgraph cluster_11 {
color=blue color=blue
25 [label="Enter when"]; 26 [label="Enter when branch condition "];
subgraph cluster_12 { 27 [label="Access variable R|<local>/base|"];
color=blue 28 [label="Type operator: (R|<local>/base| as? R|Sub|)"];
26 [label="Enter when branch condition "]; 29 [label="Enter safe call"];
27 [label="Access variable R|<local>/base|"]; 30 [label="Function call: $subj$.R|/isOk|()"];
28 [label="Type operator: (R|<local>/base| as? R|Sub|)"]; 31 [label="Exit safe call"];
29 [label="Enter safe call"]; 32 [label="Const: Boolean(true)"];
30 [label="Function call: $subj$.R|/isOk|()"]; 33 [label="Equality operator =="];
31 [label="Exit safe call"]; 34 [label="Exit when branch condition"];
32 [label="Const: Boolean(true)"];
33 [label="Equality operator =="];
34 [label="Exit when branch condition"];
}
subgraph cluster_13 {
color=blue
35 [label="Enter when branch condition else"];
36 [label="Exit when branch condition"];
}
37 [label="Enter when branch result"];
subgraph cluster_14 {
color=blue
38 [label="Enter block"];
39 [label="Access variable R|<local>/base|"];
40 [label="Exit block"];
}
41 [label="Exit when branch result"];
42 [label="Enter when branch result"];
subgraph cluster_15 {
color=blue
43 [label="Enter block"];
44 [label="Access variable R|<local>/base|"];
45 [label="Access variable R|/Sub.data|"];
46 [label="Exit block"];
}
47 [label="Exit when branch result"];
48 [label="Exit when"];
} }
49 [label="Jump: ^check when () { subgraph cluster_12 {
color=blue
35 [label="Enter when branch condition else"];
36 [label="Exit when branch condition"];
}
37 [label="Enter when branch result"];
subgraph cluster_13 {
color=blue
38 [label="Enter block"];
39 [label="Access variable R|<local>/base|"];
40 [label="Exit block"];
}
41 [label="Exit when branch result"];
42 [label="Enter when branch result"];
subgraph cluster_14 {
color=blue
43 [label="Enter block"];
44 [label="Access variable R|<local>/base|"];
45 [label="Access variable R|/Sub.data|"];
46 [label="Exit block"];
}
47 [label="Exit when branch result"];
48 [label="Exit when"];
}
49 [label="Jump: ^check when () {
==((R|<local>/base| as? R|Sub|)?.{ $subj$.R|/isOk|() }, Boolean(true)) -> { ==((R|<local>/base| as? R|Sub|)?.{ $subj$.R|/isOk|() }, Boolean(true)) -> {
R|<local>/base|.R|/Sub.data| R|<local>/base|.R|/Sub.data|
} }
@@ -133,40 +131,40 @@ digraph functionCallBound_kt {
} }
} }
"]; "];
50 [label="Stub" style="filled" fillcolor=gray]; 50 [label="Stub" style="filled" fillcolor=gray];
51 [label="Exit block" style="filled" fillcolor=gray]; 51 [label="Exit block" style="filled" fillcolor=gray];
}
52 [label="Exit function check" style="filled" fillcolor=red];
} }
23 -> {24}; 52 [label="Exit function check" style="filled" fillcolor=red];
24 -> {25};
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {29 31};
29 -> {30};
30 -> {31};
31 -> {32};
32 -> {33};
33 -> {34};
34 -> {42 35};
35 -> {36};
36 -> {37};
37 -> {38};
38 -> {39};
39 -> {40};
40 -> {41};
41 -> {48};
42 -> {43};
43 -> {44};
44 -> {45};
45 -> {46};
46 -> {47};
47 -> {48};
48 -> {49};
49 -> {52};
49 -> {50} [style=dotted];
50 -> {51} [style=dotted];
51 -> {52} [style=dotted];
} }
23 -> {24};
24 -> {25};
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {29 31};
29 -> {30};
30 -> {31};
31 -> {32};
32 -> {33};
33 -> {34};
34 -> {42 35};
35 -> {36};
36 -> {37};
37 -> {38};
38 -> {39};
39 -> {40};
40 -> {41};
41 -> {48};
42 -> {43};
43 -> {44};
44 -> {45};
45 -> {46};
46 -> {47};
47 -> {48};
48 -> {49};
49 -> {52};
49 -> {50} [style=dotted];
50 -> {51} [style=dotted];
51 -> {52} [style=dotted];
}
@@ -22,238 +22,236 @@ digraph lambdaInWhenBranch_kt {
subgraph cluster_2 { subgraph cluster_2 {
color=red color=red
5 [label="Enter class SubClass1" style="filled" fillcolor=red]; 5 [label="Enter class SubClass1" style="filled" fillcolor=red];
subgraph cluster_3 { 6 [label="Part of class initialization"];
color=blue 7 [label="Exit class SubClass1" style="filled" fillcolor=red];
6 [label="Part of class initialization"]; }
7 [label="Exit class SubClass1" style="filled" fillcolor=red]; 5 -> {6} [color=green];
} 6 -> {7} [style=dotted];
5 -> {6} [color=green]; 6 -> {13} [color=green];
6 -> {7} [style=dotted]; 6 -> {13} [style=dashed];
6 -> {13} [color=green];
6 -> {13} [style=dashed];
subgraph cluster_4 { subgraph cluster_3 {
color=red color=red
8 [label="Enter function <init>" style="filled" fillcolor=red]; 8 [label="Enter function <init>" style="filled" fillcolor=red];
9 [label="Delegated constructor call: super<R|Sealed|>()"]; 9 [label="Delegated constructor call: super<R|Sealed|>()"];
10 [label="Exit function <init>" style="filled" fillcolor=red]; 10 [label="Exit function <init>" style="filled" fillcolor=red];
} }
8 -> {9}; 8 -> {9};
9 -> {10}; 9 -> {10};
subgraph cluster_5 { subgraph cluster_4 {
color=red color=red
11 [label="Enter function getter" style="filled" fillcolor=red]; 11 [label="Enter function getter" style="filled" fillcolor=red];
12 [label="Exit function getter" style="filled" fillcolor=red]; 12 [label="Exit function getter" style="filled" fillcolor=red];
} }
11 -> {12}; 11 -> {12};
subgraph cluster_6 { subgraph cluster_5 {
color=red color=red
13 [label="Enter property" style="filled" fillcolor=red]; 13 [label="Enter property" style="filled" fillcolor=red];
14 [label="Access variable R|<local>/t|"]; 14 [label="Access variable R|<local>/t|"];
15 [label="Exit property" style="filled" fillcolor=red]; 15 [label="Exit property" style="filled" fillcolor=red];
} }
13 -> {14}; 13 -> {14};
14 -> {15}; 14 -> {15};
15 -> {7} [color=green]; 15 -> {7} [color=green];
subgraph cluster_7 { subgraph cluster_6 {
color=red color=red
16 [label="Enter function component1" style="filled" fillcolor=red]; 16 [label="Enter function component1" style="filled" fillcolor=red];
17 [label="Exit function component1" style="filled" fillcolor=red]; 17 [label="Exit function component1" style="filled" fillcolor=red];
} }
16 -> {17}; 16 -> {17};
subgraph cluster_7 {
color=red
18 [label="Enter function copy" style="filled" fillcolor=red];
subgraph cluster_8 { subgraph cluster_8 {
color=red color=blue
18 [label="Enter function copy" style="filled" fillcolor=red]; 20 [label="Enter default value of t" style="filled" fillcolor=red];
subgraph cluster_9 { 21 [label="Access variable R|/SubClass1.t|"];
color=blue 22 [label="Exit default value of t" style="filled" fillcolor=red];
20 [label="Enter default value of t" style="filled" fillcolor=red];
21 [label="Access variable R|/SubClass1.t|"];
22 [label="Exit default value of t" style="filled" fillcolor=red];
}
19 [label="Exit function copy" style="filled" fillcolor=red];
} }
18 -> {20 19}; 19 [label="Exit function copy" style="filled" fillcolor=red];
20 -> {21}; }
20 -> {20} [style=dashed]; 18 -> {20 19};
21 -> {22}; 20 -> {21};
20 -> {20} [style=dashed];
21 -> {22};
subgraph cluster_10 { subgraph cluster_9 {
color=red color=red
23 [label="Enter class SubClass2" style="filled" fillcolor=red]; 23 [label="Enter class SubClass2" style="filled" fillcolor=red];
24 [label="Exit class SubClass2" style="filled" fillcolor=red]; 24 [label="Exit class SubClass2" style="filled" fillcolor=red];
} }
23 -> {24} [color=green]; 23 -> {24} [color=green];
subgraph cluster_11 { subgraph cluster_10 {
color=red color=red
25 [label="Enter function <init>" style="filled" fillcolor=red]; 25 [label="Enter function <init>" style="filled" fillcolor=red];
26 [label="Delegated constructor call: super<R|Sealed|>()"]; 26 [label="Delegated constructor call: super<R|Sealed|>()"];
27 [label="Exit function <init>" style="filled" fillcolor=red]; 27 [label="Exit function <init>" style="filled" fillcolor=red];
} }
25 -> {26}; 25 -> {26};
26 -> {27}; 26 -> {27};
subgraph cluster_12 { subgraph cluster_11 {
color=red color=red
28 [label="Enter function copy" style="filled" fillcolor=red]; 28 [label="Enter function copy" style="filled" fillcolor=red];
29 [label="Exit function copy" style="filled" fillcolor=red]; 29 [label="Exit function copy" style="filled" fillcolor=red];
} }
28 -> {29}; 28 -> {29};
subgraph cluster_12 {
color=red
30 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_13 { subgraph cluster_13 {
color=red color=blue
30 [label="Enter function foo" style="filled" fillcolor=red]; 31 [label="Enter block"];
subgraph cluster_14 { subgraph cluster_14 {
color=blue color=blue
31 [label="Enter block"]; 32 [label="Enter when"];
33 [label="Access variable R|<local>/p|"];
subgraph cluster_15 { subgraph cluster_15 {
color=blue color=blue
32 [label="Enter when"]; 34 [label="Enter when branch condition "];
33 [label="Access variable R|<local>/p|"]; 35 [label="Type operator: ($subj$ is R|SubClass1|)"];
subgraph cluster_16 { 36 [label="Exit when branch condition"];
color=blue }
34 [label="Enter when branch condition "]; subgraph cluster_16 {
35 [label="Type operator: ($subj$ is R|SubClass1|)"]; color=blue
36 [label="Exit when branch condition"]; 37 [label="Enter when branch condition "];
} 38 [label="Type operator: ($subj$ is R|SubClass2|)"];
subgraph cluster_17 { 39 [label="Exit when branch condition"];
color=blue }
37 [label="Enter when branch condition "]; 40 [label="Enter when branch result"];
38 [label="Type operator: ($subj$ is R|SubClass2|)"]; subgraph cluster_17 {
39 [label="Exit when branch condition"]; color=blue
} 41 [label="Enter block"];
40 [label="Enter when branch result"]; 42 [label="Const: String()"];
subgraph cluster_18 { 43 [label="Exit block"];
color=blue }
41 [label="Enter block"]; 44 [label="Exit when branch result"];
42 [label="Const: String()"]; 45 [label="Enter when branch result"];
43 [label="Exit block"]; subgraph cluster_18 {
} color=blue
44 [label="Exit when branch result"]; 46 [label="Enter block"];
45 [label="Enter when branch result"]; 47 [label="Const: String()"];
48 [label="Postponed enter to lambda"];
subgraph cluster_19 { subgraph cluster_19 {
color=blue color=blue
46 [label="Enter block"]; 79 [label="Enter function anonymousFunction" style="filled" fillcolor=red];
47 [label="Const: String()"];
48 [label="Postponed enter to lambda"];
subgraph cluster_20 { subgraph cluster_20 {
color=blue color=blue
79 [label="Enter function anonymousFunction" style="filled" fillcolor=red]; 80 [label="Enter block"];
subgraph cluster_21 { 81 [label="Access variable R|<local>/it|"];
color=blue 82 [label="Exit block"];
80 [label="Enter block"];
81 [label="Access variable R|<local>/it|"];
82 [label="Exit block"];
}
83 [label="Exit function anonymousFunction" style="filled" fillcolor=red];
} }
49 [label="Postponed exit from lambda"]; 83 [label="Exit function anonymousFunction" style="filled" fillcolor=red];
50 [label="Function call: String().R|kotlin/let|<R|kotlin/String|, R|kotlin/String|>(...)"];
51 [label="Exit block"];
} }
52 [label="Exit when branch result"]; 49 [label="Postponed exit from lambda"];
53 [label="Exit when"]; 50 [label="Function call: String().R|kotlin/let|<R|kotlin/String|, R|kotlin/String|>(...)"];
51 [label="Exit block"];
} }
54 [label="Access variable R|<local>/p|"]; 52 [label="Exit when branch result"];
55 [label="Access variable <Unresolved name: t>#"]; 53 [label="Exit when"];
}
54 [label="Access variable R|<local>/p|"];
55 [label="Access variable <Unresolved name: t>#"];
subgraph cluster_21 {
color=blue
56 [label="Enter when"];
57 [label="Access variable R|<local>/p|"];
subgraph cluster_22 { subgraph cluster_22 {
color=blue color=blue
56 [label="Enter when"]; 58 [label="Enter when branch condition "];
57 [label="Access variable R|<local>/p|"]; 59 [label="Type operator: ($subj$ is R|SubClass1|)"];
subgraph cluster_23 { 60 [label="Exit when branch condition"];
color=blue
58 [label="Enter when branch condition "];
59 [label="Type operator: ($subj$ is R|SubClass1|)"];
60 [label="Exit when branch condition"];
}
subgraph cluster_24 {
color=blue
61 [label="Enter when branch condition "];
62 [label="Type operator: ($subj$ is R|SubClass2|)"];
63 [label="Exit when branch condition"];
}
64 [label="Enter when branch result"];
subgraph cluster_25 {
color=blue
65 [label="Enter block"];
66 [label="Const: String(2)"];
67 [label="Exit block"];
}
68 [label="Exit when branch result"];
69 [label="Enter when branch result"];
subgraph cluster_26 {
color=blue
70 [label="Enter block"];
71 [label="Access variable R|<local>/p|"];
72 [label="Access variable R|/SubClass1.t|"];
73 [label="Exit block"];
}
74 [label="Exit when branch result"];
75 [label="Exit when"];
} }
76 [label="Access variable R|kotlin/String.length|"]; subgraph cluster_23 {
77 [label="Exit block"]; color=blue
61 [label="Enter when branch condition "];
62 [label="Type operator: ($subj$ is R|SubClass2|)"];
63 [label="Exit when branch condition"];
}
64 [label="Enter when branch result"];
subgraph cluster_24 {
color=blue
65 [label="Enter block"];
66 [label="Const: String(2)"];
67 [label="Exit block"];
}
68 [label="Exit when branch result"];
69 [label="Enter when branch result"];
subgraph cluster_25 {
color=blue
70 [label="Enter block"];
71 [label="Access variable R|<local>/p|"];
72 [label="Access variable R|/SubClass1.t|"];
73 [label="Exit block"];
}
74 [label="Exit when branch result"];
75 [label="Exit when"];
} }
78 [label="Exit function foo" style="filled" fillcolor=red]; 76 [label="Access variable R|kotlin/String.length|"];
77 [label="Exit block"];
} }
30 -> {31}; 78 [label="Exit function foo" style="filled" fillcolor=red];
31 -> {32};
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36};
36 -> {45 37};
37 -> {38};
38 -> {39};
39 -> {40};
40 -> {41};
41 -> {42};
42 -> {43};
43 -> {44};
44 -> {53};
45 -> {46};
46 -> {47};
47 -> {48};
48 -> {79};
48 -> {49} [color=red];
48 -> {79} [style=dashed];
49 -> {50};
50 -> {51};
51 -> {52};
52 -> {53};
53 -> {54};
54 -> {55};
55 -> {56};
56 -> {57};
57 -> {58};
58 -> {59};
59 -> {60};
60 -> {69 61};
61 -> {62};
62 -> {63};
63 -> {64};
64 -> {65};
65 -> {66};
66 -> {67};
67 -> {68};
68 -> {75};
69 -> {70};
70 -> {71};
71 -> {72};
72 -> {73};
73 -> {74};
74 -> {75};
75 -> {76};
76 -> {77};
77 -> {78};
79 -> {80};
80 -> {81};
81 -> {82};
82 -> {83};
83 -> {49} [color=green];
} }
30 -> {31};
31 -> {32};
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36};
36 -> {45 37};
37 -> {38};
38 -> {39};
39 -> {40};
40 -> {41};
41 -> {42};
42 -> {43};
43 -> {44};
44 -> {53};
45 -> {46};
46 -> {47};
47 -> {48};
48 -> {79};
48 -> {49} [color=red];
48 -> {79} [style=dashed];
49 -> {50};
50 -> {51};
51 -> {52};
52 -> {53};
53 -> {54};
54 -> {55};
55 -> {56};
56 -> {57};
57 -> {58};
58 -> {59};
59 -> {60};
60 -> {69 61};
61 -> {62};
62 -> {63};
63 -> {64};
64 -> {65};
65 -> {66};
66 -> {67};
67 -> {68};
68 -> {75};
69 -> {70};
70 -> {71};
71 -> {72};
72 -> {73};
73 -> {74};
74 -> {75};
75 -> {76};
76 -> {77};
77 -> {78};
79 -> {80};
80 -> {81};
81 -> {82};
82 -> {83};
83 -> {49} [color=green];
}
File diff suppressed because it is too large Load Diff
@@ -6,429 +6,427 @@ digraph assignSafeCall_kt {
subgraph cluster_0 { subgraph cluster_0 {
color=red color=red
0 [label="Enter class A" style="filled" fillcolor=red]; 0 [label="Enter class A" style="filled" fillcolor=red];
subgraph cluster_1 { 1 [label="Part of class initialization"];
color=blue 2 [label="Exit class A" style="filled" fillcolor=red];
1 [label="Part of class initialization"]; }
2 [label="Exit class A" style="filled" fillcolor=red]; 0 -> {1} [color=green];
} 1 -> {2} [style=dotted];
0 -> {1} [color=green]; 1 -> {15} [color=green];
1 -> {2} [style=dotted]; 1 -> {15} [style=dashed];
1 -> {15} [color=green];
1 -> {15} [style=dashed];
subgraph cluster_2 { subgraph cluster_1 {
color=red color=red
3 [label="Enter function <init>" style="filled" fillcolor=red]; 3 [label="Enter function <init>" style="filled" fillcolor=red];
4 [label="Delegated constructor call: super<R|kotlin/Any|>()"]; 4 [label="Delegated constructor call: super<R|kotlin/Any|>()"];
5 [label="Exit function <init>" style="filled" fillcolor=red]; 5 [label="Exit function <init>" style="filled" fillcolor=red];
} }
3 -> {4}; 3 -> {4};
4 -> {5}; 4 -> {5};
subgraph cluster_2 {
color=red
6 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_3 { subgraph cluster_3 {
color=red color=blue
6 [label="Enter function foo" style="filled" fillcolor=red]; 7 [label="Enter block"];
subgraph cluster_4 { 8 [label="Const: Int(1)"];
color=blue 9 [label="Jump: ^foo Int(1)"];
7 [label="Enter block"]; 10 [label="Stub" style="filled" fillcolor=gray];
8 [label="Const: Int(1)"]; 11 [label="Exit block" style="filled" fillcolor=gray];
9 [label="Jump: ^foo Int(1)"];
10 [label="Stub" style="filled" fillcolor=gray];
11 [label="Exit block" style="filled" fillcolor=gray];
}
12 [label="Exit function foo" style="filled" fillcolor=red];
} }
6 -> {7}; 12 [label="Exit function foo" style="filled" fillcolor=red];
7 -> {8}; }
8 -> {9}; 6 -> {7};
9 -> {12}; 7 -> {8};
9 -> {10} [style=dotted]; 8 -> {9};
10 -> {11} [style=dotted]; 9 -> {12};
11 -> {12} [style=dotted]; 9 -> {10} [style=dotted];
10 -> {11} [style=dotted];
11 -> {12} [style=dotted];
subgraph cluster_5 { subgraph cluster_4 {
color=red color=red
13 [label="Enter function getter" style="filled" fillcolor=red]; 13 [label="Enter function getter" style="filled" fillcolor=red];
14 [label="Exit function getter" style="filled" fillcolor=red]; 14 [label="Exit function getter" style="filled" fillcolor=red];
} }
13 -> {14}; 13 -> {14};
subgraph cluster_6 { subgraph cluster_5 {
color=red color=red
15 [label="Enter property" style="filled" fillcolor=red]; 15 [label="Enter property" style="filled" fillcolor=red];
16 [label="Const: Int(1)"]; 16 [label="Const: Int(1)"];
17 [label="Exit property" style="filled" fillcolor=red]; 17 [label="Exit property" style="filled" fillcolor=red];
} }
15 -> {16}; 15 -> {16};
16 -> {17}; 16 -> {17};
17 -> {2} [color=green]; 17 -> {2} [color=green];
subgraph cluster_6 {
color=red
18 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_7 { subgraph cluster_7 {
color=red color=blue
18 [label="Enter function bar" style="filled" fillcolor=red]; 19 [label="Enter block"];
subgraph cluster_8 { 20 [label="Exit block"];
color=blue
19 [label="Enter block"];
20 [label="Exit block"];
}
21 [label="Exit function bar" style="filled" fillcolor=red];
} }
18 -> {19}; 21 [label="Exit function bar" style="filled" fillcolor=red];
19 -> {20}; }
20 -> {21}; 18 -> {19};
19 -> {20};
20 -> {21};
subgraph cluster_8 {
color=red
22 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_9 { subgraph cluster_9 {
color=red color=blue
22 [label="Enter function test_1" style="filled" fillcolor=red]; 23 [label="Enter block"];
24 [label="Access variable R|<local>/a|"];
25 [label="Enter safe call"];
26 [label="Access variable R|/A.x|"];
27 [label="Exit safe call"];
28 [label="Variable declaration: lval x: R|kotlin/Int?|"];
subgraph cluster_10 { subgraph cluster_10 {
color=blue color=blue
23 [label="Enter block"]; 29 [label="Enter when"];
24 [label="Access variable R|<local>/a|"];
25 [label="Enter safe call"];
26 [label="Access variable R|/A.x|"];
27 [label="Exit safe call"];
28 [label="Variable declaration: lval x: R|kotlin/Int?|"];
subgraph cluster_11 { subgraph cluster_11 {
color=blue color=blue
29 [label="Enter when"]; 30 [label="Enter when branch condition "];
subgraph cluster_12 { 31 [label="Access variable R|<local>/x|"];
color=blue 32 [label="Const: Null(null)"];
30 [label="Enter when branch condition "]; 33 [label="Equality operator !="];
31 [label="Access variable R|<local>/x|"]; 34 [label="Exit when branch condition"];
32 [label="Const: Null(null)"];
33 [label="Equality operator !="];
34 [label="Exit when branch condition"];
}
35 [label="Synthetic else branch"];
36 [label="Enter when branch result"];
subgraph cluster_13 {
color=blue
37 [label="Enter block"];
38 [label="Access variable R|<local>/a|"];
39 [label="Function call: R|<local>/a|.R|/A.bar|()"];
40 [label="Exit block"];
}
41 [label="Exit when branch result"];
42 [label="Exit when"];
} }
43 [label="Exit block"]; 35 [label="Synthetic else branch"];
36 [label="Enter when branch result"];
subgraph cluster_12 {
color=blue
37 [label="Enter block"];
38 [label="Access variable R|<local>/a|"];
39 [label="Function call: R|<local>/a|.R|/A.bar|()"];
40 [label="Exit block"];
}
41 [label="Exit when branch result"];
42 [label="Exit when"];
} }
44 [label="Exit function test_1" style="filled" fillcolor=red]; 43 [label="Exit block"];
} }
22 -> {23}; 44 [label="Exit function test_1" style="filled" fillcolor=red];
23 -> {24}; }
24 -> {25 27}; 22 -> {23};
25 -> {26}; 23 -> {24};
26 -> {27}; 24 -> {25 27};
27 -> {28}; 25 -> {26};
28 -> {29}; 26 -> {27};
29 -> {30}; 27 -> {28};
30 -> {31}; 28 -> {29};
31 -> {32}; 29 -> {30};
32 -> {33}; 30 -> {31};
33 -> {34}; 31 -> {32};
34 -> {36 35}; 32 -> {33};
35 -> {42}; 33 -> {34};
36 -> {37}; 34 -> {36 35};
37 -> {38}; 35 -> {42};
38 -> {39}; 36 -> {37};
39 -> {40}; 37 -> {38};
40 -> {41}; 38 -> {39};
41 -> {42}; 39 -> {40};
42 -> {43}; 40 -> {41};
43 -> {44}; 41 -> {42};
42 -> {43};
43 -> {44};
subgraph cluster_13 {
color=red
45 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_14 { subgraph cluster_14 {
color=red color=blue
45 [label="Enter function test_2" style="filled" fillcolor=red]; 46 [label="Enter block"];
47 [label="Access variable R|<local>/a|"];
48 [label="Enter safe call"];
49 [label="Function call: $subj$.R|/A.foo|()"];
50 [label="Exit safe call"];
51 [label="Variable declaration: lval x: R|kotlin/Int?|"];
subgraph cluster_15 { subgraph cluster_15 {
color=blue color=blue
46 [label="Enter block"]; 52 [label="Enter when"];
47 [label="Access variable R|<local>/a|"];
48 [label="Enter safe call"];
49 [label="Function call: $subj$.R|/A.foo|()"];
50 [label="Exit safe call"];
51 [label="Variable declaration: lval x: R|kotlin/Int?|"];
subgraph cluster_16 { subgraph cluster_16 {
color=blue color=blue
52 [label="Enter when"]; 53 [label="Enter when branch condition "];
subgraph cluster_17 { 54 [label="Access variable R|<local>/x|"];
color=blue 55 [label="Const: Null(null)"];
53 [label="Enter when branch condition "]; 56 [label="Equality operator !="];
54 [label="Access variable R|<local>/x|"]; 57 [label="Exit when branch condition"];
55 [label="Const: Null(null)"];
56 [label="Equality operator !="];
57 [label="Exit when branch condition"];
}
58 [label="Synthetic else branch"];
59 [label="Enter when branch result"];
subgraph cluster_18 {
color=blue
60 [label="Enter block"];
61 [label="Access variable R|<local>/a|"];
62 [label="Function call: R|<local>/a|.R|/A.bar|()"];
63 [label="Exit block"];
}
64 [label="Exit when branch result"];
65 [label="Exit when"];
} }
66 [label="Exit block"]; 58 [label="Synthetic else branch"];
59 [label="Enter when branch result"];
subgraph cluster_17 {
color=blue
60 [label="Enter block"];
61 [label="Access variable R|<local>/a|"];
62 [label="Function call: R|<local>/a|.R|/A.bar|()"];
63 [label="Exit block"];
}
64 [label="Exit when branch result"];
65 [label="Exit when"];
} }
67 [label="Exit function test_2" style="filled" fillcolor=red]; 66 [label="Exit block"];
} }
45 -> {46}; 67 [label="Exit function test_2" style="filled" fillcolor=red];
46 -> {47}; }
47 -> {48 50}; 45 -> {46};
48 -> {49}; 46 -> {47};
49 -> {50}; 47 -> {48 50};
50 -> {51}; 48 -> {49};
51 -> {52}; 49 -> {50};
52 -> {53}; 50 -> {51};
53 -> {54}; 51 -> {52};
54 -> {55}; 52 -> {53};
55 -> {56}; 53 -> {54};
56 -> {57}; 54 -> {55};
57 -> {59 58}; 55 -> {56};
58 -> {65}; 56 -> {57};
59 -> {60}; 57 -> {59 58};
60 -> {61}; 58 -> {65};
61 -> {62}; 59 -> {60};
62 -> {63}; 60 -> {61};
63 -> {64}; 61 -> {62};
64 -> {65}; 62 -> {63};
65 -> {66}; 63 -> {64};
66 -> {67}; 64 -> {65};
65 -> {66};
66 -> {67};
subgraph cluster_18 {
color=red
68 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_19 { subgraph cluster_19 {
color=red color=blue
68 [label="Enter function test_3" style="filled" fillcolor=red]; 69 [label="Enter block"];
subgraph cluster_20 { 70 [label="Access variable R|<local>/x|"];
color=blue 71 [label="Type operator: (R|<local>/x| as? R|A|)"];
69 [label="Enter block"]; 72 [label="Exit lhs of ?:"];
70 [label="Access variable R|<local>/x|"]; 73 [label="Enter rhs of ?:"];
71 [label="Type operator: (R|<local>/x| as? R|A|)"]; 74 [label="Jump: ^test_3 Unit"];
72 [label="Exit lhs of ?:"]; 75 [label="Stub" style="filled" fillcolor=gray];
73 [label="Enter rhs of ?:"]; 76 [label="Lhs of ?: is not null"];
74 [label="Jump: ^test_3 Unit"]; 77 [label="Exit ?:"];
75 [label="Stub" style="filled" fillcolor=gray]; 78 [label="Variable declaration: lval a: R|A|"];
76 [label="Lhs of ?: is not null"]; 79 [label="Access variable R|<local>/a|"];
77 [label="Exit ?:"]; 80 [label="Function call: R|<local>/a|.R|/A.foo|()"];
78 [label="Variable declaration: lval a: R|A|"]; 81 [label="Access variable R|<local>/x|"];
79 [label="Access variable R|<local>/a|"]; 82 [label="Function call: R|<local>/x|.R|/A.foo|()"];
80 [label="Function call: R|<local>/a|.R|/A.foo|()"]; 83 [label="Exit block"];
81 [label="Access variable R|<local>/x|"];
82 [label="Function call: R|<local>/x|.R|/A.foo|()"];
83 [label="Exit block"];
}
84 [label="Exit function test_3" style="filled" fillcolor=red];
} }
68 -> {69}; 84 [label="Exit function test_3" style="filled" fillcolor=red];
69 -> {70}; }
70 -> {71}; 68 -> {69};
71 -> {72}; 69 -> {70};
72 -> {76 73}; 70 -> {71};
73 -> {74}; 71 -> {72};
74 -> {84}; 72 -> {76 73};
74 -> {75} [style=dotted]; 73 -> {74};
75 -> {77} [style=dotted]; 74 -> {84};
76 -> {77}; 74 -> {75} [style=dotted];
77 -> {78}; 75 -> {77} [style=dotted];
78 -> {79}; 76 -> {77};
79 -> {80}; 77 -> {78};
80 -> {81}; 78 -> {79};
81 -> {82}; 79 -> {80};
82 -> {83}; 80 -> {81};
83 -> {84}; 81 -> {82};
82 -> {83};
83 -> {84};
subgraph cluster_21 { subgraph cluster_20 {
color=red color=red
85 [label="Enter class B" style="filled" fillcolor=red]; 85 [label="Enter class B" style="filled" fillcolor=red];
86 [label="Exit class B" style="filled" fillcolor=red]; 86 [label="Exit class B" style="filled" fillcolor=red];
} }
85 -> {86} [color=green]; 85 -> {86} [color=green];
subgraph cluster_22 { subgraph cluster_21 {
color=red color=red
87 [label="Enter function foo" style="filled" fillcolor=red]; 87 [label="Enter function foo" style="filled" fillcolor=red];
88 [label="Exit function foo" style="filled" fillcolor=red]; 88 [label="Exit function foo" style="filled" fillcolor=red];
} }
87 -> {88}; 87 -> {88};
subgraph cluster_23 { subgraph cluster_22 {
color=red color=red
89 [label="Enter function getter" style="filled" fillcolor=red]; 89 [label="Enter function getter" style="filled" fillcolor=red];
90 [label="Exit function getter" style="filled" fillcolor=red]; 90 [label="Exit function getter" style="filled" fillcolor=red];
} }
89 -> {90}; 89 -> {90};
subgraph cluster_24 { subgraph cluster_23 {
color=red color=red
91 [label="Enter function bar" style="filled" fillcolor=red]; 91 [label="Enter function bar" style="filled" fillcolor=red];
92 [label="Exit function bar" style="filled" fillcolor=red]; 92 [label="Exit function bar" style="filled" fillcolor=red];
} }
91 -> {92}; 91 -> {92};
subgraph cluster_24 {
color=red
93 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_25 { subgraph cluster_25 {
color=red color=blue
93 [label="Enter function test_1" style="filled" fillcolor=red]; 94 [label="Enter block"];
95 [label="Access variable R|<local>/a|"];
96 [label="Enter safe call"];
97 [label="Access variable R|/B.x|"];
98 [label="Exit safe call"];
99 [label="Variable declaration: lval x: R|kotlin/Int?|"];
subgraph cluster_26 { subgraph cluster_26 {
color=blue color=blue
94 [label="Enter block"]; 100 [label="Enter when"];
95 [label="Access variable R|<local>/a|"];
96 [label="Enter safe call"];
97 [label="Access variable R|/B.x|"];
98 [label="Exit safe call"];
99 [label="Variable declaration: lval x: R|kotlin/Int?|"];
subgraph cluster_27 { subgraph cluster_27 {
color=blue color=blue
100 [label="Enter when"]; 101 [label="Enter when branch condition "];
subgraph cluster_28 { 102 [label="Access variable R|<local>/x|"];
color=blue 103 [label="Const: Null(null)"];
101 [label="Enter when branch condition "]; 104 [label="Equality operator !="];
102 [label="Access variable R|<local>/x|"]; 105 [label="Exit when branch condition"];
103 [label="Const: Null(null)"];
104 [label="Equality operator !="];
105 [label="Exit when branch condition"];
}
106 [label="Synthetic else branch"];
107 [label="Enter when branch result"];
subgraph cluster_29 {
color=blue
108 [label="Enter block"];
109 [label="Access variable R|<local>/a|"];
110 [label="Function call: R|<local>/a|.R|/B.bar|()"];
111 [label="Exit block"];
}
112 [label="Exit when branch result"];
113 [label="Exit when"];
} }
114 [label="Exit block"]; 106 [label="Synthetic else branch"];
107 [label="Enter when branch result"];
subgraph cluster_28 {
color=blue
108 [label="Enter block"];
109 [label="Access variable R|<local>/a|"];
110 [label="Function call: R|<local>/a|.R|/B.bar|()"];
111 [label="Exit block"];
}
112 [label="Exit when branch result"];
113 [label="Exit when"];
} }
115 [label="Exit function test_1" style="filled" fillcolor=red]; 114 [label="Exit block"];
} }
93 -> {94}; 115 [label="Exit function test_1" style="filled" fillcolor=red];
94 -> {95}; }
95 -> {96 98}; 93 -> {94};
96 -> {97}; 94 -> {95};
97 -> {98}; 95 -> {96 98};
98 -> {99}; 96 -> {97};
99 -> {100}; 97 -> {98};
100 -> {101}; 98 -> {99};
101 -> {102}; 99 -> {100};
102 -> {103}; 100 -> {101};
103 -> {104}; 101 -> {102};
104 -> {105}; 102 -> {103};
105 -> {107 106}; 103 -> {104};
106 -> {113}; 104 -> {105};
107 -> {108}; 105 -> {107 106};
108 -> {109}; 106 -> {113};
109 -> {110}; 107 -> {108};
110 -> {111}; 108 -> {109};
111 -> {112}; 109 -> {110};
112 -> {113}; 110 -> {111};
113 -> {114}; 111 -> {112};
114 -> {115}; 112 -> {113};
113 -> {114};
114 -> {115};
subgraph cluster_29 {
color=red
116 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_30 { subgraph cluster_30 {
color=red color=blue
116 [label="Enter function test_2" style="filled" fillcolor=red]; 117 [label="Enter block"];
118 [label="Access variable R|<local>/a|"];
119 [label="Enter safe call"];
120 [label="Function call: $subj$.R|/B.foo|()"];
121 [label="Exit safe call"];
122 [label="Variable declaration: lval x: R|kotlin/Int?|"];
subgraph cluster_31 { subgraph cluster_31 {
color=blue color=blue
117 [label="Enter block"]; 123 [label="Enter when"];
118 [label="Access variable R|<local>/a|"];
119 [label="Enter safe call"];
120 [label="Function call: $subj$.R|/B.foo|()"];
121 [label="Exit safe call"];
122 [label="Variable declaration: lval x: R|kotlin/Int?|"];
subgraph cluster_32 { subgraph cluster_32 {
color=blue color=blue
123 [label="Enter when"]; 124 [label="Enter when branch condition "];
subgraph cluster_33 { 125 [label="Access variable R|<local>/x|"];
color=blue 126 [label="Const: Null(null)"];
124 [label="Enter when branch condition "]; 127 [label="Equality operator !="];
125 [label="Access variable R|<local>/x|"]; 128 [label="Exit when branch condition"];
126 [label="Const: Null(null)"];
127 [label="Equality operator !="];
128 [label="Exit when branch condition"];
}
129 [label="Synthetic else branch"];
130 [label="Enter when branch result"];
subgraph cluster_34 {
color=blue
131 [label="Enter block"];
132 [label="Access variable R|<local>/a|"];
133 [label="Function call: R|<local>/a|.R|/B.bar|()"];
134 [label="Exit block"];
}
135 [label="Exit when branch result"];
136 [label="Exit when"];
} }
137 [label="Exit block"]; 129 [label="Synthetic else branch"];
130 [label="Enter when branch result"];
subgraph cluster_33 {
color=blue
131 [label="Enter block"];
132 [label="Access variable R|<local>/a|"];
133 [label="Function call: R|<local>/a|.R|/B.bar|()"];
134 [label="Exit block"];
}
135 [label="Exit when branch result"];
136 [label="Exit when"];
} }
138 [label="Exit function test_2" style="filled" fillcolor=red]; 137 [label="Exit block"];
} }
116 -> {117}; 138 [label="Exit function test_2" style="filled" fillcolor=red];
117 -> {118};
118 -> {119 121};
119 -> {120};
120 -> {121};
121 -> {122};
122 -> {123};
123 -> {124};
124 -> {125};
125 -> {126};
126 -> {127};
127 -> {128};
128 -> {130 129};
129 -> {136};
130 -> {131};
131 -> {132};
132 -> {133};
133 -> {134};
134 -> {135};
135 -> {136};
136 -> {137};
137 -> {138};
subgraph cluster_35 {
color=red
139 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_36 {
color=blue
140 [label="Enter block"];
141 [label="Access variable R|<local>/x|"];
142 [label="Type operator: (R|<local>/x| as? R|B|)"];
143 [label="Exit lhs of ?:"];
144 [label="Enter rhs of ?:"];
145 [label="Jump: ^test_3 Unit"];
146 [label="Stub" style="filled" fillcolor=gray];
147 [label="Lhs of ?: is not null"];
148 [label="Exit ?:"];
149 [label="Variable declaration: lval a: R|B|"];
150 [label="Access variable R|<local>/a|"];
151 [label="Function call: R|<local>/a|.R|/B.foo|()"];
152 [label="Access variable R|<local>/x|"];
153 [label="Function call: R|<local>/x|.R|/B.foo|()"];
154 [label="Exit block"];
}
155 [label="Exit function test_3" style="filled" fillcolor=red];
}
139 -> {140};
140 -> {141};
141 -> {142};
142 -> {143};
143 -> {147 144};
144 -> {145};
145 -> {155};
145 -> {146} [style=dotted];
146 -> {148} [style=dotted];
147 -> {148};
148 -> {149};
149 -> {150};
150 -> {151};
151 -> {152};
152 -> {153};
153 -> {154};
154 -> {155};
} }
116 -> {117};
117 -> {118};
118 -> {119 121};
119 -> {120};
120 -> {121};
121 -> {122};
122 -> {123};
123 -> {124};
124 -> {125};
125 -> {126};
126 -> {127};
127 -> {128};
128 -> {130 129};
129 -> {136};
130 -> {131};
131 -> {132};
132 -> {133};
133 -> {134};
134 -> {135};
135 -> {136};
136 -> {137};
137 -> {138};
subgraph cluster_34 {
color=red
139 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_35 {
color=blue
140 [label="Enter block"];
141 [label="Access variable R|<local>/x|"];
142 [label="Type operator: (R|<local>/x| as? R|B|)"];
143 [label="Exit lhs of ?:"];
144 [label="Enter rhs of ?:"];
145 [label="Jump: ^test_3 Unit"];
146 [label="Stub" style="filled" fillcolor=gray];
147 [label="Lhs of ?: is not null"];
148 [label="Exit ?:"];
149 [label="Variable declaration: lval a: R|B|"];
150 [label="Access variable R|<local>/a|"];
151 [label="Function call: R|<local>/a|.R|/B.foo|()"];
152 [label="Access variable R|<local>/x|"];
153 [label="Function call: R|<local>/x|.R|/B.foo|()"];
154 [label="Exit block"];
}
155 [label="Exit function test_3" style="filled" fillcolor=red];
}
139 -> {140};
140 -> {141};
141 -> {142};
142 -> {143};
143 -> {147 144};
144 -> {145};
145 -> {155};
145 -> {146} [style=dotted];
146 -> {148} [style=dotted];
147 -> {148};
148 -> {149};
149 -> {150};
150 -> {151};
151 -> {152};
152 -> {153};
153 -> {154};
154 -> {155};
}
@@ -50,53 +50,51 @@ digraph smartCastInInit_kt {
subgraph cluster_5 { subgraph cluster_5 {
color=red color=red
14 [label="Enter class Main" style="filled" fillcolor=red]; 14 [label="Enter class Main" style="filled" fillcolor=red];
subgraph cluster_6 { 15 [label="Part of class initialization"];
color=blue 16 [label="Exit class Main" style="filled" fillcolor=red];
15 [label="Part of class initialization"];
16 [label="Exit class Main" style="filled" fillcolor=red];
}
14 -> {15} [color=green];
15 -> {16} [style=dotted];
15 -> {22} [color=green];
15 -> {22} [style=dashed];
subgraph cluster_7 {
color=red
17 [label="Enter function <init>" style="filled" fillcolor=red];
18 [label="Delegated constructor call: super<R|kotlin/Any|>()"];
19 [label="Exit function <init>" style="filled" fillcolor=red];
}
17 -> {18};
18 -> {19};
subgraph cluster_8 {
color=red
20 [label="Enter function getter" style="filled" fillcolor=red];
21 [label="Exit function getter" style="filled" fillcolor=red];
}
20 -> {21};
subgraph cluster_9 {
color=red
22 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
23 [label="Enter block"];
24 [label="Function call: R|/s|()"];
25 [label="Assignment: R|/Main.x|"];
26 [label="Access variable R|/Main.x|"];
27 [label="Function call: this@R|/Main|.R|/Main.x|.R|/S.foo|()"];
28 [label="Exit block"];
}
29 [label="Exit init block" style="filled" fillcolor=red];
}
22 -> {23};
23 -> {24};
24 -> {25};
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {29};
29 -> {16} [color=green];
} }
14 -> {15} [color=green];
15 -> {16} [style=dotted];
15 -> {22} [color=green];
15 -> {22} [style=dashed];
subgraph cluster_6 {
color=red
17 [label="Enter function <init>" style="filled" fillcolor=red];
18 [label="Delegated constructor call: super<R|kotlin/Any|>()"];
19 [label="Exit function <init>" style="filled" fillcolor=red];
}
17 -> {18};
18 -> {19};
subgraph cluster_7 {
color=red
20 [label="Enter function getter" style="filled" fillcolor=red];
21 [label="Exit function getter" style="filled" fillcolor=red];
}
20 -> {21};
subgraph cluster_8 {
color=red
22 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
23 [label="Enter block"];
24 [label="Function call: R|/s|()"];
25 [label="Assignment: R|/Main.x|"];
26 [label="Access variable R|/Main.x|"];
27 [label="Function call: this@R|/Main|.R|/Main.x|.R|/S.foo|()"];
28 [label="Exit block"];
}
29 [label="Exit init block" style="filled" fillcolor=red];
}
22 -> {23};
23 -> {24};
24 -> {25};
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {29};
29 -> {16} [color=green];
}
@@ -117,206 +117,202 @@ digraph smartcastToNothing_kt {
subgraph cluster_10 { subgraph cluster_10 {
color=red color=red
38 [label="Enter class A" style="filled" fillcolor=red]; 38 [label="Enter class A" style="filled" fillcolor=red];
subgraph cluster_11 { 39 [label="Part of class initialization"];
40 [label="Part of class initialization"];
41 [label="Exit class A" style="filled" fillcolor=red];
}
38 -> {39} [color=green];
39 -> {40} [style=dotted];
39 -> {47} [color=green];
39 -> {47} [style=dashed];
40 -> {41} [style=dotted];
40 -> {52} [color=green];
40 -> {52} [style=dashed];
subgraph cluster_11 {
color=red
42 [label="Enter function <init>" style="filled" fillcolor=red];
43 [label="Delegated constructor call: super<R|kotlin/Any|>()"];
44 [label="Exit function <init>" style="filled" fillcolor=red];
}
42 -> {43};
43 -> {44};
subgraph cluster_12 {
color=red
45 [label="Enter function getter" style="filled" fillcolor=red];
46 [label="Exit function getter" style="filled" fillcolor=red];
}
45 -> {46};
subgraph cluster_13 {
color=red
47 [label="Enter property" style="filled" fillcolor=red];
48 [label="Const: Int(1)"];
49 [label="Exit property" style="filled" fillcolor=red];
}
47 -> {48};
48 -> {49};
49 -> {40} [color=green];
subgraph cluster_14 {
color=red
50 [label="Enter function getter" style="filled" fillcolor=red];
51 [label="Exit function getter" style="filled" fillcolor=red];
}
50 -> {51};
subgraph cluster_15 {
color=red
52 [label="Enter property" style="filled" fillcolor=red];
53 [label="Const: Boolean(true)"];
54 [label="Exit property" style="filled" fillcolor=red];
}
52 -> {53};
53 -> {54};
54 -> {41} [color=green];
subgraph cluster_16 {
color=red
55 [label="Enter function test_0" style="filled" fillcolor=red];
subgraph cluster_17 {
color=blue color=blue
39 [label="Part of class initialization"]; 56 [label="Enter block"];
subgraph cluster_12 { 57 [label="Const: Null(null)"];
color=blue 58 [label="Variable declaration: lvar s: R|A?|"];
40 [label="Part of class initialization"]; 59 [label="Access variable R|<local>/results|"];
41 [label="Exit class A" style="filled" fillcolor=red]; 60 [label="Function call: R|<local>/results|.R|FakeOverride<kotlin/collections/List.iterator: R|kotlin/collections/Iterator<kotlin/Nothing>|>|()"];
} 61 [label="Variable declaration: lval <iterator>: R|kotlin/collections/Iterator<kotlin/Nothing>|"];
38 -> {39} [color=green];
39 -> {40} [style=dotted];
39 -> {47} [color=green];
39 -> {47} [style=dashed];
40 -> {41} [style=dotted];
40 -> {52} [color=green];
40 -> {52} [style=dashed];
subgraph cluster_13 {
color=red
42 [label="Enter function <init>" style="filled" fillcolor=red];
43 [label="Delegated constructor call: super<R|kotlin/Any|>()"];
44 [label="Exit function <init>" style="filled" fillcolor=red];
}
42 -> {43};
43 -> {44};
subgraph cluster_14 {
color=red
45 [label="Enter function getter" style="filled" fillcolor=red];
46 [label="Exit function getter" style="filled" fillcolor=red];
}
45 -> {46};
subgraph cluster_15 {
color=red
47 [label="Enter property" style="filled" fillcolor=red];
48 [label="Const: Int(1)"];
49 [label="Exit property" style="filled" fillcolor=red];
}
47 -> {48};
48 -> {49};
49 -> {40} [color=green];
subgraph cluster_16 {
color=red
50 [label="Enter function getter" style="filled" fillcolor=red];
51 [label="Exit function getter" style="filled" fillcolor=red];
}
50 -> {51};
subgraph cluster_17 {
color=red
52 [label="Enter property" style="filled" fillcolor=red];
53 [label="Const: Boolean(true)"];
54 [label="Exit property" style="filled" fillcolor=red];
}
52 -> {53};
53 -> {54};
54 -> {41} [color=green];
subgraph cluster_18 { subgraph cluster_18 {
color=red color=blue
55 [label="Enter function test_0" style="filled" fillcolor=red]; 62 [label="Enter while loop"];
subgraph cluster_19 { subgraph cluster_19 {
color=blue color=blue
56 [label="Enter block"]; 63 [label="Enter loop condition"];
57 [label="Const: Null(null)"]; 64 [label="Access variable R|<local>/<iterator>|"];
58 [label="Variable declaration: lvar s: R|A?|"]; 65 [label="Function call: R|<local>/<iterator>|.R|kotlin/collections/Iterator.hasNext|()"];
59 [label="Access variable R|<local>/results|"]; 66 [label="Exit loop condition"];
60 [label="Function call: R|<local>/results|.R|FakeOverride<kotlin/collections/List.iterator: R|kotlin/collections/Iterator<kotlin/Nothing>|>|()"]; }
61 [label="Variable declaration: lval <iterator>: R|kotlin/collections/Iterator<kotlin/Nothing>|"]; subgraph cluster_20 {
subgraph cluster_20 { color=blue
67 [label="Enter loop block"];
subgraph cluster_21 {
color=blue color=blue
62 [label="Enter while loop"]; 68 [label="Enter block"];
subgraph cluster_21 { 69 [label="Access variable R|<local>/<iterator>|"];
color=blue 70 [label="Function call: R|<local>/<iterator>|.R|FakeOverride<kotlin/collections/Iterator.next: R|kotlin/Nothing|>|()"];
63 [label="Enter loop condition"]; 71 [label="Stub" style="filled" fillcolor=gray];
64 [label="Access variable R|<local>/<iterator>|"]; 72 [label="Variable declaration: lval result: R|kotlin/Nothing|" style="filled" fillcolor=gray];
65 [label="Function call: R|<local>/<iterator>|.R|kotlin/collections/Iterator.hasNext|()"]; 73 [label="Access variable R|<local>/result|" style="filled" fillcolor=gray];
66 [label="Exit loop condition"]; 74 [label="Stub" style="filled" fillcolor=gray];
} 75 [label="Assignment: R|<local>/s|" style="filled" fillcolor=gray];
subgraph cluster_22 { subgraph cluster_22 {
color=blue color=blue
67 [label="Enter loop block"]; 76 [label="Enter when" style="filled" fillcolor=gray];
subgraph cluster_23 { subgraph cluster_23 {
color=blue color=blue
68 [label="Enter block"]; 77 [label="Enter when branch condition " style="filled" fillcolor=gray];
69 [label="Access variable R|<local>/<iterator>|"]; 78 [label="Access variable R|<local>/result|" style="filled" fillcolor=gray];
70 [label="Function call: R|<local>/<iterator>|.R|FakeOverride<kotlin/collections/Iterator.next: R|kotlin/Nothing|>|()"]; 79 [label="Stub" style="filled" fillcolor=gray];
71 [label="Stub" style="filled" fillcolor=gray]; 80 [label="Access variable <Unresolved name: b>#" style="filled" fillcolor=gray];
72 [label="Variable declaration: lval result: R|kotlin/Nothing|" style="filled" fillcolor=gray]; 81 [label="Exit when branch condition" style="filled" fillcolor=gray];
73 [label="Access variable R|<local>/result|" style="filled" fillcolor=gray];
74 [label="Stub" style="filled" fillcolor=gray];
75 [label="Assignment: R|<local>/s|" style="filled" fillcolor=gray];
subgraph cluster_24 {
color=blue
76 [label="Enter when" style="filled" fillcolor=gray];
subgraph cluster_25 {
color=blue
77 [label="Enter when branch condition " style="filled" fillcolor=gray];
78 [label="Access variable R|<local>/result|" style="filled" fillcolor=gray];
79 [label="Stub" style="filled" fillcolor=gray];
80 [label="Access variable <Unresolved name: b>#" style="filled" fillcolor=gray];
81 [label="Exit when branch condition" style="filled" fillcolor=gray];
}
82 [label="Synthetic else branch" style="filled" fillcolor=gray];
83 [label="Enter when branch result" style="filled" fillcolor=gray];
subgraph cluster_26 {
color=blue
84 [label="Enter block" style="filled" fillcolor=gray];
85 [label="Jump: break@@@[R|<local>/<iterator>|.R|kotlin/collections/Iterator.hasNext|()] " style="filled" fillcolor=gray];
86 [label="Stub" style="filled" fillcolor=gray];
87 [label="Exit block" style="filled" fillcolor=gray];
}
88 [label="Exit when branch result" style="filled" fillcolor=gray];
89 [label="Exit when" style="filled" fillcolor=gray];
}
90 [label="Exit block" style="filled" fillcolor=gray];
} }
91 [label="Exit loop block" style="filled" fillcolor=gray]; 82 [label="Synthetic else branch" style="filled" fillcolor=gray];
83 [label="Enter when branch result" style="filled" fillcolor=gray];
subgraph cluster_24 {
color=blue
84 [label="Enter block" style="filled" fillcolor=gray];
85 [label="Jump: break@@@[R|<local>/<iterator>|.R|kotlin/collections/Iterator.hasNext|()] " style="filled" fillcolor=gray];
86 [label="Stub" style="filled" fillcolor=gray];
87 [label="Exit block" style="filled" fillcolor=gray];
}
88 [label="Exit when branch result" style="filled" fillcolor=gray];
89 [label="Exit when" style="filled" fillcolor=gray];
} }
92 [label="Exit whileloop"]; 90 [label="Exit block" style="filled" fillcolor=gray];
} }
93 [label="Access variable R|<local>/s|"]; 91 [label="Exit loop block" style="filled" fillcolor=gray];
94 [label="Enter safe call"];
95 [label="Postponed enter to lambda"];
subgraph cluster_27 {
color=blue
102 [label="Enter function anonymousFunction" style="filled" fillcolor=red];
subgraph cluster_28 {
color=blue
103 [label="Enter block"];
104 [label="Access variable R|<local>/it|"];
105 [label="Access variable R|/A.a|"];
106 [label="Exit block"];
}
107 [label="Exit function anonymousFunction" style="filled" fillcolor=red];
}
96 [label="Call arguments union" style="filled" fillcolor=yellow];
97 [label="Postponed exit from lambda"];
98 [label="Function call: $subj$.R|kotlin/let|<R|A|, R|kotlin/Int|>(...)"];
99 [label="Exit safe call"];
100 [label="Exit block"];
} }
101 [label="Exit function test_0" style="filled" fillcolor=red]; 92 [label="Exit whileloop"];
} }
55 -> {56}; 93 [label="Access variable R|<local>/s|"];
56 -> {57}; 94 [label="Enter safe call"];
57 -> {58}; 95 [label="Postponed enter to lambda"];
58 -> {59}; subgraph cluster_25 {
59 -> {60}; color=blue
60 -> {61}; 102 [label="Enter function anonymousFunction" style="filled" fillcolor=red];
61 -> {62}; subgraph cluster_26 {
62 -> {63}; color=blue
63 -> {64}; 103 [label="Enter block"];
64 -> {65}; 104 [label="Access variable R|<local>/it|"];
65 -> {66}; 105 [label="Access variable R|/A.a|"];
66 -> {92 67}; 106 [label="Exit block"];
67 -> {68}; }
68 -> {69}; 107 [label="Exit function anonymousFunction" style="filled" fillcolor=red];
69 -> {70}; }
70 -> {101}; 96 [label="Call arguments union" style="filled" fillcolor=yellow];
70 -> {71} [style=dotted]; 97 [label="Postponed exit from lambda"];
71 -> {72} [style=dotted]; 98 [label="Function call: $subj$.R|kotlin/let|<R|A|, R|kotlin/Int|>(...)"];
72 -> {73} [style=dotted]; 99 [label="Exit safe call"];
73 -> {101 74} [style=dotted]; 100 [label="Exit block"];
74 -> {75} [style=dotted];
75 -> {76} [style=dotted];
76 -> {77} [style=dotted];
77 -> {78} [style=dotted];
78 -> {101 79} [style=dotted];
79 -> {80} [style=dotted];
80 -> {81} [style=dotted];
81 -> {83 82} [style=dotted];
82 -> {89} [style=dotted];
83 -> {84} [style=dotted];
84 -> {85} [style=dotted];
85 -> {92 86} [style=dotted];
86 -> {87} [style=dotted];
87 -> {88} [style=dotted];
88 -> {89} [style=dotted];
89 -> {90} [style=dotted];
90 -> {91} [style=dotted];
91 -> {63} [color=green style=dotted];
92 -> {93};
93 -> {94 99};
94 -> {95};
95 -> {102};
95 -> {97} [color=red];
95 -> {102} [style=dashed];
96 -> {98} [color=red];
97 -> {98} [color=green];
98 -> {99};
99 -> {100};
100 -> {101};
102 -> {103};
103 -> {104};
104 -> {105};
105 -> {106};
106 -> {107};
107 -> {96} [color=red];
107 -> {97} [color=green];
} }
101 [label="Exit function test_0" style="filled" fillcolor=red];
}
55 -> {56};
56 -> {57};
57 -> {58};
58 -> {59};
59 -> {60};
60 -> {61};
61 -> {62};
62 -> {63};
63 -> {64};
64 -> {65};
65 -> {66};
66 -> {92 67};
67 -> {68};
68 -> {69};
69 -> {70};
70 -> {101};
70 -> {71} [style=dotted];
71 -> {72} [style=dotted];
72 -> {73} [style=dotted];
73 -> {101 74} [style=dotted];
74 -> {75} [style=dotted];
75 -> {76} [style=dotted];
76 -> {77} [style=dotted];
77 -> {78} [style=dotted];
78 -> {101 79} [style=dotted];
79 -> {80} [style=dotted];
80 -> {81} [style=dotted];
81 -> {83 82} [style=dotted];
82 -> {89} [style=dotted];
83 -> {84} [style=dotted];
84 -> {85} [style=dotted];
85 -> {92 86} [style=dotted];
86 -> {87} [style=dotted];
87 -> {88} [style=dotted];
88 -> {89} [style=dotted];
89 -> {90} [style=dotted];
90 -> {91} [style=dotted];
91 -> {63} [color=green style=dotted];
92 -> {93};
93 -> {94 99};
94 -> {95};
95 -> {102};
95 -> {97} [color=red];
95 -> {102} [style=dashed];
96 -> {98} [color=red];
97 -> {98} [color=green];
98 -> {99};
99 -> {100};
100 -> {101};
102 -> {103};
103 -> {104};
104 -> {105};
105 -> {106};
106 -> {107};
107 -> {96} [color=red];
107 -> {97} [color=green];
}
@@ -6,160 +6,158 @@ digraph overridenOpenVal_kt {
subgraph cluster_0 { subgraph cluster_0 {
color=red color=red
0 [label="Enter class A" style="filled" fillcolor=red]; 0 [label="Enter class A" style="filled" fillcolor=red];
subgraph cluster_1 { 1 [label="Part of class initialization"];
color=blue 2 [label="Exit class A" style="filled" fillcolor=red];
1 [label="Part of class initialization"]; }
2 [label="Exit class A" style="filled" fillcolor=red]; 0 -> {1} [color=green];
} 1 -> {2} [style=dotted];
0 -> {1} [color=green]; 1 -> {8} [color=green];
1 -> {2} [style=dotted]; 1 -> {8} [style=dashed];
1 -> {8} [color=green];
1 -> {8} [style=dashed];
subgraph cluster_2 { subgraph cluster_1 {
color=red color=red
3 [label="Enter function <init>" style="filled" fillcolor=red]; 3 [label="Enter function <init>" style="filled" fillcolor=red];
4 [label="Delegated constructor call: super<R|kotlin/Any|>()"]; 4 [label="Delegated constructor call: super<R|kotlin/Any|>()"];
5 [label="Exit function <init>" style="filled" fillcolor=red]; 5 [label="Exit function <init>" style="filled" fillcolor=red];
} }
3 -> {4}; 3 -> {4};
4 -> {5}; 4 -> {5};
subgraph cluster_3 { subgraph cluster_2 {
color=red color=red
6 [label="Enter function getter" style="filled" fillcolor=red]; 6 [label="Enter function getter" style="filled" fillcolor=red];
7 [label="Exit function getter" style="filled" fillcolor=red]; 7 [label="Exit function getter" style="filled" fillcolor=red];
} }
6 -> {7}; 6 -> {7};
subgraph cluster_4 { subgraph cluster_3 {
color=red color=red
8 [label="Enter property" style="filled" fillcolor=red]; 8 [label="Enter property" style="filled" fillcolor=red];
9 [label="Access variable R|<local>/x|"]; 9 [label="Access variable R|<local>/x|"];
10 [label="Exit property" style="filled" fillcolor=red]; 10 [label="Exit property" style="filled" fillcolor=red];
} }
8 -> {9}; 8 -> {9};
9 -> {10}; 9 -> {10};
10 -> {2} [color=green]; 10 -> {2} [color=green];
subgraph cluster_5 { subgraph cluster_4 {
color=red color=red
11 [label="Enter class B" style="filled" fillcolor=red]; 11 [label="Enter class B" style="filled" fillcolor=red];
12 [label="Exit class B" style="filled" fillcolor=red]; 12 [label="Exit class B" style="filled" fillcolor=red];
} }
11 -> {12} [color=green]; 11 -> {12} [color=green];
subgraph cluster_6 { subgraph cluster_5 {
color=red color=red
13 [label="Enter function <init>" style="filled" fillcolor=red]; 13 [label="Enter function <init>" style="filled" fillcolor=red];
14 [label="Access variable R|<local>/x|"]; 14 [label="Access variable R|<local>/x|"];
15 [label="Delegated constructor call: super<R|A|>(...)"]; 15 [label="Delegated constructor call: super<R|A|>(...)"];
16 [label="Exit function <init>" style="filled" fillcolor=red]; 16 [label="Exit function <init>" style="filled" fillcolor=red];
} }
13 -> {14}; 13 -> {14};
14 -> {15}; 14 -> {15};
15 -> {16}; 15 -> {16};
subgraph cluster_6 {
color=red
17 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_7 { subgraph cluster_7 {
color=red color=blue
17 [label="Enter function test_1" style="filled" fillcolor=red]; 18 [label="Enter block"];
subgraph cluster_8 { subgraph cluster_8 {
color=blue color=blue
18 [label="Enter block"]; 19 [label="Enter when"];
subgraph cluster_9 { subgraph cluster_9 {
color=blue color=blue
19 [label="Enter when"]; 20 [label="Enter when branch condition "];
subgraph cluster_10 { 21 [label="Access variable R|/A.x|"];
color=blue 22 [label="Type operator: (this@R|/B|.R|/A.x| is R|kotlin/String|)"];
20 [label="Enter when branch condition "]; 23 [label="Exit when branch condition"];
21 [label="Access variable R|/A.x|"];
22 [label="Type operator: (this@R|/B|.R|/A.x| is R|kotlin/String|)"];
23 [label="Exit when branch condition"];
}
24 [label="Synthetic else branch"];
25 [label="Enter when branch result"];
subgraph cluster_11 {
color=blue
26 [label="Enter block"];
27 [label="Access variable R|/A.x|"];
28 [label="Access variable R|kotlin/String.length|"];
29 [label="Exit block"];
}
30 [label="Exit when branch result"];
31 [label="Exit when"];
} }
32 [label="Exit block"]; 24 [label="Synthetic else branch"];
25 [label="Enter when branch result"];
subgraph cluster_10 {
color=blue
26 [label="Enter block"];
27 [label="Access variable R|/A.x|"];
28 [label="Access variable R|kotlin/String.length|"];
29 [label="Exit block"];
}
30 [label="Exit when branch result"];
31 [label="Exit when"];
} }
33 [label="Exit function test_1" style="filled" fillcolor=red]; 32 [label="Exit block"];
} }
17 -> {18}; 33 [label="Exit function test_1" style="filled" fillcolor=red];
18 -> {19}; }
19 -> {20}; 17 -> {18};
20 -> {21}; 18 -> {19};
21 -> {22}; 19 -> {20};
22 -> {23}; 20 -> {21};
23 -> {25 24}; 21 -> {22};
24 -> {31}; 22 -> {23};
25 -> {26}; 23 -> {25 24};
26 -> {27}; 24 -> {31};
27 -> {28}; 25 -> {26};
28 -> {29}; 26 -> {27};
29 -> {30}; 27 -> {28};
30 -> {31}; 28 -> {29};
31 -> {32}; 29 -> {30};
32 -> {33}; 30 -> {31};
31 -> {32};
32 -> {33};
subgraph cluster_11 {
color=red
34 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_12 { subgraph cluster_12 {
color=red color=blue
34 [label="Enter function test_2" style="filled" fillcolor=red]; 35 [label="Enter block"];
subgraph cluster_13 { subgraph cluster_13 {
color=blue color=blue
35 [label="Enter block"]; 36 [label="Enter when"];
subgraph cluster_14 { subgraph cluster_14 {
color=blue color=blue
36 [label="Enter when"]; 37 [label="Enter when branch condition "];
subgraph cluster_15 { 38 [label="Access variable R|<local>/b|"];
color=blue 39 [label="Access variable R|/A.x|"];
37 [label="Enter when branch condition "]; 40 [label="Type operator: (R|<local>/b|.R|/A.x| is R|kotlin/String|)"];
38 [label="Access variable R|<local>/b|"]; 41 [label="Exit when branch condition"];
39 [label="Access variable R|/A.x|"];
40 [label="Type operator: (R|<local>/b|.R|/A.x| is R|kotlin/String|)"];
41 [label="Exit when branch condition"];
}
42 [label="Synthetic else branch"];
43 [label="Enter when branch result"];
subgraph cluster_16 {
color=blue
44 [label="Enter block"];
45 [label="Access variable R|<local>/b|"];
46 [label="Access variable R|/A.x|"];
47 [label="Access variable R|kotlin/String.length|"];
48 [label="Exit block"];
}
49 [label="Exit when branch result"];
50 [label="Exit when"];
} }
51 [label="Exit block"]; 42 [label="Synthetic else branch"];
43 [label="Enter when branch result"];
subgraph cluster_15 {
color=blue
44 [label="Enter block"];
45 [label="Access variable R|<local>/b|"];
46 [label="Access variable R|/A.x|"];
47 [label="Access variable R|kotlin/String.length|"];
48 [label="Exit block"];
}
49 [label="Exit when branch result"];
50 [label="Exit when"];
} }
52 [label="Exit function test_2" style="filled" fillcolor=red]; 51 [label="Exit block"];
} }
34 -> {35}; 52 [label="Exit function test_2" style="filled" fillcolor=red];
35 -> {36};
36 -> {37};
37 -> {38};
38 -> {39};
39 -> {40};
40 -> {41};
41 -> {43 42};
42 -> {50};
43 -> {44};
44 -> {45};
45 -> {46};
46 -> {47};
47 -> {48};
48 -> {49};
49 -> {50};
50 -> {51};
51 -> {52};
} }
34 -> {35};
35 -> {36};
36 -> {37};
37 -> {38};
38 -> {39};
39 -> {40};
40 -> {41};
41 -> {43 42};
42 -> {50};
43 -> {44};
44 -> {45};
45 -> {46};
46 -> {47};
47 -> {48};
48 -> {49};
49 -> {50};
50 -> {51};
51 -> {52};
}
@@ -21,99 +21,95 @@ digraph inAnonymousObject_kt {
subgraph cluster_2 { subgraph cluster_2 {
color=blue color=blue
9 [label="Enter class <anonymous object>" style="filled" fillcolor=red]; 9 [label="Enter class <anonymous object>" style="filled" fillcolor=red];
subgraph cluster_3 { 10 [label="Part of class initialization"];
11 [label="Part of class initialization"];
12 [label="Exit class <anonymous object>" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
1 -> {13 18 16 21 23 29} [color=red];
2 -> {3};
2 -> {13 29 9} [color=green];
2 -> {13 29 9} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7};
7 -> {8};
9 -> {10} [color=green];
10 -> {11} [style=dotted];
10 -> {18} [color=green];
10 -> {18} [style=dashed];
11 -> {12} [style=dotted];
11 -> {23} [color=green];
11 -> {23} [style=dashed];
subgraph cluster_3 {
color=red
13 [label="Enter function <init>" style="filled" fillcolor=red];
14 [label="Delegated constructor call: super<R|kotlin/Any|>()"];
15 [label="Exit function <init>" style="filled" fillcolor=red];
}
13 -> {14};
14 -> {15};
subgraph cluster_4 {
color=red
16 [label="Enter function getter" style="filled" fillcolor=red];
17 [label="Exit function getter" style="filled" fillcolor=red];
}
16 -> {17};
subgraph cluster_5 {
color=red
18 [label="Enter property" style="filled" fillcolor=red];
19 [label="Access variable R|<local>/a|"];
20 [label="Exit property" style="filled" fillcolor=red];
}
18 -> {19};
19 -> {20};
20 -> {11} [color=green];
subgraph cluster_6 {
color=red
21 [label="Enter function getter" style="filled" fillcolor=red];
22 [label="Exit function getter" style="filled" fillcolor=red];
}
21 -> {22};
subgraph cluster_7 {
color=red
23 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue color=blue
10 [label="Part of class initialization"]; 24 [label="Enter block"];
subgraph cluster_4 { 25 [label="Access variable R|<local>/b|"];
color=blue 26 [label="Assignment: R|/<anonymous>.leaked|"];
11 [label="Part of class initialization"]; 27 [label="Exit block"];
12 [label="Exit class <anonymous object>" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
1 -> {13 18 16 21 23 29} [color=red];
2 -> {3};
2 -> {13 29 9} [color=green];
2 -> {13 29 9} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7};
7 -> {8};
9 -> {10} [color=green];
10 -> {11} [style=dotted];
10 -> {18} [color=green];
10 -> {18} [style=dashed];
11 -> {12} [style=dotted];
11 -> {23} [color=green];
11 -> {23} [style=dashed];
subgraph cluster_5 {
color=red
13 [label="Enter function <init>" style="filled" fillcolor=red];
14 [label="Delegated constructor call: super<R|kotlin/Any|>()"];
15 [label="Exit function <init>" style="filled" fillcolor=red];
}
13 -> {14};
14 -> {15};
subgraph cluster_6 {
color=red
16 [label="Enter function getter" style="filled" fillcolor=red];
17 [label="Exit function getter" style="filled" fillcolor=red];
}
16 -> {17};
subgraph cluster_7 {
color=red
18 [label="Enter property" style="filled" fillcolor=red];
19 [label="Access variable R|<local>/a|"];
20 [label="Exit property" style="filled" fillcolor=red];
}
18 -> {19};
19 -> {20};
20 -> {11} [color=green];
subgraph cluster_8 {
color=red
21 [label="Enter function getter" style="filled" fillcolor=red];
22 [label="Exit function getter" style="filled" fillcolor=red];
}
21 -> {22};
subgraph cluster_9 {
color=red
23 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
24 [label="Enter block"];
25 [label="Access variable R|<local>/b|"];
26 [label="Assignment: R|/<anonymous>.leaked|"];
27 [label="Exit block"];
}
28 [label="Exit init block" style="filled" fillcolor=red];
}
23 -> {24};
24 -> {25};
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {12} [color=green];
subgraph cluster_11 {
color=red
29 [label="Enter function run" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
30 [label="Enter block"];
31 [label="Function call: R|<local>/c|.R|FakeOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()"];
32 [label="Exit block"];
}
33 [label="Exit function run" style="filled" fillcolor=red];
}
29 -> {30};
30 -> {31};
31 -> {32};
32 -> {33};
} }
28 [label="Exit init block" style="filled" fillcolor=red];
}
23 -> {24};
24 -> {25};
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {12} [color=green];
subgraph cluster_9 {
color=red
29 [label="Enter function run" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
30 [label="Enter block"];
31 [label="Function call: R|<local>/c|.R|FakeOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()"];
32 [label="Exit block"];
}
33 [label="Exit function run" style="filled" fillcolor=red];
}
29 -> {30};
30 -> {31};
31 -> {32};
32 -> {33};
}
@@ -20,107 +20,103 @@ digraph inLocalClass_kt {
subgraph cluster_2 { subgraph cluster_2 {
color=blue color=blue
8 [label="Enter class LocalClass" style="filled" fillcolor=red]; 8 [label="Enter class LocalClass" style="filled" fillcolor=red];
subgraph cluster_3 { 9 [label="Part of class initialization"];
10 [label="Part of class initialization"];
11 [label="Exit class LocalClass" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
1 -> {14 12 17 19 25 31} [color=red];
2 -> {3};
2 -> {19 31 8} [color=green];
2 -> {19 31 8} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7};
8 -> {9} [color=green];
9 -> {10} [style=dotted];
9 -> {14} [color=green];
9 -> {14} [style=dashed];
10 -> {11} [style=dotted];
10 -> {25} [color=green];
10 -> {25} [style=dashed];
subgraph cluster_3 {
color=red
12 [label="Enter function getter" style="filled" fillcolor=red];
13 [label="Exit function getter" style="filled" fillcolor=red];
}
12 -> {13};
subgraph cluster_4 {
color=red
14 [label="Enter property" style="filled" fillcolor=red];
15 [label="Access variable R|<local>/a|"];
16 [label="Exit property" style="filled" fillcolor=red];
}
14 -> {15};
15 -> {16};
16 -> {10} [color=green];
subgraph cluster_5 {
color=red
17 [label="Enter function getter" style="filled" fillcolor=red];
18 [label="Exit function getter" style="filled" fillcolor=red];
}
17 -> {18};
subgraph cluster_6 {
color=red
19 [label="Enter function <init>" style="filled" fillcolor=red];
20 [label="Delegated constructor call: super<R|kotlin/Any|>()"];
subgraph cluster_7 {
color=blue color=blue
9 [label="Part of class initialization"]; 21 [label="Enter block"];
subgraph cluster_4 { 22 [label="Function call: R|<local>/b|.R|FakeOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()"];
color=blue 23 [label="Exit block"];
10 [label="Part of class initialization"];
11 [label="Exit class LocalClass" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
1 -> {14 12 17 19 25 31} [color=red];
2 -> {3};
2 -> {19 31 8} [color=green];
2 -> {19 31 8} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7};
8 -> {9} [color=green];
9 -> {10} [style=dotted];
9 -> {14} [color=green];
9 -> {14} [style=dashed];
10 -> {11} [style=dotted];
10 -> {25} [color=green];
10 -> {25} [style=dashed];
subgraph cluster_5 {
color=red
12 [label="Enter function getter" style="filled" fillcolor=red];
13 [label="Exit function getter" style="filled" fillcolor=red];
}
12 -> {13};
subgraph cluster_6 {
color=red
14 [label="Enter property" style="filled" fillcolor=red];
15 [label="Access variable R|<local>/a|"];
16 [label="Exit property" style="filled" fillcolor=red];
}
14 -> {15};
15 -> {16};
16 -> {10} [color=green];
subgraph cluster_7 {
color=red
17 [label="Enter function getter" style="filled" fillcolor=red];
18 [label="Exit function getter" style="filled" fillcolor=red];
}
17 -> {18};
subgraph cluster_8 {
color=red
19 [label="Enter function <init>" style="filled" fillcolor=red];
20 [label="Delegated constructor call: super<R|kotlin/Any|>()"];
subgraph cluster_9 {
color=blue
21 [label="Enter block"];
22 [label="Function call: R|<local>/b|.R|FakeOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()"];
23 [label="Exit block"];
}
24 [label="Exit function <init>" style="filled" fillcolor=red];
}
19 -> {20};
20 -> {21};
21 -> {22};
22 -> {23};
23 -> {24};
subgraph cluster_10 {
color=red
25 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
26 [label="Enter block"];
27 [label="Access variable R|<local>/c|"];
28 [label="Assignment: R|/LocalClass.leaked|"];
29 [label="Exit block"];
}
30 [label="Exit init block" style="filled" fillcolor=red];
}
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {29};
29 -> {30};
30 -> {11} [color=green];
subgraph cluster_12 {
color=red
31 [label="Enter function run" style="filled" fillcolor=red];
subgraph cluster_13 {
color=blue
32 [label="Enter block"];
33 [label="Function call: R|<local>/d|.R|FakeOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()"];
34 [label="Exit block"];
}
35 [label="Exit function run" style="filled" fillcolor=red];
}
31 -> {32};
32 -> {33};
33 -> {34};
34 -> {35};
} }
24 [label="Exit function <init>" style="filled" fillcolor=red];
}
19 -> {20};
20 -> {21};
21 -> {22};
22 -> {23};
23 -> {24};
subgraph cluster_8 {
color=red
25 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
26 [label="Enter block"];
27 [label="Access variable R|<local>/c|"];
28 [label="Assignment: R|/LocalClass.leaked|"];
29 [label="Exit block"];
}
30 [label="Exit init block" style="filled" fillcolor=red];
}
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {29};
29 -> {30};
30 -> {11} [color=green];
subgraph cluster_10 {
color=red
31 [label="Enter function run" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
32 [label="Enter block"];
33 [label="Function call: R|<local>/d|.R|FakeOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()"];
34 [label="Exit block"];
}
35 [label="Exit function run" style="filled" fillcolor=red];
}
31 -> {32};
32 -> {33};
33 -> {34};
34 -> {35};
}
@@ -75,175 +75,173 @@ digraph delegateWithAnonymousObject_kt {
subgraph cluster_8 { subgraph cluster_8 {
color=red color=red
22 [label="Enter class IssuesListUserProfile" style="filled" fillcolor=red]; 22 [label="Enter class IssuesListUserProfile" style="filled" fillcolor=red];
subgraph cluster_9 { 23 [label="Part of class initialization"];
color=blue 24 [label="Exit class IssuesListUserProfile" style="filled" fillcolor=red];
23 [label="Part of class initialization"]; }
24 [label="Exit class IssuesListUserProfile" style="filled" fillcolor=red]; 22 -> {23} [color=green];
} 23 -> {24} [style=dotted];
22 -> {23} [color=green]; 23 -> {71} [color=green];
23 -> {24} [style=dotted]; 23 -> {71} [style=dashed];
23 -> {71} [color=green];
23 -> {71} [style=dashed];
subgraph cluster_10 { subgraph cluster_9 {
color=red color=red
25 [label="Enter function <init>" style="filled" fillcolor=red]; 25 [label="Enter function <init>" style="filled" fillcolor=red];
26 [label="Delegated constructor call: super<R|DelegateProvider<IssuesListUserProfile>|>()"]; 26 [label="Delegated constructor call: super<R|DelegateProvider<IssuesListUserProfile>|>()"];
27 [label="Exit function <init>" style="filled" fillcolor=red]; 27 [label="Exit function <init>" style="filled" fillcolor=red];
} }
25 -> {26}; 25 -> {26};
26 -> {27}; 26 -> {27};
subgraph cluster_11 { subgraph cluster_10 {
color=red color=red
35 [label="Enter function <init>" style="filled" fillcolor=red]; 35 [label="Enter function <init>" style="filled" fillcolor=red];
36 [label="Delegated constructor call: super<R|kotlin/Any|>()"]; 36 [label="Delegated constructor call: super<R|kotlin/Any|>()"];
37 [label="Exit function <init>" style="filled" fillcolor=red]; 37 [label="Exit function <init>" style="filled" fillcolor=red];
} }
35 -> {36}; 35 -> {36};
36 -> {37}; 36 -> {37};
subgraph cluster_11 {
color=red
38 [label="Enter function getValue" style="filled" fillcolor=red];
subgraph cluster_12 { subgraph cluster_12 {
color=red color=blue
38 [label="Enter function getValue" style="filled" fillcolor=red]; 39 [label="Enter block"];
subgraph cluster_13 { 40 [label="Function call: R|/IssueListView.IssueListView|()"];
color=blue 41 [label="Jump: ^getValue R|/IssueListView.IssueListView|()"];
39 [label="Enter block"]; 42 [label="Stub" style="filled" fillcolor=gray];
40 [label="Function call: R|/IssueListView.IssueListView|()"]; 43 [label="Exit block" style="filled" fillcolor=gray];
41 [label="Jump: ^getValue R|/IssueListView.IssueListView|()"];
42 [label="Stub" style="filled" fillcolor=gray];
43 [label="Exit block" style="filled" fillcolor=gray];
}
44 [label="Exit function getValue" style="filled" fillcolor=red];
} }
38 -> {39}; 44 [label="Exit function getValue" style="filled" fillcolor=red];
39 -> {40}; }
40 -> {41}; 38 -> {39};
41 -> {44}; 39 -> {40};
41 -> {42} [style=dotted]; 40 -> {41};
42 -> {43} [style=dotted]; 41 -> {44};
43 -> {44} [style=dotted]; 41 -> {42} [style=dotted];
42 -> {43} [style=dotted];
43 -> {44} [style=dotted];
subgraph cluster_13 {
color=red
45 [label="Enter function setValue" style="filled" fillcolor=red];
subgraph cluster_14 { subgraph cluster_14 {
color=red color=blue
45 [label="Enter function setValue" style="filled" fillcolor=red]; 46 [label="Enter block"];
subgraph cluster_15 { 47 [label="Function call: R|/IssueListView.IssueListView|()"];
color=blue 48 [label="Access variable R|<local>/value|"];
46 [label="Enter block"]; 49 [label="Function call: R|/IssueListView.IssueListView|().R|/IssueListView.updateFrom|(...)"];
47 [label="Function call: R|/IssueListView.IssueListView|()"]; 50 [label="Jump: ^setValue R|/IssueListView.IssueListView|().R|/IssueListView.updateFrom|(R|<local>/value|)"];
48 [label="Access variable R|<local>/value|"]; 51 [label="Stub" style="filled" fillcolor=gray];
49 [label="Function call: R|/IssueListView.IssueListView|().R|/IssueListView.updateFrom|(...)"]; 52 [label="Exit block" style="filled" fillcolor=gray];
50 [label="Jump: ^setValue R|/IssueListView.IssueListView|().R|/IssueListView.updateFrom|(R|<local>/value|)"];
51 [label="Stub" style="filled" fillcolor=gray];
52 [label="Exit block" style="filled" fillcolor=gray];
}
53 [label="Exit function setValue" style="filled" fillcolor=red];
} }
45 -> {46}; 53 [label="Exit function setValue" style="filled" fillcolor=red];
46 -> {47}; }
47 -> {48}; 45 -> {46};
48 -> {49}; 46 -> {47};
49 -> {50}; 47 -> {48};
50 -> {53}; 48 -> {49};
50 -> {51} [style=dotted]; 49 -> {50};
51 -> {52} [style=dotted]; 50 -> {53};
52 -> {53} [style=dotted]; 50 -> {51} [style=dotted];
51 -> {52} [style=dotted];
52 -> {53} [style=dotted];
subgraph cluster_15 {
color=red
54 [label="Enter function getter" style="filled" fillcolor=red];
subgraph cluster_16 { subgraph cluster_16 {
color=red color=blue
54 [label="Enter function getter" style="filled" fillcolor=red]; 55 [label="Enter block"];
subgraph cluster_17 { 56 [label="Access variable D|/IssuesListUserProfile.issueListView|"];
color=blue 57 [label="Access variable this@R|/IssuesListUserProfile|"];
55 [label="Enter block"]; 58 [label="Function call: this@R|/IssuesListUserProfile|.D|/IssuesListUserProfile.issueListView|.R|FakeOverride<kotlin/properties/ReadWriteProperty.getValue: R|IssueListView|>|(...)"];
56 [label="Access variable D|/IssuesListUserProfile.issueListView|"]; 59 [label="Jump: ^ this@R|/IssuesListUserProfile|.D|/IssuesListUserProfile.issueListView|.R|FakeOverride<kotlin/properties/ReadWriteProperty.getValue: R|IssueListView|>|(this@R|/IssuesListUserProfile|, ::R|/IssuesListUserProfile.issueListView|)"];
57 [label="Access variable this@R|/IssuesListUserProfile|"]; 60 [label="Stub" style="filled" fillcolor=gray];
58 [label="Function call: this@R|/IssuesListUserProfile|.D|/IssuesListUserProfile.issueListView|.R|FakeOverride<kotlin/properties/ReadWriteProperty.getValue: R|IssueListView|>|(...)"]; 61 [label="Exit block" style="filled" fillcolor=gray];
59 [label="Jump: ^ this@R|/IssuesListUserProfile|.D|/IssuesListUserProfile.issueListView|.R|FakeOverride<kotlin/properties/ReadWriteProperty.getValue: R|IssueListView|>|(this@R|/IssuesListUserProfile|, ::R|/IssuesListUserProfile.issueListView|)"];
60 [label="Stub" style="filled" fillcolor=gray];
61 [label="Exit block" style="filled" fillcolor=gray];
}
62 [label="Exit function getter" style="filled" fillcolor=red];
} }
54 -> {55}; 62 [label="Exit function getter" style="filled" fillcolor=red];
55 -> {56}; }
56 -> {57}; 54 -> {55};
57 -> {58}; 55 -> {56};
58 -> {59}; 56 -> {57};
59 -> {62}; 57 -> {58};
59 -> {60} [style=dotted]; 58 -> {59};
60 -> {61} [style=dotted]; 59 -> {62};
61 -> {62} [style=dotted]; 59 -> {60} [style=dotted];
60 -> {61} [style=dotted];
61 -> {62} [style=dotted];
subgraph cluster_17 {
color=red
63 [label="Enter function setter" style="filled" fillcolor=red];
subgraph cluster_18 { subgraph cluster_18 {
color=red color=blue
63 [label="Enter function setter" style="filled" fillcolor=red]; 64 [label="Enter block"];
subgraph cluster_19 { 65 [label="Access variable D|/IssuesListUserProfile.issueListView|"];
color=blue 66 [label="Access variable this@R|/IssuesListUserProfile|"];
64 [label="Enter block"]; 67 [label="Access variable R|<local>/issueListView|"];
65 [label="Access variable D|/IssuesListUserProfile.issueListView|"]; 68 [label="Function call: this@R|/IssuesListUserProfile|.D|/IssuesListUserProfile.issueListView|.R|FakeOverride<kotlin/properties/ReadWriteProperty.setValue: R|kotlin/Unit|>|(...)"];
66 [label="Access variable this@R|/IssuesListUserProfile|"]; 69 [label="Exit block"];
67 [label="Access variable R|<local>/issueListView|"];
68 [label="Function call: this@R|/IssuesListUserProfile|.D|/IssuesListUserProfile.issueListView|.R|FakeOverride<kotlin/properties/ReadWriteProperty.setValue: R|kotlin/Unit|>|(...)"];
69 [label="Exit block"];
}
70 [label="Exit function setter" style="filled" fillcolor=red];
} }
63 -> {64}; 70 [label="Exit function setter" style="filled" fillcolor=red];
64 -> {65}; }
65 -> {66}; 63 -> {64};
66 -> {67}; 64 -> {65};
67 -> {68}; 65 -> {66};
68 -> {69}; 66 -> {67};
69 -> {70}; 67 -> {68};
68 -> {69};
69 -> {70};
subgraph cluster_19 {
color=red
71 [label="Enter property" style="filled" fillcolor=red];
72 [label="Postponed enter to lambda"];
73 [label="Postponed exit from lambda"];
74 [label="Function call: this@R|/IssuesListUserProfile|.R|/delegate|<R|IssuesListUserProfile|, R|IssuesListUserProfile|, R|IssueListView|>(...)"];
75 [label="Access variable this@R|/IssuesListUserProfile|"];
76 [label="Function call: this@R|/IssuesListUserProfile|.R|/delegate|<R|IssuesListUserProfile|, R|IssuesListUserProfile|, R|IssueListView|>(...).<Unresolved name: provideDelegate>#(...)"];
77 [label="Postponed enter to lambda"];
subgraph cluster_20 { subgraph cluster_20 {
color=red color=blue
71 [label="Enter property" style="filled" fillcolor=red]; 28 [label="Enter function anonymousFunction" style="filled" fillcolor=red];
72 [label="Postponed enter to lambda"];
73 [label="Postponed exit from lambda"];
74 [label="Function call: this@R|/IssuesListUserProfile|.R|/delegate|<R|IssuesListUserProfile|, R|IssuesListUserProfile|, R|IssueListView|>(...)"];
75 [label="Access variable this@R|/IssuesListUserProfile|"];
76 [label="Function call: this@R|/IssuesListUserProfile|.R|/delegate|<R|IssuesListUserProfile|, R|IssuesListUserProfile|, R|IssueListView|>(...).<Unresolved name: provideDelegate>#(...)"];
77 [label="Postponed enter to lambda"];
subgraph cluster_21 { subgraph cluster_21 {
color=blue color=blue
28 [label="Enter function anonymousFunction" style="filled" fillcolor=red]; 29 [label="Enter block"];
subgraph cluster_22 { 30 [label="Exit anonymous object"];
color=blue 31 [label="Exit block"];
29 [label="Enter block"];
30 [label="Exit anonymous object"];
31 [label="Exit block"];
}
32 [label="Exit function anonymousFunction" style="filled" fillcolor=red];
} }
subgraph cluster_23 { 32 [label="Exit function anonymousFunction" style="filled" fillcolor=red];
color=blue
33 [label="Enter class <anonymous object>" style="filled" fillcolor=red];
34 [label="Exit class <anonymous object>" style="filled" fillcolor=red];
}
78 [label="Postponed exit from lambda"];
79 [label="Function call: this@R|/IssuesListUserProfile|.R|/delegate|<R|IssuesListUserProfile|, R|IssuesListUserProfile|, R|IssueListView|>(...)"];
80 [label="Exit property" style="filled" fillcolor=red];
} }
71 -> {72}; subgraph cluster_22 {
72 -> {73}; color=blue
72 -> {} [style=dashed]; 33 [label="Enter class <anonymous object>" style="filled" fillcolor=red];
73 -> {74}; 34 [label="Exit class <anonymous object>" style="filled" fillcolor=red];
74 -> {75}; }
75 -> {76}; 78 [label="Postponed exit from lambda"];
76 -> {77}; 79 [label="Function call: this@R|/IssuesListUserProfile|.R|/delegate|<R|IssuesListUserProfile|, R|IssuesListUserProfile|, R|IssueListView|>(...)"];
77 -> {78 28}; 80 [label="Exit property" style="filled" fillcolor=red];
77 -> {28} [style=dashed];
78 -> {79};
79 -> {80};
80 -> {24} [color=green];
28 -> {29};
29 -> {30};
29 -> {35 38 45} [color=red];
30 -> {31};
30 -> {35 38 45 33} [color=green];
30 -> {35 38 45 33} [style=dashed];
31 -> {32};
33 -> {34} [color=green];
} }
71 -> {72};
72 -> {73};
72 -> {} [style=dashed];
73 -> {74};
74 -> {75};
75 -> {76};
76 -> {77};
77 -> {78 28};
77 -> {28} [style=dashed];
78 -> {79};
79 -> {80};
80 -> {24} [color=green];
28 -> {29};
29 -> {30};
29 -> {35 38 45} [color=red];
30 -> {31};
30 -> {35 38 45 33} [color=green];
30 -> {35 38 45 33} [style=dashed];
31 -> {32};
33 -> {34} [color=green];
}
@@ -53,118 +53,116 @@ digraph plusAssignWithLambdaInRhs_kt {
subgraph cluster_4 { subgraph cluster_4 {
color=red color=red
16 [label="Enter class A" style="filled" fillcolor=red]; 16 [label="Enter class A" style="filled" fillcolor=red];
subgraph cluster_5 { 17 [label="Part of class initialization"];
color=blue 18 [label="Exit class A" style="filled" fillcolor=red];
17 [label="Part of class initialization"]; }
18 [label="Exit class A" style="filled" fillcolor=red]; 16 -> {17} [color=green];
} 17 -> {18} [style=dotted];
16 -> {17} [color=green]; 17 -> {24} [color=green];
17 -> {18} [style=dotted]; 17 -> {24} [style=dashed];
17 -> {24} [color=green];
17 -> {24} [style=dashed];
subgraph cluster_6 { subgraph cluster_5 {
color=red color=red
19 [label="Enter function <init>" style="filled" fillcolor=red]; 19 [label="Enter function <init>" style="filled" fillcolor=red];
20 [label="Delegated constructor call: super<R|kotlin/Any|>()"]; 20 [label="Delegated constructor call: super<R|kotlin/Any|>()"];
21 [label="Exit function <init>" style="filled" fillcolor=red]; 21 [label="Exit function <init>" style="filled" fillcolor=red];
} }
19 -> {20}; 19 -> {20};
20 -> {21}; 20 -> {21};
subgraph cluster_7 { subgraph cluster_6 {
color=red color=red
22 [label="Enter function getter" style="filled" fillcolor=red]; 22 [label="Enter function getter" style="filled" fillcolor=red];
23 [label="Exit function getter" style="filled" fillcolor=red]; 23 [label="Exit function getter" style="filled" fillcolor=red];
} }
22 -> {23}; 22 -> {23};
subgraph cluster_8 { subgraph cluster_7 {
color=red color=red
24 [label="Enter property" style="filled" fillcolor=red]; 24 [label="Enter property" style="filled" fillcolor=red];
25 [label="Access variable R|<local>/executor|"]; 25 [label="Access variable R|<local>/executor|"];
26 [label="Exit property" style="filled" fillcolor=red]; 26 [label="Exit property" style="filled" fillcolor=red];
} }
24 -> {25}; 24 -> {25};
25 -> {26}; 25 -> {26};
26 -> {18} [color=green]; 26 -> {18} [color=green];
subgraph cluster_8 {
color=red
27 [label="Enter function postpone" style="filled" fillcolor=red];
subgraph cluster_9 { subgraph cluster_9 {
color=red color=blue
27 [label="Enter function postpone" style="filled" fillcolor=red]; 28 [label="Enter block"];
29 [label="Function call: R|kotlin/collections/mutableListOf|<R|() -> kotlin/Unit|>()"];
30 [label="Variable declaration: lval queue: R|kotlin/collections/MutableList<kotlin/Function0<kotlin/Unit>>|"];
31 [label="Postponed enter to lambda"];
subgraph cluster_10 { subgraph cluster_10 {
color=blue color=blue
28 [label="Enter block"]; 38 [label="Enter function anonymousFunction" style="filled" fillcolor=red];
29 [label="Function call: R|kotlin/collections/mutableListOf|<R|() -> kotlin/Unit|>()"];
30 [label="Variable declaration: lval queue: R|kotlin/collections/MutableList<kotlin/Function0<kotlin/Unit>>|"];
31 [label="Postponed enter to lambda"];
subgraph cluster_11 { subgraph cluster_11 {
color=blue color=blue
38 [label="Enter function anonymousFunction" style="filled" fillcolor=red]; 39 [label="Enter block"];
40 [label="Access variable R|<local>/queue|"];
41 [label="Postponed enter to lambda"];
subgraph cluster_12 { subgraph cluster_12 {
color=blue color=blue
39 [label="Enter block"]; 46 [label="Enter function anonymousFunction" style="filled" fillcolor=red];
40 [label="Access variable R|<local>/queue|"];
41 [label="Postponed enter to lambda"];
subgraph cluster_13 { subgraph cluster_13 {
color=blue color=blue
46 [label="Enter function anonymousFunction" style="filled" fillcolor=red]; 47 [label="Enter block"];
subgraph cluster_14 { 48 [label="Function call: R|<local>/computation|.R|FakeOverride<kotlin/Function0.invoke: R|T|>|()"];
color=blue 49 [label="Function call: R|<local>/resolve|.R|FakeOverride<kotlin/Function1.invoke: R|kotlin/Unit|>|(...)"];
47 [label="Enter block"]; 50 [label="Exit block"];
48 [label="Function call: R|<local>/computation|.R|FakeOverride<kotlin/Function0.invoke: R|T|>|()"];
49 [label="Function call: R|<local>/resolve|.R|FakeOverride<kotlin/Function1.invoke: R|kotlin/Unit|>|(...)"];
50 [label="Exit block"];
}
51 [label="Exit function anonymousFunction" style="filled" fillcolor=red];
} }
42 [label="Postponed exit from lambda"]; 51 [label="Exit function anonymousFunction" style="filled" fillcolor=red];
43 [label="Function call: R|<local>/queue|.R|kotlin/collections/plusAssign|<R|() -> kotlin/Unit|>(...)"];
44 [label="Exit block"];
} }
45 [label="Exit function anonymousFunction" style="filled" fillcolor=red]; 42 [label="Postponed exit from lambda"];
43 [label="Function call: R|<local>/queue|.R|kotlin/collections/plusAssign|<R|() -> kotlin/Unit|>(...)"];
44 [label="Exit block"];
} }
32 [label="Postponed exit from lambda"]; 45 [label="Exit function anonymousFunction" style="filled" fillcolor=red];
33 [label="Function call: R|/A.A|<R|T|>(...)"]; }
34 [label="Jump: ^postpone R|/A.A|<R|T|>(<L> = A@fun <anonymous>(resolve: R|(T) -> kotlin/Unit|): R|kotlin/Unit| { 32 [label="Postponed exit from lambda"];
33 [label="Function call: R|/A.A|<R|T|>(...)"];
34 [label="Jump: ^postpone R|/A.A|<R|T|>(<L> = A@fun <anonymous>(resolve: R|(T) -> kotlin/Unit|): R|kotlin/Unit| {
R|<local>/queue|.R|kotlin/collections/plusAssign|<R|() -> kotlin/Unit|>(A@fun <anonymous>(): R|kotlin/Unit| <kind=UNKNOWN> { R|<local>/queue|.R|kotlin/collections/plusAssign|<R|() -> kotlin/Unit|>(A@fun <anonymous>(): R|kotlin/Unit| <kind=UNKNOWN> {
R|<local>/resolve|.R|FakeOverride<kotlin/Function1.invoke: R|kotlin/Unit|>|(R|<local>/computation|.R|FakeOverride<kotlin/Function0.invoke: R|T|>|()) R|<local>/resolve|.R|FakeOverride<kotlin/Function1.invoke: R|kotlin/Unit|>|(R|<local>/computation|.R|FakeOverride<kotlin/Function0.invoke: R|T|>|())
} }
) )
} }
)"]; )"];
35 [label="Stub" style="filled" fillcolor=gray]; 35 [label="Stub" style="filled" fillcolor=gray];
36 [label="Exit block" style="filled" fillcolor=gray]; 36 [label="Exit block" style="filled" fillcolor=gray];
}
37 [label="Exit function postpone" style="filled" fillcolor=red];
} }
27 -> {28}; 37 [label="Exit function postpone" style="filled" fillcolor=red];
28 -> {29};
29 -> {30};
30 -> {31};
31 -> {32 38};
31 -> {38} [style=dashed];
32 -> {33};
33 -> {34};
34 -> {37};
34 -> {35} [style=dotted];
35 -> {36} [style=dotted];
36 -> {37} [style=dotted];
38 -> {39};
39 -> {40};
40 -> {41};
41 -> {46};
41 -> {42} [color=red];
41 -> {46} [style=dashed];
42 -> {43};
43 -> {44};
44 -> {45};
46 -> {51 47};
47 -> {48};
48 -> {49};
49 -> {50};
50 -> {51};
51 -> {42} [color=green];
51 -> {46} [color=green style=dashed];
} }
27 -> {28};
28 -> {29};
29 -> {30};
30 -> {31};
31 -> {32 38};
31 -> {38} [style=dashed];
32 -> {33};
33 -> {34};
34 -> {37};
34 -> {35} [style=dotted];
35 -> {36} [style=dotted];
36 -> {37} [style=dotted];
38 -> {39};
39 -> {40};
40 -> {41};
41 -> {46};
41 -> {42} [color=red];
41 -> {46} [style=dashed];
42 -> {43};
43 -> {44};
44 -> {45};
46 -> {51 47};
47 -> {48};
48 -> {49};
49 -> {50};
50 -> {51};
51 -> {42} [color=green];
51 -> {46} [color=green style=dashed];
}
@@ -232,7 +232,7 @@ class AnonymousObjectExitNode(owner: ControlFlowGraph, override val fir: FirAnon
// ----------------------------------- Initialization ----------------------------------- // ----------------------------------- Initialization -----------------------------------
class PartOfClassInitializationNode(owner: ControlFlowGraph, override val fir: FirControlFlowGraphOwner, level: Int, id: Int) : CFGNodeWithCfgOwner<FirControlFlowGraphOwner>(owner, level, id), EnterNodeMarker { class PartOfClassInitializationNode(owner: ControlFlowGraph, override val fir: FirControlFlowGraphOwner, level: Int, id: Int) : CFGNodeWithCfgOwner<FirControlFlowGraphOwner>(owner, level, id) {
override fun <R, D> accept(visitor: ControlFlowGraphVisitor<R, D>, data: D): R { override fun <R, D> accept(visitor: ControlFlowGraphVisitor<R, D>, data: D): R {
return visitor.visitPartOfClassInitializationNode(this, data) return visitor.visitPartOfClassInitializationNode(this, data)
} }