FIR CFA: attach method graphs to class exit node

Even for non-local classes. This ensures that the CFG edges in this case
will only go to a subgraph, not to an unrelated graph.
This commit is contained in:
pyos
2022-12-09 13:22:17 +01:00
committed by Dmitriy Novozhilov
parent aadea0e26f
commit 74758278d7
47 changed files with 1245 additions and 1181 deletions
@@ -5,20 +5,21 @@ digraph annotatedLocalClass_kt {
subgraph cluster_0 {
color=red
3 [label="Enter class Ann" style="filled" fillcolor=red];
4 [label="Exit class Ann" style="filled" fillcolor=red];
}
subgraph cluster_1 {
color=blue
0 [label="Enter function <init>" style="filled" fillcolor=red];
1 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
2 [label="Exit function <init>" style="filled" fillcolor=red];
}
3 -> {4} [color=green];
4 -> {0} [color=green];
4 -> {0} [style=dashed];
0 -> {1};
1 -> {2};
subgraph cluster_1 {
color=red
3 [label="Enter class Ann" style="filled" fillcolor=red];
4 [label="Exit class Ann" style="filled" fillcolor=red];
}
3 -> {4} [color=green];
subgraph cluster_2 {
color=red
5 [label="Enter function foo" style="filled" fillcolor=red];
@@ -80,11 +81,13 @@ digraph annotatedLocalClass_kt {
18 -> {19};
18 -> {25} [color=red];
19 -> {20};
19 -> {23 25} [color=green];
19 -> {23 25} [style=dashed];
19 -> {23} [color=green];
19 -> {23} [style=dashed];
20 -> {21};
21 -> {22};
23 -> {24} [color=green];
24 -> {25} [color=green];
24 -> {25} [style=dashed];
25 -> {26};
26 -> {27};
@@ -4,18 +4,19 @@ digraph complex_kt {
edge [penwidth=2]
subgraph cluster_0 {
color=red
0 [label="Enter function close" style="filled" fillcolor=red];
1 [label="Exit function close" style="filled" fillcolor=red];
}
0 -> {1};
subgraph cluster_1 {
color=red
2 [label="Enter class AutoCloseable" style="filled" fillcolor=red];
3 [label="Exit class AutoCloseable" style="filled" fillcolor=red];
}
subgraph cluster_1 {
color=blue
0 [label="Enter function close" style="filled" fillcolor=red];
1 [label="Exit function close" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
3 -> {0} [color=green];
3 -> {0} [style=dashed];
0 -> {1};
subgraph cluster_2 {
color=red
@@ -4,22 +4,13 @@ digraph initBlock_kt {
edge [penwidth=2]
subgraph cluster_0 {
color=red
0 [label="Enter function <init>" style="filled" fillcolor=red];
1 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
2 [label="Exit function <init>" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
subgraph cluster_1 {
color=red
9 [label="Enter class Foo" style="filled" fillcolor=red];
10 [label="Part of class initialization"];
subgraph cluster_2 {
subgraph cluster_1 {
color=blue
3 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_3 {
subgraph cluster_2 {
color=blue
4 [label="Enter block"];
5 [label="Const: Int(1)"];
@@ -30,34 +21,35 @@ digraph initBlock_kt {
}
11 [label="Exit class Foo" style="filled" fillcolor=red];
}
subgraph cluster_3 {
color=blue
0 [label="Enter function <init>" style="filled" fillcolor=red];
1 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
2 [label="Exit function <init>" style="filled" fillcolor=red];
}
9 -> {10} [color=green];
10 -> {3} [color=green];
10 -> {11} [style=dotted];
10 -> {3} [style=dashed];
11 -> {0} [color=green];
11 -> {0} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7};
7 -> {8};
8 -> {11} [color=green];
0 -> {1};
1 -> {2};
subgraph cluster_4 {
color=red
12 [label="Enter function <init>" style="filled" fillcolor=red];
13 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
14 [label="Exit function <init>" style="filled" fillcolor=red];
}
12 -> {13};
13 -> {14};
subgraph cluster_5 {
color=red
26 [label="Enter class Bar" style="filled" fillcolor=red];
27 [label="Part of class initialization"];
subgraph cluster_6 {
subgraph cluster_5 {
color=blue
15 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_7 {
subgraph cluster_6 {
color=blue
16 [label="Enter block"];
17 [label="Const: Int(1)"];
@@ -73,10 +65,18 @@ digraph initBlock_kt {
}
28 [label="Exit class Bar" style="filled" fillcolor=red style="filled" fillcolor=gray];
}
subgraph cluster_7 {
color=blue
12 [label="Enter function <init>" style="filled" fillcolor=red style="filled" fillcolor=gray];
13 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
14 [label="Exit function <init>" style="filled" fillcolor=red];
}
26 -> {27} [color=green];
27 -> {15} [color=green];
27 -> {28} [style=dotted];
27 -> {15} [style=dashed];
28 -> {12} [style=dotted];
28 -> {12} [style=dashed];
15 -> {16};
16 -> {17};
17 -> {18};
@@ -88,5 +88,7 @@ digraph initBlock_kt {
23 -> {24} [style=dotted];
24 -> {25} [style=dotted];
25 -> {28} [style=dotted];
12 -> {13};
13 -> {14};
}
@@ -18,32 +18,23 @@ digraph initBlockAndInPlaceLambda_kt {
2 -> {3} [color=green];
subgraph cluster_2 {
color=red
4 [label="Enter function <init>" style="filled" fillcolor=red];
5 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
6 [label="Exit function <init>" style="filled" fillcolor=red];
}
4 -> {5};
5 -> {6};
subgraph cluster_3 {
color=red
26 [label="Enter class C" style="filled" fillcolor=red];
27 [label="Part of class initialization"];
subgraph cluster_4 {
subgraph cluster_3 {
color=blue
7 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_5 {
subgraph cluster_4 {
color=blue
8 [label="Enter block"];
9 [label="Access variable R|<local>/a|"];
10 [label="Access variable R|/A.b|"];
11 [label="Enter safe call"];
12 [label="Postponed enter to lambda"];
subgraph cluster_6 {
subgraph cluster_5 {
color=blue
19 [label="Enter function anonymousFunction" style="filled" fillcolor=red];
subgraph cluster_7 {
subgraph cluster_6 {
color=blue
20 [label="Enter block"];
21 [label="Access variable R|<local>/a|"];
@@ -63,10 +54,18 @@ digraph initBlockAndInPlaceLambda_kt {
}
28 [label="Exit class C" style="filled" fillcolor=red];
}
subgraph cluster_7 {
color=blue
4 [label="Enter function <init>" style="filled" fillcolor=red];
5 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
6 [label="Exit function <init>" style="filled" fillcolor=red];
}
26 -> {27} [color=green];
27 -> {7} [color=green];
27 -> {28} [style=dotted];
27 -> {7} [style=dashed];
28 -> {4} [color=green];
28 -> {4} [style=dashed];
7 -> {8};
8 -> {9};
9 -> {10};
@@ -88,5 +87,7 @@ digraph initBlockAndInPlaceLambda_kt {
23 -> {24};
24 -> {25};
25 -> {13};
4 -> {5};
5 -> {6};
}
@@ -5,15 +5,11 @@ digraph innerClassInAnonymousObject_kt {
subgraph cluster_0 {
color=red
3 [label="Enter function <init>" style="filled" fillcolor=red];
4 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
5 [label="Exit function <init>" style="filled" fillcolor=red];
10 [label="Enter class Nested" style="filled" fillcolor=red];
11 [label="Exit class Nested" style="filled" fillcolor=red];
}
3 -> {4};
4 -> {5};
subgraph cluster_1 {
color=red
color=blue
6 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
@@ -22,17 +18,21 @@ digraph innerClassInAnonymousObject_kt {
}
9 [label="Exit function foo" style="filled" fillcolor=red];
}
subgraph cluster_3 {
color=blue
3 [label="Enter function <init>" style="filled" fillcolor=red];
4 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
5 [label="Exit function <init>" style="filled" fillcolor=red];
}
10 -> {11} [color=green];
11 -> {3 6} [color=green];
11 -> {3 6} [style=dashed];
3 -> {4};
4 -> {5};
6 -> {7};
7 -> {8};
8 -> {9};
subgraph cluster_3 {
color=red
10 [label="Enter class Nested" style="filled" fillcolor=red];
11 [label="Exit class Nested" style="filled" fillcolor=red];
}
10 -> {11} [color=green];
subgraph cluster_4 {
color=red
14 [label="Enter property" style="filled" fillcolor=red];
@@ -58,11 +58,10 @@ digraph innerClassInAnonymousObject_kt {
15 -> {16} [color=red];
15 -> {12} [style=dashed];
16 -> {17};
16 -> {0} [color=green];
16 -> {0} [style=dashed];
17 -> {18};
12 -> {13} [color=green];
13 -> {16} [color=green];
13 -> {0 16} [color=green];
13 -> {0} [style=dashed];
0 -> {1};
1 -> {2};
@@ -33,20 +33,21 @@ digraph lambdaReturningObject_kt {
subgraph cluster_4 {
color=red
11 [label="Enter class IrStarProjectionImpl" style="filled" fillcolor=red];
12 [label="Exit class IrStarProjectionImpl" style="filled" fillcolor=red];
}
subgraph cluster_5 {
color=blue
8 [label="Enter function <init>" style="filled" fillcolor=red];
9 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
10 [label="Exit function <init>" style="filled" fillcolor=red];
}
11 -> {12} [color=green];
12 -> {8} [color=green];
12 -> {8} [style=dashed];
8 -> {9};
9 -> {10};
subgraph cluster_5 {
color=red
11 [label="Enter class IrStarProjectionImpl" style="filled" fillcolor=red];
12 [label="Exit class IrStarProjectionImpl" style="filled" fillcolor=red];
}
11 -> {12} [color=green];
subgraph cluster_6 {
color=red
13 [label="Enter function MyOut" style="filled" fillcolor=red];
@@ -353,19 +353,19 @@ digraph localClassesWithImplicit_kt {
21 -> {22};
21 -> {31 34 71 90} [color=red];
22 -> {23};
22 -> {29 31 34 71 90} [color=green];
22 -> {29} [color=green];
22 -> {99 102 139 158} [color=red];
22 -> {29 31 34 71 90} [style=dashed];
22 -> {29} [style=dashed];
23 -> {97} [color=green];
23 -> {24} [color=red];
23 -> {97} [style=dashed];
24 -> {25};
24 -> {99 102 139 158} [color=green];
24 -> {99 102 139 158} [style=dashed];
25 -> {26};
26 -> {27};
27 -> {28};
29 -> {30} [color=green];
30 -> {31 34 71 90} [color=green];
30 -> {31 34 71 90} [style=dashed];
31 -> {32};
32 -> {33};
34 -> {35};
@@ -436,7 +436,8 @@ digraph localClassesWithImplicit_kt {
94 -> {95} [style=dotted];
95 -> {96} [style=dotted];
97 -> {98} [color=green];
98 -> {24} [color=green];
98 -> {24 99 102 139 158} [color=green];
98 -> {99 102 139 158} [style=dashed];
99 -> {100};
100 -> {101};
102 -> {103};
@@ -5,36 +5,60 @@ digraph postponedLambdaInConstructor_kt {
subgraph cluster_0 {
color=red
3 [label="Enter class A" style="filled" fillcolor=red];
4 [label="Exit class A" style="filled" fillcolor=red];
}
subgraph cluster_1 {
color=blue
0 [label="Enter function <init>" style="filled" fillcolor=red];
1 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
2 [label="Exit function <init>" style="filled" fillcolor=red];
}
3 -> {4} [color=green];
4 -> {0} [color=green];
4 -> {0} [style=dashed];
0 -> {1};
1 -> {2};
subgraph cluster_1 {
color=red
3 [label="Enter class A" style="filled" fillcolor=red];
4 [label="Exit class A" style="filled" fillcolor=red];
}
3 -> {4} [color=green];
subgraph cluster_2 {
color=red
30 [label="Enter class B" style="filled" fillcolor=red];
31 [label="Part of class initialization"];
subgraph cluster_3 {
color=blue
22 [label="Enter property" style="filled" fillcolor=red];
23 [label="Access variable R|<local>/s|"];
24 [label="Exit property" style="filled" fillcolor=red];
}
32 [label="Exit class B" style="filled" fillcolor=red];
}
subgraph cluster_4 {
color=blue
25 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
26 [label="Enter block"];
27 [label="Function call: this@R|/B|.R|/B.foo|()" style="filled" fillcolor=yellow];
28 [label="Exit block"];
}
29 [label="Exit function foo" style="filled" fillcolor=red];
}
subgraph cluster_6 {
color=blue
5 [label="Enter function <init>" style="filled" fillcolor=red];
6 [label="Access variable R|<local>/s|"];
7 [label="Postponed enter to lambda"];
subgraph cluster_3 {
subgraph cluster_7 {
color=blue
12 [label="Enter function anonymousFunction" style="filled" fillcolor=red];
subgraph cluster_4 {
subgraph cluster_8 {
color=blue
13 [label="Enter block"];
14 [label="Exit anonymous function expression"];
subgraph cluster_5 {
subgraph cluster_9 {
color=blue
17 [label="Enter function anonymousFunction" style="filled" fillcolor=red];
subgraph cluster_6 {
subgraph cluster_10 {
color=blue
18 [label="Enter block"];
19 [label="Access variable R|<local>/it|"];
@@ -51,6 +75,15 @@ digraph postponedLambdaInConstructor_kt {
10 [label="Delegated constructor call: super<R|A|>(...)" style="filled" fillcolor=yellow];
11 [label="Exit function <init>" style="filled" fillcolor=red];
}
30 -> {31} [color=green];
31 -> {22} [color=green];
31 -> {32} [style=dotted];
31 -> {22} [style=dashed];
32 -> {5 25} [color=green];
32 -> {5 25} [style=dashed];
22 -> {23};
23 -> {24};
24 -> {32} [color=green];
5 -> {6};
6 -> {7};
7 -> {9 12};
@@ -70,41 +103,9 @@ digraph postponedLambdaInConstructor_kt {
18 -> {19};
19 -> {20};
20 -> {21};
subgraph cluster_7 {
color=red
25 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
26 [label="Enter block"];
27 [label="Function call: this@R|/B|.R|/B.foo|()" style="filled" fillcolor=yellow];
28 [label="Exit block"];
}
29 [label="Exit function foo" style="filled" fillcolor=red];
}
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {29};
subgraph cluster_9 {
color=red
30 [label="Enter class B" style="filled" fillcolor=red];
31 [label="Part of class initialization"];
subgraph cluster_10 {
color=blue
22 [label="Enter property" style="filled" fillcolor=red];
23 [label="Access variable R|<local>/s|"];
24 [label="Exit property" style="filled" fillcolor=red];
}
32 [label="Exit class B" style="filled" fillcolor=red];
}
30 -> {31} [color=green];
31 -> {22} [color=green];
31 -> {32} [style=dotted];
31 -> {22} [style=dashed];
22 -> {23};
23 -> {24};
24 -> {32} [color=green];
}
@@ -5,20 +5,21 @@ digraph postponedLambdaInReturn_kt {
subgraph cluster_0 {
color=red
3 [label="Enter class Lateinit" style="filled" fillcolor=red];
4 [label="Exit class Lateinit" style="filled" fillcolor=red];
}
subgraph cluster_1 {
color=blue
0 [label="Enter function <init>" style="filled" fillcolor=red];
1 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
2 [label="Exit function <init>" style="filled" fillcolor=red];
}
3 -> {4} [color=green];
4 -> {0} [color=green];
4 -> {0} [style=dashed];
0 -> {1};
1 -> {2};
subgraph cluster_1 {
color=red
3 [label="Enter class Lateinit" style="filled" fillcolor=red];
4 [label="Exit class Lateinit" style="filled" fillcolor=red];
}
3 -> {4} [color=green];
subgraph cluster_2 {
color=red
5 [label="Enter function build" style="filled" fillcolor=red];
@@ -136,7 +136,7 @@ digraph propertiesAndInitBlocks_kt {
}
subgraph cluster_15 {
color=blue
72 [label="Enter function <init>" style="filled" fillcolor=red];
72 [label="Enter function <init>" style="filled" fillcolor=red style="filled" fillcolor=gray];
73 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
74 [label="Exit function <init>" style="filled" fillcolor=red];
}
@@ -144,13 +144,15 @@ digraph propertiesAndInitBlocks_kt {
58 -> {59};
58 -> {65 72} [color=red];
59 -> {60};
59 -> {62 72} [color=green];
59 -> {62 72} [style=dashed];
59 -> {62} [color=green];
59 -> {62} [style=dashed];
60 -> {61};
62 -> {63} [color=green];
63 -> {65} [color=green];
63 -> {64} [style=dotted];
63 -> {65} [style=dashed];
64 -> {72} [style=dotted];
64 -> {72} [style=dashed];
65 -> {66};
66 -> {67};
67 -> {68};
@@ -201,7 +203,7 @@ digraph propertiesAndInitBlocks_kt {
}
subgraph cluster_22 {
color=blue
43 [label="Enter function <init>" style="filled" fillcolor=red];
43 [label="Enter function <init>" style="filled" fillcolor=red style="filled" fillcolor=gray];
44 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
45 [label="Exit function <init>" style="filled" fillcolor=red];
}
@@ -219,8 +221,8 @@ digraph propertiesAndInitBlocks_kt {
25 -> {26};
25 -> {35 43 46} [color=red];
26 -> {27};
26 -> {32 43} [color=green];
26 -> {32 43} [style=dashed];
26 -> {32} [color=green];
26 -> {32} [style=dashed];
27 -> {28};
28 -> {29} [style=dotted];
29 -> {30} [style=dotted];
@@ -230,6 +232,8 @@ digraph propertiesAndInitBlocks_kt {
33 -> {35} [color=green];
33 -> {34} [style=dotted];
33 -> {35} [style=dashed];
34 -> {43} [style=dotted];
34 -> {43} [style=dashed];
35 -> {36};
36 -> {37};
37 -> {38};
@@ -12,35 +12,37 @@ digraph returnValuesFromLambda_kt {
subgraph cluster_1 {
color=red
5 [label="Enter class B" style="filled" fillcolor=red];
6 [label="Exit class B" style="filled" fillcolor=red];
}
subgraph cluster_2 {
color=blue
2 [label="Enter function <init>" style="filled" fillcolor=red];
3 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
4 [label="Exit function <init>" style="filled" fillcolor=red];
}
5 -> {6} [color=green];
6 -> {2} [color=green];
6 -> {2} [style=dashed];
2 -> {3};
3 -> {4};
subgraph cluster_2 {
color=red
5 [label="Enter class B" style="filled" fillcolor=red];
6 [label="Exit class B" style="filled" fillcolor=red];
}
5 -> {6} [color=green];
subgraph cluster_3 {
color=red
7 [label="Enter function <init>" style="filled" fillcolor=red];
8 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
9 [label="Exit function <init>" style="filled" fillcolor=red];
}
7 -> {8};
8 -> {9};
subgraph cluster_4 {
color=red
10 [label="Enter class C" style="filled" fillcolor=red];
11 [label="Exit class C" style="filled" fillcolor=red];
}
subgraph cluster_4 {
color=blue
7 [label="Enter function <init>" style="filled" fillcolor=red];
8 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
9 [label="Exit function <init>" style="filled" fillcolor=red];
}
10 -> {11} [color=green];
11 -> {7} [color=green];
11 -> {7} [style=dashed];
7 -> {8};
8 -> {9};
subgraph cluster_5 {
color=red
@@ -4,25 +4,25 @@ digraph safeCalls_kt {
edge [penwidth=2]
subgraph cluster_0 {
color=red
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
0 -> {1};
subgraph cluster_1 {
color=red
2 [label="Enter function bar" style="filled" fillcolor=red];
3 [label="Exit function bar" style="filled" fillcolor=red];
}
2 -> {3};
subgraph cluster_2 {
color=red
4 [label="Enter class A" style="filled" fillcolor=red];
5 [label="Exit class A" style="filled" fillcolor=red];
}
subgraph cluster_1 {
color=blue
2 [label="Enter function bar" style="filled" fillcolor=red];
3 [label="Exit function bar" style="filled" fillcolor=red];
}
subgraph cluster_2 {
color=blue
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
4 -> {5} [color=green];
5 -> {0 2} [color=green];
5 -> {0 2} [style=dashed];
0 -> {1};
2 -> {3};
subgraph cluster_3 {
color=red
@@ -5,35 +5,37 @@ digraph exhaustiveWhenAndDNNType_kt {
subgraph cluster_0 {
color=red
3 [label="Enter class SomeEnum" style="filled" fillcolor=red];
4 [label="Exit class SomeEnum" style="filled" fillcolor=red];
}
subgraph cluster_1 {
color=blue
0 [label="Enter function <init>" style="filled" fillcolor=red];
1 [label="Delegated constructor call: super<R|kotlin/Enum<SomeEnum>|>()" style="filled" fillcolor=yellow];
2 [label="Exit function <init>" style="filled" fillcolor=red];
}
3 -> {4} [color=green];
4 -> {0} [color=green];
4 -> {0} [style=dashed];
0 -> {1};
1 -> {2};
subgraph cluster_1 {
color=red
3 [label="Enter class SomeEnum" style="filled" fillcolor=red];
4 [label="Exit class SomeEnum" style="filled" fillcolor=red];
}
3 -> {4} [color=green];
subgraph cluster_2 {
color=red
5 [label="Enter function <init>" style="filled" fillcolor=red];
6 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
7 [label="Exit function <init>" style="filled" fillcolor=red];
}
5 -> {6};
6 -> {7};
subgraph cluster_3 {
color=red
8 [label="Enter class B" style="filled" fillcolor=red];
9 [label="Exit class B" style="filled" fillcolor=red];
}
subgraph cluster_3 {
color=blue
5 [label="Enter function <init>" style="filled" fillcolor=red];
6 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
7 [label="Exit function <init>" style="filled" fillcolor=red];
}
8 -> {9} [color=green];
9 -> {5} [color=green];
9 -> {5} [style=dashed];
5 -> {6};
6 -> {7};
subgraph cluster_4 {
color=red
@@ -4,48 +4,17 @@ digraph secondaryConstructorCfg_kt {
edge [penwidth=2]
subgraph cluster_0 {
color=red
0 [label="Enter function <init>" style="filled" fillcolor=red];
1 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
2 [label="Exit function <init>" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
subgraph cluster_1 {
color=red
10 [label="Enter function <init>" style="filled" fillcolor=red];
11 [label="Access variable R|<local>/p0|"];
12 [label="Delegated constructor call: this<R|B|>(...)" style="filled" fillcolor=yellow];
subgraph cluster_2 {
color=blue
13 [label="Enter block"];
14 [label="Access variable R|<local>/p1|"];
15 [label="Assignment: R|/B.p3|"];
16 [label="Exit block"];
}
17 [label="Exit function <init>" style="filled" fillcolor=red];
}
10 -> {11};
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15};
15 -> {16};
16 -> {17};
subgraph cluster_3 {
color=red
27 [label="Enter class B" style="filled" fillcolor=red];
28 [label="Part of class initialization"];
subgraph cluster_4 {
subgraph cluster_1 {
color=blue
3 [label="Enter property" style="filled" fillcolor=red];
4 [label="Access variable R|<local>/p0|"];
5 [label="Exit property" style="filled" fillcolor=red];
}
29 [label="Part of class initialization"];
subgraph cluster_5 {
subgraph cluster_2 {
color=blue
6 [label="Enter property" style="filled" fillcolor=red];
7 [label="Access variable R|<local>/p0|"];
@@ -53,10 +22,10 @@ digraph secondaryConstructorCfg_kt {
9 [label="Exit property" style="filled" fillcolor=red];
}
30 [label="Part of class initialization"];
subgraph cluster_6 {
subgraph cluster_3 {
color=blue
18 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_7 {
subgraph cluster_4 {
color=blue
19 [label="Enter block"];
20 [label="Access variable R|<local>/p0|"];
@@ -70,6 +39,26 @@ digraph secondaryConstructorCfg_kt {
}
31 [label="Exit class B" style="filled" fillcolor=red];
}
subgraph cluster_5 {
color=blue
10 [label="Enter function <init>" style="filled" fillcolor=red];
11 [label="Access variable R|<local>/p0|"];
12 [label="Delegated constructor call: this<R|B|>(...)" style="filled" fillcolor=yellow];
subgraph cluster_6 {
color=blue
13 [label="Enter block"];
14 [label="Access variable R|<local>/p1|"];
15 [label="Assignment: R|/B.p3|"];
16 [label="Exit block"];
}
17 [label="Exit function <init>" style="filled" fillcolor=red];
}
subgraph cluster_7 {
color=blue
0 [label="Enter function <init>" style="filled" fillcolor=red];
1 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
2 [label="Exit function <init>" style="filled" fillcolor=red];
}
27 -> {28} [color=green];
28 -> {3} [color=green];
28 -> {29} [style=dotted];
@@ -80,6 +69,8 @@ digraph secondaryConstructorCfg_kt {
30 -> {18} [color=green];
30 -> {31} [style=dotted];
30 -> {18} [style=dashed];
31 -> {0 10} [color=green];
31 -> {0 10} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {29} [color=green];
@@ -96,5 +87,14 @@ digraph secondaryConstructorCfg_kt {
24 -> {25};
25 -> {26};
26 -> {31} [color=green];
0 -> {1};
1 -> {2};
10 -> {11};
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15};
15 -> {16};
16 -> {17};
}
@@ -4,18 +4,19 @@ digraph bangbang_kt {
edge [penwidth=2]
subgraph cluster_0 {
color=red
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
0 -> {1};
subgraph cluster_1 {
color=red
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
subgraph cluster_1 {
color=blue
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
3 -> {0} [color=green];
3 -> {0} [style=dashed];
0 -> {1};
subgraph cluster_2 {
color=red
@@ -4,53 +4,55 @@ digraph booleanOperators_kt {
edge [penwidth=2]
subgraph cluster_0 {
color=red
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
0 -> {1};
subgraph cluster_1 {
color=red
2 [label="Enter function bool" style="filled" fillcolor=red];
3 [label="Exit function bool" style="filled" fillcolor=red];
}
2 -> {3};
subgraph cluster_2 {
color=red
4 [label="Enter class A" style="filled" fillcolor=red];
5 [label="Exit class A" style="filled" fillcolor=red];
}
subgraph cluster_1 {
color=blue
2 [label="Enter function bool" style="filled" fillcolor=red];
3 [label="Exit function bool" style="filled" fillcolor=red];
}
subgraph cluster_2 {
color=blue
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
4 -> {5} [color=green];
5 -> {0 2} [color=green];
5 -> {0 2} [style=dashed];
0 -> {1};
2 -> {3};
subgraph cluster_3 {
color=red
6 [label="Enter function bar" style="filled" fillcolor=red];
7 [label="Exit function bar" style="filled" fillcolor=red];
}
6 -> {7};
subgraph cluster_4 {
color=red
8 [label="Enter class B" style="filled" fillcolor=red];
9 [label="Exit class B" style="filled" fillcolor=red];
}
subgraph cluster_4 {
color=blue
6 [label="Enter function bar" style="filled" fillcolor=red];
7 [label="Exit function bar" style="filled" fillcolor=red];
}
8 -> {9} [color=green];
9 -> {6} [color=green];
9 -> {6} [style=dashed];
6 -> {7};
subgraph cluster_5 {
color=red
10 [label="Enter function baz" style="filled" fillcolor=red];
11 [label="Exit function baz" style="filled" fillcolor=red];
}
10 -> {11};
subgraph cluster_6 {
color=red
12 [label="Enter class C" style="filled" fillcolor=red];
13 [label="Exit class C" style="filled" fillcolor=red];
}
subgraph cluster_6 {
color=blue
10 [label="Enter function baz" style="filled" fillcolor=red];
11 [label="Exit function baz" style="filled" fillcolor=red];
}
12 -> {13} [color=green];
13 -> {10} [color=green];
13 -> {10} [style=dashed];
10 -> {11};
subgraph cluster_7 {
color=red
@@ -4,18 +4,19 @@ digraph equalsToBoolean_kt {
edge [penwidth=2]
subgraph cluster_0 {
color=red
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
0 -> {1};
subgraph cluster_1 {
color=red
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
subgraph cluster_1 {
color=blue
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
3 -> {0} [color=green];
3 -> {0} [style=dashed];
0 -> {1};
subgraph cluster_2 {
color=red
@@ -4,18 +4,19 @@ digraph jumpFromRhsOfOperator_kt {
edge [penwidth=2]
subgraph cluster_0 {
color=red
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
0 -> {1};
subgraph cluster_1 {
color=red
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
subgraph cluster_1 {
color=blue
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
3 -> {0} [color=green];
3 -> {0} [style=dashed];
0 -> {1};
subgraph cluster_2 {
color=red
@@ -4,32 +4,34 @@ digraph boundSmartcasts_kt {
edge [penwidth=2]
subgraph cluster_0 {
color=red
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
0 -> {1};
subgraph cluster_1 {
color=red
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
subgraph cluster_1 {
color=blue
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
3 -> {0} [color=green];
3 -> {0} [style=dashed];
0 -> {1};
subgraph cluster_2 {
color=red
4 [label="Enter function bar" style="filled" fillcolor=red];
5 [label="Exit function bar" style="filled" fillcolor=red];
}
4 -> {5};
subgraph cluster_3 {
color=red
6 [label="Enter class B" style="filled" fillcolor=red];
7 [label="Exit class B" style="filled" fillcolor=red];
}
subgraph cluster_3 {
color=blue
4 [label="Enter function bar" style="filled" fillcolor=red];
5 [label="Exit function bar" style="filled" fillcolor=red];
}
6 -> {7} [color=green];
7 -> {4} [color=green];
7 -> {4} [style=dashed];
4 -> {5};
subgraph cluster_4 {
color=red
@@ -335,19 +337,10 @@ digraph boundSmartcasts_kt {
123 -> {124};
subgraph cluster_27 {
color=red
125 [label="Enter function <init>" style="filled" fillcolor=red];
126 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
127 [label="Exit function <init>" style="filled" fillcolor=red];
}
125 -> {126};
126 -> {127};
subgraph cluster_28 {
color=red
131 [label="Enter class D" style="filled" fillcolor=red];
132 [label="Part of class initialization"];
subgraph cluster_29 {
subgraph cluster_28 {
color=blue
128 [label="Enter property" style="filled" fillcolor=red];
129 [label="Access variable R|<local>/any|"];
@@ -355,13 +348,23 @@ digraph boundSmartcasts_kt {
}
133 [label="Exit class D" style="filled" fillcolor=red];
}
subgraph cluster_29 {
color=blue
125 [label="Enter function <init>" style="filled" fillcolor=red];
126 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
127 [label="Exit function <init>" style="filled" fillcolor=red];
}
131 -> {132} [color=green];
132 -> {128} [color=green];
132 -> {133} [style=dotted];
132 -> {128} [style=dashed];
133 -> {125} [color=green];
133 -> {125} [style=dashed];
128 -> {129};
129 -> {130};
130 -> {133} [color=green];
125 -> {126};
126 -> {127};
subgraph cluster_30 {
color=red
@@ -4,19 +4,10 @@ digraph boundSmartcastsInBranches_kt {
edge [penwidth=2]
subgraph cluster_0 {
color=red
0 [label="Enter function <init>" style="filled" fillcolor=red];
1 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
2 [label="Exit function <init>" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
subgraph cluster_1 {
color=red
6 [label="Enter class A" style="filled" fillcolor=red];
7 [label="Part of class initialization"];
subgraph cluster_2 {
subgraph cluster_1 {
color=blue
3 [label="Enter property" style="filled" fillcolor=red];
4 [label="Const: String()"];
@@ -24,13 +15,23 @@ digraph boundSmartcastsInBranches_kt {
}
8 [label="Exit class A" style="filled" fillcolor=red];
}
subgraph cluster_2 {
color=blue
0 [label="Enter function <init>" style="filled" fillcolor=red];
1 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
2 [label="Exit function <init>" style="filled" fillcolor=red];
}
6 -> {7} [color=green];
7 -> {3} [color=green];
7 -> {8} [style=dotted];
7 -> {3} [style=dashed];
8 -> {0} [color=green];
8 -> {0} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {8} [color=green];
0 -> {1};
1 -> {2};
subgraph cluster_3 {
color=red
@@ -5,34 +5,26 @@ digraph functionCallBound_kt {
subgraph cluster_0 {
color=red
3 [label="Enter class Base" style="filled" fillcolor=red];
4 [label="Exit class Base" style="filled" fillcolor=red];
}
subgraph cluster_1 {
color=blue
0 [label="Enter function <init>" style="filled" fillcolor=red];
1 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
2 [label="Exit function <init>" style="filled" fillcolor=red];
}
3 -> {4} [color=green];
4 -> {0} [color=green];
4 -> {0} [style=dashed];
0 -> {1};
1 -> {2};
subgraph cluster_1 {
color=red
3 [label="Enter class Base" style="filled" fillcolor=red];
4 [label="Exit class Base" style="filled" fillcolor=red];
}
3 -> {4} [color=green];
subgraph cluster_2 {
color=red
5 [label="Enter function <init>" style="filled" fillcolor=red];
6 [label="Delegated constructor call: super<R|Base|>()" style="filled" fillcolor=yellow];
7 [label="Exit function <init>" style="filled" fillcolor=red];
}
5 -> {6};
6 -> {7};
subgraph cluster_3 {
color=red
11 [label="Enter class Sub" style="filled" fillcolor=red];
12 [label="Part of class initialization"];
subgraph cluster_4 {
subgraph cluster_3 {
color=blue
8 [label="Enter property" style="filled" fillcolor=red];
9 [label="Access variable R|<local>/data|"];
@@ -40,13 +32,23 @@ digraph functionCallBound_kt {
}
13 [label="Exit class Sub" style="filled" fillcolor=red];
}
subgraph cluster_4 {
color=blue
5 [label="Enter function <init>" style="filled" fillcolor=red];
6 [label="Delegated constructor call: super<R|Base|>()" style="filled" fillcolor=yellow];
7 [label="Exit function <init>" style="filled" fillcolor=red];
}
11 -> {12} [color=green];
12 -> {8} [color=green];
12 -> {13} [style=dotted];
12 -> {8} [style=dashed];
13 -> {5} [color=green];
13 -> {5} [style=dashed];
8 -> {9};
9 -> {10};
10 -> {13} [color=green];
5 -> {6};
6 -> {7};
subgraph cluster_5 {
color=red
@@ -4,18 +4,19 @@ digraph elvis_kt {
edge [penwidth=2]
subgraph cluster_0 {
color=red
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
0 -> {1};
subgraph cluster_1 {
color=red
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
subgraph cluster_1 {
color=blue
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
3 -> {0} [color=green];
3 -> {0} [style=dashed];
0 -> {1};
subgraph cluster_2 {
color=red
@@ -153,46 +153,49 @@ digraph returns_kt {
51 -> {52};
subgraph cluster_14 {
color=red
53 [label="Enter function foo" style="filled" fillcolor=red];
54 [label="Exit function foo" style="filled" fillcolor=red];
}
53 -> {54};
subgraph cluster_15 {
color=red
55 [label="Enter class A" style="filled" fillcolor=red];
56 [label="Exit class A" style="filled" fillcolor=red];
}
subgraph cluster_15 {
color=blue
53 [label="Enter function foo" style="filled" fillcolor=red];
54 [label="Exit function foo" style="filled" fillcolor=red];
}
55 -> {56} [color=green];
56 -> {53} [color=green];
56 -> {53} [style=dashed];
53 -> {54};
subgraph cluster_16 {
color=red
57 [label="Enter function bar" style="filled" fillcolor=red];
58 [label="Exit function bar" style="filled" fillcolor=red];
}
57 -> {58};
subgraph cluster_17 {
color=red
59 [label="Enter class B" style="filled" fillcolor=red];
60 [label="Exit class B" style="filled" fillcolor=red];
}
subgraph cluster_17 {
color=blue
57 [label="Enter function bar" style="filled" fillcolor=red];
58 [label="Exit function bar" style="filled" fillcolor=red];
}
59 -> {60} [color=green];
60 -> {57} [color=green];
60 -> {57} [style=dashed];
57 -> {58};
subgraph cluster_18 {
color=red
61 [label="Enter function baz" style="filled" fillcolor=red];
62 [label="Exit function baz" style="filled" fillcolor=red];
}
61 -> {62};
subgraph cluster_19 {
color=red
63 [label="Enter class C" style="filled" fillcolor=red];
64 [label="Exit class C" style="filled" fillcolor=red];
}
subgraph cluster_19 {
color=blue
61 [label="Enter function baz" style="filled" fillcolor=red];
62 [label="Exit function baz" style="filled" fillcolor=red];
}
63 -> {64} [color=green];
64 -> {61} [color=green];
64 -> {61} [style=dashed];
61 -> {62};
subgraph cluster_20 {
color=red
@@ -4,18 +4,19 @@ digraph smartcastFromArgument_kt {
edge [penwidth=2]
subgraph cluster_0 {
color=red
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
0 -> {1};
subgraph cluster_1 {
color=red
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
subgraph cluster_1 {
color=blue
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
3 -> {0} [color=green];
3 -> {0} [style=dashed];
0 -> {1};
subgraph cluster_2 {
color=red
@@ -4,32 +4,34 @@ digraph when_kt {
edge [penwidth=2]
subgraph cluster_0 {
color=red
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
0 -> {1};
subgraph cluster_1 {
color=red
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
subgraph cluster_1 {
color=blue
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
3 -> {0} [color=green];
3 -> {0} [style=dashed];
0 -> {1};
subgraph cluster_2 {
color=red
4 [label="Enter function bar" style="filled" fillcolor=red];
5 [label="Exit function bar" style="filled" fillcolor=red];
}
4 -> {5};
subgraph cluster_3 {
color=red
6 [label="Enter class B" style="filled" fillcolor=red];
7 [label="Exit class B" style="filled" fillcolor=red];
}
subgraph cluster_3 {
color=blue
4 [label="Enter function bar" style="filled" fillcolor=red];
5 [label="Exit function bar" style="filled" fillcolor=red];
}
6 -> {7} [color=green];
7 -> {4} [color=green];
7 -> {4} [style=dashed];
4 -> {5};
subgraph cluster_4 {
color=red
@@ -4,18 +4,19 @@ digraph equalsAndIdentity_kt {
edge [penwidth=2]
subgraph cluster_0 {
color=red
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
0 -> {1};
subgraph cluster_1 {
color=red
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
subgraph cluster_1 {
color=blue
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
3 -> {0} [color=green];
3 -> {0} [style=dashed];
0 -> {1};
subgraph cluster_2 {
color=red
@@ -4,32 +4,34 @@ digraph inPlaceLambdas_kt {
edge [penwidth=2]
subgraph cluster_0 {
color=red
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
0 -> {1};
subgraph cluster_1 {
color=red
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
subgraph cluster_1 {
color=blue
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
3 -> {0} [color=green];
3 -> {0} [style=dashed];
0 -> {1};
subgraph cluster_2 {
color=red
4 [label="Enter function bar" style="filled" fillcolor=red];
5 [label="Exit function bar" style="filled" fillcolor=red];
}
4 -> {5};
subgraph cluster_3 {
color=red
6 [label="Enter class B" style="filled" fillcolor=red];
7 [label="Exit class B" style="filled" fillcolor=red];
}
subgraph cluster_3 {
color=blue
4 [label="Enter function bar" style="filled" fillcolor=red];
5 [label="Exit function bar" style="filled" fillcolor=red];
}
6 -> {7} [color=green];
7 -> {4} [color=green];
7 -> {4} [style=dashed];
4 -> {5};
subgraph cluster_4 {
color=red
@@ -5,57 +5,26 @@ digraph lambdaInWhenBranch_kt {
subgraph cluster_0 {
color=red
3 [label="Enter class Sealed" style="filled" fillcolor=red];
4 [label="Exit class Sealed" style="filled" fillcolor=red];
}
subgraph cluster_1 {
color=blue
0 [label="Enter function <init>" style="filled" fillcolor=red];
1 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
2 [label="Exit function <init>" style="filled" fillcolor=red];
}
3 -> {4} [color=green];
4 -> {0} [color=green];
4 -> {0} [style=dashed];
0 -> {1};
1 -> {2};
subgraph cluster_1 {
color=red
3 [label="Enter class Sealed" style="filled" fillcolor=red];
4 [label="Exit class Sealed" style="filled" fillcolor=red];
}
3 -> {4} [color=green];
subgraph cluster_2 {
color=red
5 [label="Enter function <init>" style="filled" fillcolor=red];
6 [label="Delegated constructor call: super<R|Sealed|>()" style="filled" fillcolor=yellow];
7 [label="Exit function <init>" style="filled" fillcolor=red];
}
5 -> {6};
6 -> {7};
subgraph cluster_3 {
color=red
11 [label="Enter function component1" style="filled" fillcolor=red];
12 [label="Exit function component1" style="filled" fillcolor=red];
}
11 -> {12};
subgraph cluster_4 {
color=red
13 [label="Enter function copy" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
15 [label="Enter default value of t" style="filled" fillcolor=red];
16 [label="Access variable R|/SubClass1.t|"];
17 [label="Exit default value of t" style="filled" fillcolor=red];
}
14 [label="Exit function copy" style="filled" fillcolor=red];
}
13 -> {14 15};
15 -> {16};
15 -> {15} [style=dashed];
16 -> {17};
subgraph cluster_6 {
color=red
18 [label="Enter class SubClass1" style="filled" fillcolor=red];
19 [label="Part of class initialization"];
subgraph cluster_7 {
subgraph cluster_3 {
color=blue
8 [label="Enter property" style="filled" fillcolor=red];
9 [label="Access variable R|<local>/t|"];
@@ -63,36 +32,67 @@ digraph lambdaInWhenBranch_kt {
}
20 [label="Exit class SubClass1" style="filled" fillcolor=red];
}
subgraph cluster_4 {
color=blue
13 [label="Enter function copy" style="filled" fillcolor=red];
14 [label="Exit function copy" style="filled" fillcolor=red];
}
subgraph cluster_5 {
color=blue
15 [label="Enter default value of t" style="filled" fillcolor=red];
16 [label="Access variable R|/SubClass1.t|"];
17 [label="Exit default value of t" style="filled" fillcolor=red];
}
subgraph cluster_6 {
color=blue
11 [label="Enter function component1" style="filled" fillcolor=red];
12 [label="Exit function component1" style="filled" fillcolor=red];
}
subgraph cluster_7 {
color=blue
5 [label="Enter function <init>" style="filled" fillcolor=red];
6 [label="Delegated constructor call: super<R|Sealed|>()" style="filled" fillcolor=yellow];
7 [label="Exit function <init>" style="filled" fillcolor=red];
}
18 -> {19} [color=green];
19 -> {8} [color=green];
19 -> {20} [style=dotted];
19 -> {8} [style=dashed];
20 -> {5 11 13} [color=green];
20 -> {5 11 13} [style=dashed];
8 -> {9};
9 -> {10};
10 -> {20} [color=green];
5 -> {6};
6 -> {7};
11 -> {12};
13 -> {14 15};
15 -> {16};
15 -> {15} [style=dashed];
16 -> {17};
subgraph cluster_8 {
color=red
21 [label="Enter function <init>" style="filled" fillcolor=red];
22 [label="Delegated constructor call: super<R|Sealed|>()" style="filled" fillcolor=yellow];
23 [label="Exit function <init>" style="filled" fillcolor=red];
}
21 -> {22};
22 -> {23};
subgraph cluster_9 {
color=red
24 [label="Enter function copy" style="filled" fillcolor=red];
25 [label="Exit function copy" style="filled" fillcolor=red];
}
24 -> {25};
subgraph cluster_10 {
color=red
26 [label="Enter class SubClass2" style="filled" fillcolor=red];
27 [label="Exit class SubClass2" style="filled" fillcolor=red];
}
subgraph cluster_9 {
color=blue
24 [label="Enter function copy" style="filled" fillcolor=red];
25 [label="Exit function copy" style="filled" fillcolor=red];
}
subgraph cluster_10 {
color=blue
21 [label="Enter function <init>" style="filled" fillcolor=red];
22 [label="Delegated constructor call: super<R|Sealed|>()" style="filled" fillcolor=yellow];
23 [label="Exit function <init>" style="filled" fillcolor=red];
}
26 -> {27} [color=green];
27 -> {21 24} [color=green];
27 -> {21 24} [style=dashed];
21 -> {22};
22 -> {23};
24 -> {25};
subgraph cluster_11 {
color=red
@@ -4,18 +4,19 @@ digraph dataFlowInfoFromWhileCondition_kt {
edge [penwidth=2]
subgraph cluster_0 {
color=red
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
0 -> {1};
subgraph cluster_1 {
color=red
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
subgraph cluster_1 {
color=blue
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
3 -> {0} [color=green];
3 -> {0} [style=dashed];
0 -> {1};
subgraph cluster_2 {
color=red
@@ -4,18 +4,19 @@ digraph endlessLoops_kt {
edge [penwidth=2]
subgraph cluster_0 {
color=red
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
0 -> {1};
subgraph cluster_1 {
color=red
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
subgraph cluster_1 {
color=blue
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
3 -> {0} [color=green];
3 -> {0} [style=dashed];
0 -> {1};
subgraph cluster_2 {
color=red
@@ -4,32 +4,34 @@ digraph multipleCasts_kt {
edge [penwidth=2]
subgraph cluster_0 {
color=red
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
0 -> {1};
subgraph cluster_1 {
color=red
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
subgraph cluster_1 {
color=blue
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
3 -> {0} [color=green];
3 -> {0} [style=dashed];
0 -> {1};
subgraph cluster_2 {
color=red
4 [label="Enter function foo" style="filled" fillcolor=red];
5 [label="Exit function foo" style="filled" fillcolor=red];
}
4 -> {5};
subgraph cluster_3 {
color=red
6 [label="Enter class B" style="filled" fillcolor=red];
7 [label="Exit class B" style="filled" fillcolor=red];
}
subgraph cluster_3 {
color=blue
4 [label="Enter function foo" style="filled" fillcolor=red];
5 [label="Exit function foo" style="filled" fillcolor=red];
}
6 -> {7} [color=green];
7 -> {4} [color=green];
7 -> {4} [style=dashed];
4 -> {5};
subgraph cluster_4 {
color=red
@@ -4,67 +4,72 @@ digraph nullability_kt {
edge [penwidth=2]
subgraph cluster_0 {
color=red
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
0 -> {1};
subgraph cluster_1 {
color=red
2 [label="Enter function getA" style="filled" fillcolor=red];
3 [label="Exit function getA" style="filled" fillcolor=red];
}
2 -> {3};
subgraph cluster_2 {
color=red
4 [label="Enter class A" style="filled" fillcolor=red];
5 [label="Exit class A" style="filled" fillcolor=red];
}
subgraph cluster_1 {
color=blue
2 [label="Enter function getA" style="filled" fillcolor=red];
3 [label="Exit function getA" style="filled" fillcolor=red];
}
subgraph cluster_2 {
color=blue
0 [label="Enter function foo" style="filled" fillcolor=red];
1 [label="Exit function foo" style="filled" fillcolor=red];
}
4 -> {5} [color=green];
5 -> {0 2} [color=green];
5 -> {0 2} [style=dashed];
0 -> {1};
2 -> {3};
subgraph cluster_3 {
color=red
6 [label="Enter function fs" style="filled" fillcolor=red];
7 [label="Exit function fs" style="filled" fillcolor=red];
}
6 -> {7};
subgraph cluster_4 {
color=red
8 [label="Enter class MyData" style="filled" fillcolor=red];
9 [label="Exit class MyData" style="filled" fillcolor=red];
}
subgraph cluster_4 {
color=blue
6 [label="Enter function fs" style="filled" fillcolor=red];
7 [label="Exit function fs" style="filled" fillcolor=red];
}
8 -> {9} [color=green];
9 -> {6} [color=green];
9 -> {6} [style=dashed];
6 -> {7};
subgraph cluster_5 {
color=red
10 [label="Enter function fdata" style="filled" fillcolor=red];
11 [label="Exit function fdata" style="filled" fillcolor=red];
}
10 -> {11};
subgraph cluster_6 {
color=red
12 [label="Enter class Q" style="filled" fillcolor=red];
13 [label="Exit class Q" style="filled" fillcolor=red];
}
subgraph cluster_6 {
color=blue
10 [label="Enter function fdata" style="filled" fillcolor=red];
11 [label="Exit function fdata" style="filled" fillcolor=red];
}
12 -> {13} [color=green];
13 -> {10} [color=green];
13 -> {10} [style=dashed];
10 -> {11};
subgraph cluster_7 {
color=red
14 [label="Enter function <init>" style="filled" fillcolor=red];
15 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
16 [label="Exit function <init>" style="filled" fillcolor=red];
27 [label="Enter class QImpl" style="filled" fillcolor=red];
28 [label="Part of class initialization"];
subgraph cluster_8 {
color=blue
17 [label="Enter property" style="filled" fillcolor=red];
18 [label="Access variable R|<local>/data|"];
19 [label="Exit property" style="filled" fillcolor=red];
}
29 [label="Exit class QImpl" style="filled" fillcolor=red];
}
14 -> {15};
15 -> {16};
subgraph cluster_8 {
color=red
subgraph cluster_9 {
color=blue
20 [label="Enter function fdata" style="filled" fillcolor=red];
subgraph cluster_9 {
subgraph cluster_10 {
color=blue
21 [label="Enter block"];
22 [label="Const: Null(null)"];
@@ -74,6 +79,23 @@ digraph nullability_kt {
}
26 [label="Exit function fdata" style="filled" fillcolor=red];
}
subgraph cluster_11 {
color=blue
14 [label="Enter function <init>" style="filled" fillcolor=red];
15 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
16 [label="Exit function <init>" style="filled" fillcolor=red];
}
27 -> {28} [color=green];
28 -> {17} [color=green];
28 -> {29} [style=dotted];
28 -> {17} [style=dashed];
29 -> {14 20} [color=green];
29 -> {14 20} [style=dashed];
17 -> {18};
18 -> {19};
19 -> {29} [color=green];
14 -> {15};
15 -> {16};
20 -> {21};
21 -> {22};
22 -> {23};
@@ -82,39 +104,22 @@ digraph nullability_kt {
24 -> {25} [style=dotted];
25 -> {26} [style=dotted];
subgraph cluster_10 {
color=red
27 [label="Enter class QImpl" style="filled" fillcolor=red];
28 [label="Part of class initialization"];
subgraph cluster_11 {
color=blue
17 [label="Enter property" style="filled" fillcolor=red];
18 [label="Access variable R|<local>/data|"];
19 [label="Exit property" style="filled" fillcolor=red];
}
29 [label="Exit class QImpl" style="filled" fillcolor=red];
}
27 -> {28} [color=green];
28 -> {17} [color=green];
28 -> {29} [style=dotted];
28 -> {17} [style=dashed];
17 -> {18};
18 -> {19};
19 -> {29} [color=green];
subgraph cluster_12 {
color=red
30 [label="Enter function <init>" style="filled" fillcolor=red];
31 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
32 [label="Exit function <init>" style="filled" fillcolor=red];
43 [label="Enter class QImplMutable" style="filled" fillcolor=red];
44 [label="Part of class initialization"];
subgraph cluster_13 {
color=blue
33 [label="Enter property" style="filled" fillcolor=red];
34 [label="Access variable R|<local>/data|"];
35 [label="Exit property" style="filled" fillcolor=red];
}
45 [label="Exit class QImplMutable" style="filled" fillcolor=red];
}
30 -> {31};
31 -> {32};
subgraph cluster_13 {
color=red
subgraph cluster_14 {
color=blue
36 [label="Enter function fdata" style="filled" fillcolor=red];
subgraph cluster_14 {
subgraph cluster_15 {
color=blue
37 [label="Enter block"];
38 [label="Const: Null(null)"];
@@ -124,6 +129,23 @@ digraph nullability_kt {
}
42 [label="Exit function fdata" style="filled" fillcolor=red];
}
subgraph cluster_16 {
color=blue
30 [label="Enter function <init>" style="filled" fillcolor=red];
31 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
32 [label="Exit function <init>" style="filled" fillcolor=red];
}
43 -> {44} [color=green];
44 -> {33} [color=green];
44 -> {45} [style=dotted];
44 -> {33} [style=dashed];
45 -> {30 36} [color=green];
45 -> {30 36} [style=dashed];
33 -> {34};
34 -> {35};
35 -> {45} [color=green];
30 -> {31};
31 -> {32};
36 -> {37};
37 -> {38};
38 -> {39};
@@ -132,39 +154,10 @@ digraph nullability_kt {
40 -> {41} [style=dotted];
41 -> {42} [style=dotted];
subgraph cluster_15 {
color=red
43 [label="Enter class QImplMutable" style="filled" fillcolor=red];
44 [label="Part of class initialization"];
subgraph cluster_16 {
color=blue
33 [label="Enter property" style="filled" fillcolor=red];
34 [label="Access variable R|<local>/data|"];
35 [label="Exit property" style="filled" fillcolor=red];
}
45 [label="Exit class QImplMutable" style="filled" fillcolor=red];
}
43 -> {44} [color=green];
44 -> {33} [color=green];
44 -> {45} [style=dotted];
44 -> {33} [style=dashed];
33 -> {34};
34 -> {35};
35 -> {45} [color=green];
subgraph cluster_17 {
color=red
46 [label="Enter function <init>" style="filled" fillcolor=red];
47 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
48 [label="Exit function <init>" style="filled" fillcolor=red];
}
46 -> {47};
47 -> {48};
subgraph cluster_18 {
color=red
49 [label="Enter function getter" style="filled" fillcolor=red];
subgraph cluster_19 {
subgraph cluster_18 {
color=blue
50 [label="Enter block"];
51 [label="Const: Null(null)"];
@@ -182,8 +175,13 @@ digraph nullability_kt {
53 -> {54} [style=dotted];
54 -> {55} [style=dotted];
subgraph cluster_20 {
subgraph cluster_19 {
color=red
63 [label="Enter class QImplWithCustomGetter" style="filled" fillcolor=red];
64 [label="Exit class QImplWithCustomGetter" style="filled" fillcolor=red];
}
subgraph cluster_20 {
color=blue
56 [label="Enter function fdata" style="filled" fillcolor=red];
subgraph cluster_21 {
color=blue
@@ -195,6 +193,17 @@ digraph nullability_kt {
}
62 [label="Exit function fdata" style="filled" fillcolor=red];
}
subgraph cluster_22 {
color=blue
46 [label="Enter function <init>" style="filled" fillcolor=red];
47 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
48 [label="Exit function <init>" style="filled" fillcolor=red];
}
63 -> {64} [color=green];
64 -> {46 56} [color=green];
64 -> {46 56} [style=dashed];
46 -> {47};
47 -> {48};
56 -> {57};
57 -> {58};
58 -> {59};
@@ -203,13 +212,6 @@ digraph nullability_kt {
60 -> {61} [style=dotted];
61 -> {62} [style=dotted];
subgraph cluster_22 {
color=red
63 [label="Enter class QImplWithCustomGetter" style="filled" fillcolor=red];
64 [label="Exit class QImplWithCustomGetter" style="filled" fillcolor=red];
}
63 -> {64} [color=green];
subgraph cluster_23 {
color=red
65 [label="Enter function test_1" style="filled" fillcolor=red];
@@ -5,15 +5,11 @@ digraph implicitReceivers_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function <init>" style="filled" fillcolor=red];
1 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
2 [label="Exit function <init>" style="filled" fillcolor=red];
7 [label="Enter class A" style="filled" fillcolor=red];
8 [label="Exit class A" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
subgraph cluster_1 {
color=red
color=blue
3 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
@@ -22,28 +18,28 @@ digraph implicitReceivers_kt {
}
6 [label="Exit function foo" style="filled" fillcolor=red];
}
subgraph cluster_3 {
color=blue
0 [label="Enter function <init>" style="filled" fillcolor=red];
1 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
2 [label="Exit function <init>" style="filled" fillcolor=red];
}
7 -> {8} [color=green];
8 -> {0 3} [color=green];
8 -> {0 3} [style=dashed];
0 -> {1};
1 -> {2};
3 -> {4};
4 -> {5};
5 -> {6};
subgraph cluster_3 {
color=red
7 [label="Enter class A" style="filled" fillcolor=red];
8 [label="Exit class A" style="filled" fillcolor=red];
}
7 -> {8} [color=green];
subgraph cluster_4 {
color=red
9 [label="Enter function <init>" style="filled" fillcolor=red];
10 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
11 [label="Exit function <init>" style="filled" fillcolor=red];
16 [label="Enter class B" style="filled" fillcolor=red];
17 [label="Exit class B" style="filled" fillcolor=red];
}
9 -> {10};
10 -> {11};
subgraph cluster_5 {
color=red
color=blue
12 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
@@ -52,17 +48,21 @@ digraph implicitReceivers_kt {
}
15 [label="Exit function bar" style="filled" fillcolor=red];
}
subgraph cluster_7 {
color=blue
9 [label="Enter function <init>" style="filled" fillcolor=red];
10 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
11 [label="Exit function <init>" style="filled" fillcolor=red];
}
16 -> {17} [color=green];
17 -> {9 12} [color=green];
17 -> {9 12} [style=dashed];
9 -> {10};
10 -> {11};
12 -> {13};
13 -> {14};
14 -> {15};
subgraph cluster_7 {
color=red
16 [label="Enter class B" style="filled" fillcolor=red];
17 [label="Exit class B" style="filled" fillcolor=red];
}
16 -> {17} [color=green];
subgraph cluster_8 {
color=red
18 [label="Enter function with" style="filled" fillcolor=red];
@@ -5,17 +5,30 @@ digraph assignSafeCall_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function <init>" style="filled" fillcolor=red];
1 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
2 [label="Exit function <init>" style="filled" fillcolor=red];
17 [label="Enter class A" style="filled" fillcolor=red];
18 [label="Part of class initialization"];
subgraph cluster_1 {
color=blue
10 [label="Enter property" style="filled" fillcolor=red];
11 [label="Const: Int(1)"];
12 [label="Exit property" style="filled" fillcolor=red];
}
19 [label="Exit class A" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
subgraph cluster_1 {
color=red
subgraph cluster_2 {
color=blue
13 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_3 {
color=blue
14 [label="Enter block"];
15 [label="Exit block"];
}
16 [label="Exit function bar" style="filled" fillcolor=red];
}
subgraph cluster_4 {
color=blue
3 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_2 {
subgraph cluster_5 {
color=blue
4 [label="Enter block"];
5 [label="Const: Int(1)"];
@@ -25,6 +38,23 @@ digraph assignSafeCall_kt {
}
9 [label="Exit function foo" style="filled" fillcolor=red];
}
subgraph cluster_6 {
color=blue
0 [label="Enter function <init>" style="filled" fillcolor=red];
1 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
2 [label="Exit function <init>" style="filled" fillcolor=red];
}
17 -> {18} [color=green];
18 -> {10} [color=green];
18 -> {19} [style=dotted];
18 -> {10} [style=dashed];
19 -> {0 3 13} [color=green];
19 -> {0 3 13} [style=dashed];
10 -> {11};
11 -> {12};
12 -> {19} [color=green];
0 -> {1};
1 -> {2};
3 -> {4};
4 -> {5};
5 -> {6};
@@ -32,41 +62,10 @@ digraph assignSafeCall_kt {
6 -> {7} [style=dotted];
7 -> {8} [style=dotted];
8 -> {9} [style=dotted];
subgraph cluster_3 {
color=red
13 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
14 [label="Enter block"];
15 [label="Exit block"];
}
16 [label="Exit function bar" style="filled" fillcolor=red];
}
13 -> {14};
14 -> {15};
15 -> {16};
subgraph cluster_5 {
color=red
17 [label="Enter class A" style="filled" fillcolor=red];
18 [label="Part of class initialization"];
subgraph cluster_6 {
color=blue
10 [label="Enter property" style="filled" fillcolor=red];
11 [label="Const: Int(1)"];
12 [label="Exit property" style="filled" fillcolor=red];
}
19 [label="Exit class A" style="filled" fillcolor=red];
}
17 -> {18} [color=green];
18 -> {10} [color=green];
18 -> {19} [style=dotted];
18 -> {10} [style=dashed];
10 -> {11};
11 -> {12};
12 -> {19} [color=green];
subgraph cluster_7 {
color=red
20 [label="Enter function test_1" style="filled" fillcolor=red];
@@ -237,25 +236,25 @@ digraph assignSafeCall_kt {
84 -> {85};
subgraph cluster_19 {
color=red
86 [label="Enter function foo" style="filled" fillcolor=red];
87 [label="Exit function foo" style="filled" fillcolor=red];
}
86 -> {87};
subgraph cluster_20 {
color=red
88 [label="Enter function bar" style="filled" fillcolor=red];
89 [label="Exit function bar" style="filled" fillcolor=red];
}
88 -> {89};
subgraph cluster_21 {
color=red
90 [label="Enter class B" style="filled" fillcolor=red];
91 [label="Exit class B" style="filled" fillcolor=red];
}
subgraph cluster_20 {
color=blue
88 [label="Enter function bar" style="filled" fillcolor=red];
89 [label="Exit function bar" style="filled" fillcolor=red];
}
subgraph cluster_21 {
color=blue
86 [label="Enter function foo" style="filled" fillcolor=red];
87 [label="Exit function foo" style="filled" fillcolor=red];
}
90 -> {91} [color=green];
91 -> {86 88} [color=green];
91 -> {86 88} [style=dashed];
86 -> {87};
88 -> {89};
subgraph cluster_22 {
color=red
@@ -75,32 +75,31 @@ digraph safeCalls_kt {
24 -> {25};
subgraph cluster_6 {
color=red
26 [label="Enter function bar" style="filled" fillcolor=red];
27 [label="Exit function bar" style="filled" fillcolor=red];
}
26 -> {27};
subgraph cluster_7 {
color=red
28 [label="Enter function bool" style="filled" fillcolor=red];
29 [label="Exit function bool" style="filled" fillcolor=red];
}
28 -> {29};
subgraph cluster_8 {
color=red
30 [label="Enter function id" style="filled" fillcolor=red];
31 [label="Exit function id" style="filled" fillcolor=red];
}
30 -> {31};
subgraph cluster_9 {
color=red
32 [label="Enter class A" style="filled" fillcolor=red];
33 [label="Exit class A" style="filled" fillcolor=red];
}
subgraph cluster_7 {
color=blue
30 [label="Enter function id" style="filled" fillcolor=red];
31 [label="Exit function id" style="filled" fillcolor=red];
}
subgraph cluster_8 {
color=blue
28 [label="Enter function bool" style="filled" fillcolor=red];
29 [label="Exit function bool" style="filled" fillcolor=red];
}
subgraph cluster_9 {
color=blue
26 [label="Enter function bar" style="filled" fillcolor=red];
27 [label="Exit function bar" style="filled" fillcolor=red];
}
32 -> {33} [color=green];
33 -> {26 28 30} [color=green];
33 -> {26 28 30} [style=dashed];
26 -> {27};
28 -> {29};
30 -> {31};
subgraph cluster_10 {
color=red
@@ -11,18 +11,19 @@ digraph smartCastInInit_kt {
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function foo" style="filled" fillcolor=red];
3 [label="Exit function foo" style="filled" fillcolor=red];
}
2 -> {3};
subgraph cluster_2 {
color=red
4 [label="Enter class S" style="filled" fillcolor=red];
5 [label="Exit class S" style="filled" fillcolor=red];
}
subgraph cluster_2 {
color=blue
2 [label="Enter function foo" style="filled" fillcolor=red];
3 [label="Exit function foo" style="filled" fillcolor=red];
}
4 -> {5} [color=green];
5 -> {2} [color=green];
5 -> {2} [style=dashed];
2 -> {3};
subgraph cluster_3 {
color=red
@@ -47,22 +48,13 @@ digraph smartCastInInit_kt {
12 -> {13} [style=dotted];
subgraph cluster_5 {
color=red
14 [label="Enter function <init>" style="filled" fillcolor=red];
15 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
16 [label="Exit function <init>" style="filled" fillcolor=red];
}
14 -> {15};
15 -> {16};
subgraph cluster_6 {
color=red
26 [label="Enter class Main" style="filled" fillcolor=red];
27 [label="Part of class initialization"];
subgraph cluster_7 {
subgraph cluster_6 {
color=blue
17 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_8 {
subgraph cluster_7 {
color=blue
18 [label="Enter block"];
19 [label="Function call: R|/s|()" style="filled" fillcolor=yellow];
@@ -76,10 +68,18 @@ digraph smartCastInInit_kt {
}
28 [label="Exit class Main" style="filled" fillcolor=red];
}
subgraph cluster_8 {
color=blue
14 [label="Enter function <init>" style="filled" fillcolor=red];
15 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
16 [label="Exit function <init>" style="filled" fillcolor=red];
}
26 -> {27} [color=green];
27 -> {17} [color=green];
27 -> {28} [style=dotted];
27 -> {17} [style=dashed];
28 -> {14} [color=green];
28 -> {14} [style=dashed];
17 -> {18};
18 -> {19};
19 -> {20};
@@ -89,5 +89,7 @@ digraph smartCastInInit_kt {
23 -> {24};
24 -> {25};
25 -> {28} [color=green];
14 -> {15};
15 -> {16};
}
@@ -4,26 +4,17 @@ digraph smartcastInByClause_kt {
edge [penwidth=2]
subgraph cluster_0 {
color=red
0 [label="Enter function <init>" style="filled" fillcolor=red];
1 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
2 [label="Exit function <init>" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
subgraph cluster_1 {
color=red
9 [label="Enter class A" style="filled" fillcolor=red];
10 [label="Part of class initialization"];
subgraph cluster_2 {
subgraph cluster_1 {
color=blue
3 [label="Enter property" style="filled" fillcolor=red];
4 [label="Access variable R|<local>/path|"];
5 [label="Exit property" style="filled" fillcolor=red];
}
11 [label="Part of class initialization"];
subgraph cluster_3 {
subgraph cluster_2 {
color=blue
6 [label="Enter property" style="filled" fillcolor=red];
7 [label="Access variable R|<local>/index|"];
@@ -31,6 +22,12 @@ digraph smartcastInByClause_kt {
}
12 [label="Exit class A" style="filled" fillcolor=red];
}
subgraph cluster_3 {
color=blue
0 [label="Enter function <init>" style="filled" fillcolor=red];
1 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
2 [label="Exit function <init>" style="filled" fillcolor=red];
}
9 -> {10} [color=green];
10 -> {3} [color=green];
10 -> {11} [style=dotted];
@@ -38,12 +35,16 @@ digraph smartcastInByClause_kt {
11 -> {6} [color=green];
11 -> {12} [style=dotted];
11 -> {6} [style=dashed];
12 -> {0} [color=green];
12 -> {0} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {11} [color=green];
6 -> {7};
7 -> {8};
8 -> {12} [color=green];
0 -> {1};
1 -> {2};
subgraph cluster_4 {
color=red
@@ -53,19 +54,10 @@ digraph smartcastInByClause_kt {
13 -> {14} [color=green];
subgraph cluster_5 {
color=red
15 [label="Enter function <init>" style="filled" fillcolor=red];
16 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
17 [label="Exit function <init>" style="filled" fillcolor=red];
}
15 -> {16};
16 -> {17};
subgraph cluster_6 {
color=red
21 [label="Enter class Derived" style="filled" fillcolor=red];
22 [label="Part of class initialization"];
subgraph cluster_7 {
subgraph cluster_6 {
color=blue
18 [label="Enter property" style="filled" fillcolor=red];
19 [label="Access variable R|<local>/index|"];
@@ -73,13 +65,23 @@ digraph smartcastInByClause_kt {
}
23 [label="Exit class Derived" style="filled" fillcolor=red];
}
subgraph cluster_7 {
color=blue
15 [label="Enter function <init>" style="filled" fillcolor=red];
16 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
17 [label="Exit function <init>" style="filled" fillcolor=red];
}
21 -> {22} [color=green];
22 -> {18} [color=green];
22 -> {23} [style=dotted];
22 -> {18} [style=dashed];
23 -> {15} [color=green];
23 -> {15} [style=dashed];
18 -> {19};
19 -> {20};
20 -> {23} [color=green];
15 -> {16};
16 -> {17};
subgraph cluster_8 {
color=red
@@ -195,8 +197,6 @@ digraph smartcastInByClause_kt {
42 -> {43} [color=red];
42 -> {49} [style=dashed];
43 -> {44};
43 -> {64 67} [color=green];
43 -> {64 67} [style=dashed];
44 -> {45};
45 -> {48};
45 -> {46} [style=dotted];
@@ -209,7 +209,8 @@ digraph smartcastInByClause_kt {
51 -> {59} [color=green];
51 -> {52} [style=dotted];
51 -> {59} [style=dashed];
52 -> {43} [color=green];
52 -> {43 64 67} [color=green];
52 -> {64 67} [style=dashed];
53 -> {54};
54 -> {55};
55 -> {56};
@@ -115,26 +115,17 @@ digraph smartcastToNothing_kt {
37 -> {38} [style=dotted];
subgraph cluster_10 {
color=red
39 [label="Enter function <init>" style="filled" fillcolor=red];
40 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
41 [label="Exit function <init>" style="filled" fillcolor=red];
}
39 -> {40};
40 -> {41};
subgraph cluster_11 {
color=red
48 [label="Enter class A" style="filled" fillcolor=red];
49 [label="Part of class initialization"];
subgraph cluster_12 {
subgraph cluster_11 {
color=blue
42 [label="Enter property" style="filled" fillcolor=red];
43 [label="Const: Int(1)"];
44 [label="Exit property" style="filled" fillcolor=red];
}
50 [label="Part of class initialization"];
subgraph cluster_13 {
subgraph cluster_12 {
color=blue
45 [label="Enter property" style="filled" fillcolor=red];
46 [label="Const: Boolean(true)"];
@@ -142,6 +133,12 @@ digraph smartcastToNothing_kt {
}
51 [label="Exit class A" style="filled" fillcolor=red];
}
subgraph cluster_13 {
color=blue
39 [label="Enter function <init>" style="filled" fillcolor=red];
40 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
41 [label="Exit function <init>" style="filled" fillcolor=red];
}
48 -> {49} [color=green];
49 -> {42} [color=green];
49 -> {50} [style=dotted];
@@ -149,12 +146,16 @@ digraph smartcastToNothing_kt {
50 -> {45} [color=green];
50 -> {51} [style=dotted];
50 -> {45} [style=dashed];
51 -> {39} [color=green];
51 -> {39} [style=dashed];
42 -> {43};
43 -> {44};
44 -> {50} [color=green];
45 -> {46};
46 -> {47};
47 -> {51} [color=green];
39 -> {40};
40 -> {41};
subgraph cluster_14 {
color=red
@@ -4,19 +4,10 @@ digraph overridenOpenVal_kt {
edge [penwidth=2]
subgraph cluster_0 {
color=red
0 [label="Enter function <init>" style="filled" fillcolor=red];
1 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
2 [label="Exit function <init>" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
subgraph cluster_1 {
color=red
6 [label="Enter class A" style="filled" fillcolor=red];
7 [label="Part of class initialization"];
subgraph cluster_2 {
subgraph cluster_1 {
color=blue
3 [label="Enter property" style="filled" fillcolor=red];
4 [label="Access variable R|<local>/x|"];
@@ -24,27 +15,31 @@ digraph overridenOpenVal_kt {
}
8 [label="Exit class A" style="filled" fillcolor=red];
}
subgraph cluster_2 {
color=blue
0 [label="Enter function <init>" style="filled" fillcolor=red];
1 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
2 [label="Exit function <init>" style="filled" fillcolor=red];
}
6 -> {7} [color=green];
7 -> {3} [color=green];
7 -> {8} [style=dotted];
7 -> {3} [style=dashed];
8 -> {0} [color=green];
8 -> {0} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {8} [color=green];
0 -> {1};
1 -> {2};
subgraph cluster_3 {
color=red
9 [label="Enter function <init>" style="filled" fillcolor=red];
10 [label="Access variable R|<local>/x|"];
11 [label="Delegated constructor call: super<R|A|>(...)" style="filled" fillcolor=yellow];
12 [label="Exit function <init>" style="filled" fillcolor=red];
31 [label="Enter class B" style="filled" fillcolor=red];
32 [label="Exit class B" style="filled" fillcolor=red];
}
9 -> {10};
10 -> {11};
11 -> {12};
subgraph cluster_4 {
color=red
color=blue
13 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
@@ -76,6 +71,19 @@ digraph overridenOpenVal_kt {
}
30 [label="Exit function test_1" style="filled" fillcolor=red];
}
subgraph cluster_9 {
color=blue
9 [label="Enter function <init>" style="filled" fillcolor=red];
10 [label="Access variable R|<local>/x|"];
11 [label="Delegated constructor call: super<R|A|>(...)" style="filled" fillcolor=yellow];
12 [label="Exit function <init>" style="filled" fillcolor=red];
}
31 -> {32} [color=green];
32 -> {9 13} [color=green];
32 -> {9 13} [style=dashed];
9 -> {10};
10 -> {11};
11 -> {12};
13 -> {14};
14 -> {15};
15 -> {16};
@@ -94,13 +102,6 @@ digraph overridenOpenVal_kt {
28 -> {29};
29 -> {30};
subgraph cluster_9 {
color=red
31 [label="Enter class B" style="filled" fillcolor=red];
32 [label="Exit class B" style="filled" fillcolor=red];
}
31 -> {32} [color=green];
subgraph cluster_10 {
color=red
33 [label="Enter function test_2" style="filled" fillcolor=red];
@@ -5,15 +5,11 @@ digraph delayedAssignment_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function <init>" style="filled" fillcolor=red];
1 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
2 [label="Exit function <init>" style="filled" fillcolor=red];
7 [label="Enter class A" style="filled" fillcolor=red];
8 [label="Exit class A" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
subgraph cluster_1 {
color=red
color=blue
3 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
@@ -22,17 +18,21 @@ digraph delayedAssignment_kt {
}
6 [label="Exit function foo" style="filled" fillcolor=red];
}
subgraph cluster_3 {
color=blue
0 [label="Enter function <init>" style="filled" fillcolor=red];
1 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
2 [label="Exit function <init>" style="filled" fillcolor=red];
}
7 -> {8} [color=green];
8 -> {0 3} [color=green];
8 -> {0 3} [style=dashed];
0 -> {1};
1 -> {2};
3 -> {4};
4 -> {5};
5 -> {6};
subgraph cluster_3 {
color=red
7 [label="Enter class A" style="filled" fillcolor=red];
8 [label="Exit class A" style="filled" fillcolor=red];
}
7 -> {8} [color=green];
subgraph cluster_4 {
color=red
9 [label="Enter function test" style="filled" fillcolor=red];
@@ -76,8 +76,6 @@ digraph inAnonymousObject_kt {
4 -> {5} [color=red];
4 -> {13} [style=dashed];
5 -> {6};
5 -> {26 29} [color=green];
5 -> {26 29} [style=dashed];
6 -> {7};
7 -> {8};
8 -> {9};
@@ -91,7 +89,8 @@ digraph inAnonymousObject_kt {
15 -> {20} [color=green];
15 -> {16} [style=dotted];
15 -> {20} [style=dashed];
16 -> {5} [color=green];
16 -> {5 26 29} [color=green];
16 -> {26 29} [style=dashed];
17 -> {18};
18 -> {19};
19 -> {15} [color=green];
@@ -27,39 +27,16 @@ digraph inLocalClass_kt {
10 [label="Enter class LocalClass" style="filled" fillcolor=red];
11 [label="Part of class initialization"];
subgraph cluster_4 {
color=blue
29 [label="Enter function run" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
30 [label="Enter block"];
31 [label="Function call: R|<local>/d|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
32 [label="Exit block"];
}
33 [label="Exit function run" style="filled" fillcolor=red];
}
subgraph cluster_6 {
color=blue
23 [label="Enter function <init>" style="filled" fillcolor=red];
24 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
subgraph cluster_7 {
color=blue
25 [label="Enter block"];
26 [label="Function call: R|<local>/b|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
27 [label="Exit block"];
}
28 [label="Exit function <init>" style="filled" fillcolor=red];
}
subgraph cluster_8 {
color=blue
14 [label="Enter property" style="filled" fillcolor=red];
15 [label="Access variable R|<local>/a|"];
16 [label="Exit property" style="filled" fillcolor=red];
}
12 [label="Part of class initialization"];
subgraph cluster_9 {
subgraph cluster_5 {
color=blue
17 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_10 {
subgraph cluster_6 {
color=blue
18 [label="Enter block"];
19 [label="Access variable R|<local>/c|"];
@@ -70,14 +47,37 @@ digraph inLocalClass_kt {
}
13 [label="Exit class LocalClass" style="filled" fillcolor=red];
}
subgraph cluster_7 {
color=blue
29 [label="Enter function run" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
30 [label="Enter block"];
31 [label="Function call: R|<local>/d|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
32 [label="Exit block"];
}
33 [label="Exit function run" style="filled" fillcolor=red];
}
subgraph cluster_9 {
color=blue
23 [label="Enter function <init>" style="filled" fillcolor=red];
24 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
subgraph cluster_10 {
color=blue
25 [label="Enter block"];
26 [label="Function call: R|<local>/b|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
27 [label="Exit block"];
}
28 [label="Exit function <init>" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
3 -> {14 17 23 29} [color=red];
4 -> {5};
4 -> {10 23 29} [color=green];
4 -> {10 23 29} [style=dashed];
4 -> {10} [color=green];
4 -> {10} [style=dashed];
5 -> {6};
6 -> {7};
7 -> {8};
@@ -89,6 +89,8 @@ digraph inLocalClass_kt {
12 -> {17} [color=green];
12 -> {13} [style=dotted];
12 -> {17} [style=dashed];
13 -> {23 29} [color=green];
13 -> {23 29} [style=dashed];
14 -> {15};
15 -> {16};
16 -> {12} [color=green];
@@ -5,20 +5,21 @@ digraph delegateWithAnonymousObject_kt {
subgraph cluster_0 {
color=red
3 [label="Enter class DelegateProvider" style="filled" fillcolor=red];
4 [label="Exit class DelegateProvider" style="filled" fillcolor=red];
}
subgraph cluster_1 {
color=blue
0 [label="Enter function <init>" style="filled" fillcolor=red];
1 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
2 [label="Exit function <init>" style="filled" fillcolor=red];
}
3 -> {4} [color=green];
4 -> {0} [color=green];
4 -> {0} [style=dashed];
0 -> {1};
1 -> {2};
subgraph cluster_1 {
color=red
3 [label="Enter class DelegateProvider" style="filled" fillcolor=red];
4 [label="Exit class DelegateProvider" style="filled" fillcolor=red];
}
3 -> {4} [color=green];
subgraph cluster_2 {
color=red
5 [label="Enter function delegate" style="filled" fillcolor=red];
@@ -45,15 +46,11 @@ digraph delegateWithAnonymousObject_kt {
subgraph cluster_4 {
color=red
14 [label="Enter function <init>" style="filled" fillcolor=red];
15 [label="Delegated constructor call: super<R|DelegateProvider<IssueListView>|>()" style="filled" fillcolor=yellow];
16 [label="Exit function <init>" style="filled" fillcolor=red];
21 [label="Enter class IssueListView" style="filled" fillcolor=red];
22 [label="Exit class IssueListView" style="filled" fillcolor=red];
}
14 -> {15};
15 -> {16};
subgraph cluster_5 {
color=red
color=blue
17 [label="Enter function updateFrom" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
@@ -62,30 +59,25 @@ digraph delegateWithAnonymousObject_kt {
}
20 [label="Exit function updateFrom" style="filled" fillcolor=red];
}
subgraph cluster_7 {
color=blue
14 [label="Enter function <init>" style="filled" fillcolor=red];
15 [label="Delegated constructor call: super<R|DelegateProvider<IssueListView>|>()" style="filled" fillcolor=yellow];
16 [label="Exit function <init>" style="filled" fillcolor=red];
}
21 -> {22} [color=green];
22 -> {14 17} [color=green];
22 -> {14 17} [style=dashed];
14 -> {15};
15 -> {16};
17 -> {18};
18 -> {19};
19 -> {20};
subgraph cluster_7 {
color=red
21 [label="Enter class IssueListView" style="filled" fillcolor=red];
22 [label="Exit class IssueListView" style="filled" fillcolor=red];
}
21 -> {22} [color=green];
subgraph cluster_8 {
color=red
23 [label="Enter function <init>" style="filled" fillcolor=red];
24 [label="Delegated constructor call: super<R|DelegateProvider<IssuesListUserProfile>|>()" style="filled" fillcolor=yellow];
25 [label="Exit function <init>" style="filled" fillcolor=red];
}
23 -> {24};
24 -> {25};
subgraph cluster_9 {
color=red
54 [label="Enter function getter" style="filled" fillcolor=red];
subgraph cluster_10 {
subgraph cluster_9 {
color=blue
55 [label="Enter block"];
56 [label="Access variable D|/IssuesListUserProfile.issueListView|"];
@@ -107,10 +99,10 @@ digraph delegateWithAnonymousObject_kt {
60 -> {61} [style=dotted];
61 -> {62} [style=dotted];
subgraph cluster_11 {
subgraph cluster_10 {
color=red
63 [label="Enter function setter" style="filled" fillcolor=red];
subgraph cluster_12 {
subgraph cluster_11 {
color=blue
64 [label="Enter block"];
65 [label="Access variable D|/IssuesListUserProfile.issueListView|"];
@@ -129,22 +121,22 @@ digraph delegateWithAnonymousObject_kt {
68 -> {69};
69 -> {70};
subgraph cluster_13 {
subgraph cluster_12 {
color=red
79 [label="Enter class IssuesListUserProfile" style="filled" fillcolor=red];
80 [label="Part of class initialization"];
subgraph cluster_14 {
subgraph cluster_13 {
color=blue
71 [label="Enter property" style="filled" fillcolor=red];
72 [label="Postponed enter to lambda"];
subgraph cluster_15 {
subgraph cluster_14 {
color=blue
26 [label="Enter function anonymousFunction" style="filled" fillcolor=red];
subgraph cluster_16 {
subgraph cluster_15 {
color=blue
27 [label="Enter block"];
28 [label="Enter anonymous object"];
subgraph cluster_17 {
subgraph cluster_16 {
color=blue
33 [label="Enter class <anonymous object>" style="filled" fillcolor=red];
34 [label="Exit class <anonymous object>" style="filled" fillcolor=red];
@@ -155,10 +147,10 @@ digraph delegateWithAnonymousObject_kt {
}
32 [label="Exit function anonymousFunction" style="filled" fillcolor=red];
}
subgraph cluster_18 {
subgraph cluster_17 {
color=blue
45 [label="Enter function setValue" style="filled" fillcolor=red];
subgraph cluster_19 {
subgraph cluster_18 {
color=blue
46 [label="Enter block"];
47 [label="Function call: R|/IssueListView.IssueListView|()" style="filled" fillcolor=yellow];
@@ -170,10 +162,10 @@ digraph delegateWithAnonymousObject_kt {
}
53 [label="Exit function setValue" style="filled" fillcolor=red];
}
subgraph cluster_20 {
subgraph cluster_19 {
color=blue
38 [label="Enter function getValue" style="filled" fillcolor=red];
subgraph cluster_21 {
subgraph cluster_20 {
color=blue
39 [label="Enter block"];
40 [label="Function call: R|/IssueListView.IssueListView|()" style="filled" fillcolor=yellow];
@@ -183,7 +175,7 @@ digraph delegateWithAnonymousObject_kt {
}
44 [label="Exit function getValue" style="filled" fillcolor=red];
}
subgraph cluster_22 {
subgraph cluster_21 {
color=blue
35 [label="Enter function <init>" style="filled" fillcolor=red];
36 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
@@ -198,10 +190,18 @@ digraph delegateWithAnonymousObject_kt {
}
81 [label="Exit class IssuesListUserProfile" style="filled" fillcolor=red];
}
subgraph cluster_22 {
color=blue
23 [label="Enter function <init>" style="filled" fillcolor=red];
24 [label="Delegated constructor call: super<R|DelegateProvider<IssuesListUserProfile>|>()" style="filled" fillcolor=yellow];
25 [label="Exit function <init>" style="filled" fillcolor=red];
}
79 -> {80} [color=green];
80 -> {71} [color=green];
80 -> {81} [style=dotted];
80 -> {71} [style=dashed];
81 -> {23} [color=green];
81 -> {23} [style=dashed];
71 -> {72};
72 -> {26 73 74};
72 -> {26} [style=dashed];
@@ -219,12 +219,11 @@ digraph delegateWithAnonymousObject_kt {
28 -> {29} [color=red];
28 -> {33} [style=dashed];
29 -> {30};
29 -> {35 38 45} [color=green];
29 -> {35 38 45} [style=dashed];
30 -> {31};
31 -> {32};
33 -> {34} [color=green];
34 -> {29} [color=green];
34 -> {29 35 38 45} [color=green];
34 -> {35 38 45} [style=dashed];
35 -> {36};
36 -> {37};
38 -> {39};
@@ -243,5 +242,7 @@ digraph delegateWithAnonymousObject_kt {
50 -> {51} [style=dotted];
51 -> {52} [style=dotted];
52 -> {53} [style=dotted];
23 -> {24};
24 -> {25};
}
@@ -50,19 +50,10 @@ digraph plusAssignWithLambdaInRhs_kt {
15 -> {16} [style=dotted];
subgraph cluster_4 {
color=red
17 [label="Enter function <init>" style="filled" fillcolor=red];
18 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
19 [label="Exit function <init>" style="filled" fillcolor=red];
}
17 -> {18};
18 -> {19};
subgraph cluster_5 {
color=red
23 [label="Enter class A" style="filled" fillcolor=red];
24 [label="Part of class initialization"];
subgraph cluster_6 {
subgraph cluster_5 {
color=blue
20 [label="Enter property" style="filled" fillcolor=red];
21 [label="Access variable R|<local>/executor|"];
@@ -70,13 +61,23 @@ digraph plusAssignWithLambdaInRhs_kt {
}
25 [label="Exit class A" style="filled" fillcolor=red];
}
subgraph cluster_6 {
color=blue
17 [label="Enter function <init>" style="filled" fillcolor=red];
18 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
19 [label="Exit function <init>" style="filled" fillcolor=red];
}
23 -> {24} [color=green];
24 -> {20} [color=green];
24 -> {25} [style=dotted];
24 -> {20} [style=dashed];
25 -> {17} [color=green];
25 -> {17} [style=dashed];
20 -> {21};
21 -> {22};
22 -> {25} [color=green];
17 -> {18};
18 -> {19};
subgraph cluster_7 {
color=red
@@ -426,6 +426,7 @@ class ControlFlowGraphBuilder {
var prevInitPartNode: CFGNode<*>? = null
for (declaration in klass.declarations) {
val graph = when (declaration) {
// TODO: property accessors?
is FirProperty -> declaration.controlFlowGraphReference?.controlFlowGraph
is FirField -> declaration.controlFlowGraphReference?.controlFlowGraph
is FirAnonymousInitializer -> declaration.controlFlowGraphReference?.controlFlowGraph
@@ -446,6 +447,23 @@ class ControlFlowGraphBuilder {
addEdge(node, exitNode, preferredKind = EdgeKind.CfgForward)
if (prevInitPartNode != null) addEdge(prevInitPartNode!!, exitNode, preferredKind = EdgeKind.DeadForward)
exitNode.updateDeadStatus()
// TODO: Here we're assuming that the methods are called after the object is constructed, which is really not true
// (init blocks can call them). But FE1.0 did so too, hence the following code compiles and prints 0:
// val x: Int
// object {
// fun bar() = x
// init { x = bar() }
// }
// println(x)
for (declaration in klass.declarations) {
if (declaration !is FirFunction) continue
val graph = declaration.controlFlowGraphReference?.controlFlowGraph ?: continue
addEdge(exitNode, graph.enterNode, preferredKind = EdgeKind.CfgForward)
exitNode.addSubGraph(graph)
currentGraph.addSubGraph(graph)
}
return popGraph()
}
@@ -468,7 +486,6 @@ class ControlFlowGraphBuilder {
val node = createLocalClassExitNode(klass).also {
addNewSimpleNodeIfPossible(it)
}
visitLocalClassFunctions(klass, node)
addEdge(node, graph.enterNode, preferredKind = EdgeKind.CfgForward)
return node to graph
}
@@ -497,15 +514,6 @@ class ControlFlowGraphBuilder {
addEdge(graph.exitNode, exitNode, preferredKind = EdgeKind.CfgForward)
}
addEdge(enterNode, exitNode, preferredKind = EdgeKind.DfgForward)
// TODO: Here we're assuming that the methods are called after the object is constructed, which is really not true
// (init blocks can call them). But FE1.0 did so too, hence the following code compiles and prints 0:
// val x: Int
// object {
// fun bar() = x
// init { x = bar() }
// }
// println(x)
visitLocalClassFunctions(anonymousObject, exitNode)
lastNodes.push(exitNode)
return exitNode to graph
}
@@ -532,17 +540,6 @@ class ControlFlowGraphBuilder {
}
}
private fun visitLocalClassFunctions(klass: FirClass, node: CFGNodeWithSubgraphs<*>) {
klass.declarations.filterIsInstance<FirFunction>().forEach { function ->
val functionGraph = function.controlFlowGraphReference?.controlFlowGraph
if (functionGraph != null && functionGraph.owner == null) {
addEdge(node, functionGraph.enterNode, preferredKind = EdgeKind.CfgForward)
node.addSubGraph(functionGraph)
currentGraph.addSubGraph(functionGraph)
}
}
}
// ----------------------------------- Value parameters (and it's defaults) -----------------------------------
fun enterValueParameter(valueParameter: FirValueParameter): EnterDefaultArgumentsNode? {
@@ -248,7 +248,7 @@ class ClassEnterNode(owner: ControlFlowGraph, override val fir: FirClass, level:
}
@OptIn(CfgInternals::class)
class ClassExitNode(owner: ControlFlowGraph, override val fir: FirClass, level: Int, id: Int) : CFGNode<FirClass>(owner, level, id),
class ClassExitNode(owner: ControlFlowGraph, override val fir: FirClass, level: Int, id: Int) : CFGNodeWithSubgraphs<FirClass>(owner, level, id),
ExitNodeMarker {
init {
owner.exitNode = this
@@ -271,7 +271,7 @@ class AnonymousObjectEnterNode(owner: ControlFlowGraph, override val fir: FirAno
}
}
class AnonymousObjectExitNode(owner: ControlFlowGraph, override val fir: FirAnonymousObject, level: Int, id: Int) : CFGNodeWithSubgraphs<FirAnonymousObject>(owner, level, id) {
class AnonymousObjectExitNode(owner: ControlFlowGraph, override val fir: FirAnonymousObject, level: Int, id: Int) : CFGNode<FirAnonymousObject>(owner, level, id) {
override fun <R, D> accept(visitor: ControlFlowGraphVisitor<R, D>, data: D): R {
return visitor.visitAnonymousObjectExitNode(this, data)
}
+317 -301
View File
@@ -5,64 +5,57 @@ digraph kt44814_kt {
subgraph cluster_0 {
color=red
3 [label="Enter class FlyweightCapableTreeStructure [1]" style="filled" fillcolor=red];
4 [label="Exit class FlyweightCapableTreeStructure [1]" style="filled" fillcolor=red];
}
subgraph cluster_1 {
color=blue
0 [label="Enter function <init> [2]" style="filled" fillcolor=red];
1 [label="Delegated constructor call: super<R|kotlin/Any|>() [2]" style="filled" fillcolor=yellow];
2 [label="Exit function <init> [2]" style="filled" fillcolor=red];
}
3 -> {4} [color=green];
4 -> {0} [color=green];
4 -> {0} [style=dashed];
0 -> {1};
1 -> {2};
subgraph cluster_1 {
color=red
3 [label="Enter class FlyweightCapableTreeStructure [1]" style="filled" fillcolor=red];
4 [label="Exit class FlyweightCapableTreeStructure [1]" style="filled" fillcolor=red];
}
3 -> {4} [color=green];
subgraph cluster_2 {
color=red
5 [label="Enter function <init> [2]" style="filled" fillcolor=red];
6 [label="Delegated constructor call: super<R|kotlin/Any|>() [2]" style="filled" fillcolor=yellow];
7 [label="Exit function <init> [2]" style="filled" fillcolor=red];
}
5 -> {6};
6 -> {7};
subgraph cluster_3 {
color=red
8 [label="Enter class FirSourceElement [1]" style="filled" fillcolor=red];
9 [label="Exit class FirSourceElement [1]" style="filled" fillcolor=red];
}
subgraph cluster_3 {
color=blue
5 [label="Enter function <init> [2]" style="filled" fillcolor=red];
6 [label="Delegated constructor call: super<R|kotlin/Any|>() [2]" style="filled" fillcolor=yellow];
7 [label="Exit function <init> [2]" style="filled" fillcolor=red];
}
8 -> {9} [color=green];
9 -> {5} [color=green];
9 -> {5} [style=dashed];
5 -> {6};
6 -> {7};
subgraph cluster_4 {
color=red
10 [label="Enter function <init> [2]" style="filled" fillcolor=red];
11 [label="Delegated constructor call: super<R|FirSourceElement|>() [2]" style="filled" fillcolor=yellow];
12 [label="Exit function <init> [2]" style="filled" fillcolor=red];
}
10 -> {11};
11 -> {12};
subgraph cluster_5 {
color=red
22 [label="Enter class FirPsiSourceElement [1]" style="filled" fillcolor=red];
23 [label="Part of class initialization [1]"];
subgraph cluster_6 {
subgraph cluster_5 {
color=blue
13 [label="Enter property [2]" style="filled" fillcolor=red];
14 [label="Access variable R|<local>/psi| [2]"];
15 [label="Exit property [2]" style="filled" fillcolor=red];
}
24 [label="Part of class initialization [1]"];
subgraph cluster_7 {
subgraph cluster_6 {
color=blue
16 [label="Enter property [2]" style="filled" fillcolor=red];
17 [label="Access variable R|<local>/lighterASTNode| [2]"];
18 [label="Exit property [2]" style="filled" fillcolor=red];
}
25 [label="Part of class initialization [1]"];
subgraph cluster_8 {
subgraph cluster_7 {
color=blue
19 [label="Enter property [2]" style="filled" fillcolor=red];
20 [label="Access variable R|<local>/treeStructure| [2]"];
@@ -70,6 +63,12 @@ digraph kt44814_kt {
}
26 [label="Exit class FirPsiSourceElement [1]" style="filled" fillcolor=red];
}
subgraph cluster_8 {
color=blue
10 [label="Enter function <init> [2]" style="filled" fillcolor=red];
11 [label="Delegated constructor call: super<R|FirSourceElement|>() [2]" style="filled" fillcolor=yellow];
12 [label="Exit function <init> [2]" style="filled" fillcolor=red];
}
22 -> {23} [color=green];
23 -> {13} [color=green];
23 -> {24} [style=dotted];
@@ -80,6 +79,8 @@ digraph kt44814_kt {
25 -> {19} [color=green];
25 -> {26} [style=dotted];
25 -> {19} [style=dashed];
26 -> {10} [color=green];
26 -> {10} [style=dashed];
13 -> {14};
14 -> {15};
15 -> {24} [color=green];
@@ -89,28 +90,21 @@ digraph kt44814_kt {
19 -> {20};
20 -> {21};
21 -> {26} [color=green];
10 -> {11};
11 -> {12};
subgraph cluster_9 {
color=red
27 [label="Enter function <init> [2]" style="filled" fillcolor=red];
28 [label="Delegated constructor call: super<R|FirSourceElement|>() [2]" style="filled" fillcolor=yellow];
29 [label="Exit function <init> [2]" style="filled" fillcolor=red];
}
27 -> {28};
28 -> {29};
subgraph cluster_10 {
color=red
36 [label="Enter class FirLightSourceElement [1]" style="filled" fillcolor=red];
37 [label="Part of class initialization [1]"];
subgraph cluster_11 {
subgraph cluster_10 {
color=blue
30 [label="Enter property [2]" style="filled" fillcolor=red];
31 [label="Access variable R|<local>/lighterASTNode| [2]"];
32 [label="Exit property [2]" style="filled" fillcolor=red];
}
38 [label="Part of class initialization [1]"];
subgraph cluster_12 {
subgraph cluster_11 {
color=blue
33 [label="Enter property [2]" style="filled" fillcolor=red];
34 [label="Access variable R|<local>/treeStructure| [2]"];
@@ -118,6 +112,12 @@ digraph kt44814_kt {
}
39 [label="Exit class FirLightSourceElement [1]" style="filled" fillcolor=red];
}
subgraph cluster_12 {
color=blue
27 [label="Enter function <init> [2]" style="filled" fillcolor=red];
28 [label="Delegated constructor call: super<R|FirSourceElement|>() [2]" style="filled" fillcolor=yellow];
29 [label="Exit function <init> [2]" style="filled" fillcolor=red];
}
36 -> {37} [color=green];
37 -> {30} [color=green];
37 -> {38} [style=dotted];
@@ -125,67 +125,75 @@ digraph kt44814_kt {
38 -> {33} [color=green];
38 -> {39} [style=dotted];
38 -> {33} [style=dashed];
39 -> {27} [color=green];
39 -> {27} [style=dashed];
30 -> {31};
31 -> {32};
32 -> {38} [color=green];
33 -> {34};
34 -> {35};
35 -> {39} [color=green];
27 -> {28};
28 -> {29};
subgraph cluster_13 {
color=red
40 [label="Enter function <init> [2]" style="filled" fillcolor=red];
41 [label="Delegated constructor call: super<R|kotlin/Any|>() [2]" style="filled" fillcolor=yellow];
42 [label="Exit function <init> [2]" style="filled" fillcolor=red];
}
40 -> {41};
41 -> {42};
subgraph cluster_14 {
color=red
43 [label="Enter class PsiElement [1]" style="filled" fillcolor=red];
44 [label="Exit class PsiElement [1]" style="filled" fillcolor=red];
}
subgraph cluster_14 {
color=blue
40 [label="Enter function <init> [2]" style="filled" fillcolor=red];
41 [label="Delegated constructor call: super<R|kotlin/Any|>() [2]" style="filled" fillcolor=yellow];
42 [label="Exit function <init> [2]" style="filled" fillcolor=red];
}
43 -> {44} [color=green];
44 -> {40} [color=green];
44 -> {40} [style=dashed];
40 -> {41};
41 -> {42};
subgraph cluster_15 {
color=red
45 [label="Enter function <init> [2]" style="filled" fillcolor=red];
46 [label="Delegated constructor call: super<R|kotlin/Any|>() [2]" style="filled" fillcolor=yellow];
47 [label="Exit function <init> [2]" style="filled" fillcolor=red];
}
45 -> {46};
46 -> {47};
subgraph cluster_16 {
color=red
48 [label="Enter class ASTNode [1]" style="filled" fillcolor=red];
49 [label="Exit class ASTNode [1]" style="filled" fillcolor=red];
}
subgraph cluster_16 {
color=blue
45 [label="Enter function <init> [2]" style="filled" fillcolor=red];
46 [label="Delegated constructor call: super<R|kotlin/Any|>() [2]" style="filled" fillcolor=yellow];
47 [label="Exit function <init> [2]" style="filled" fillcolor=red];
}
48 -> {49} [color=green];
49 -> {45} [color=green];
49 -> {45} [style=dashed];
45 -> {46};
46 -> {47};
subgraph cluster_17 {
color=red
50 [label="Enter function <init> [2]" style="filled" fillcolor=red];
70 [label="Enter class LighterASTNode [1]" style="filled" fillcolor=red];
71 [label="Part of class initialization [1]"];
subgraph cluster_18 {
color=blue
53 [label="Enter default value of _children [3]" style="filled" fillcolor=red];
54 [label="Function call: R|kotlin/collections/emptyList|<R|LighterASTNode?|>() [3]" style="filled" fillcolor=yellow];
55 [label="Exit default value of _children [3]" style="filled" fillcolor=red];
56 [label="Enter property [2]" style="filled" fillcolor=red];
57 [label="Access variable R|<local>/_children| [2]"];
58 [label="Exit property [2]" style="filled" fillcolor=red];
}
51 [label="Delegated constructor call: super<R|kotlin/Any|>() [2]" style="filled" fillcolor=yellow];
52 [label="Exit function <init> [2]" style="filled" fillcolor=red];
72 [label="Part of class initialization [1]"];
subgraph cluster_19 {
color=blue
66 [label="Enter property [2]" style="filled" fillcolor=red];
67 [label="Access qualifier /TokenType [2]"];
68 [label="Access variable R|/TokenType.Companion.MODIFIER_LIST| [2]"];
69 [label="Exit property [2]" style="filled" fillcolor=red];
}
73 [label="Exit class LighterASTNode [1]" style="filled" fillcolor=red];
}
50 -> {51 53};
51 -> {52};
53 -> {54};
53 -> {53} [style=dashed];
54 -> {55};
subgraph cluster_19 {
color=red
subgraph cluster_20 {
color=blue
59 [label="Enter function getChildren [2]" style="filled" fillcolor=red];
subgraph cluster_20 {
subgraph cluster_21 {
color=blue
60 [label="Enter block [2]"];
61 [label="Access variable R|/LighterASTNode._children| [2]"];
@@ -195,33 +203,17 @@ digraph kt44814_kt {
}
65 [label="Exit function getChildren [2]" style="filled" fillcolor=red];
}
59 -> {60};
60 -> {61};
61 -> {62};
62 -> {65};
62 -> {63} [style=dotted];
63 -> {64} [style=dotted];
64 -> {65} [style=dotted];
subgraph cluster_21 {
color=red
70 [label="Enter class LighterASTNode [1]" style="filled" fillcolor=red];
71 [label="Part of class initialization [1]"];
subgraph cluster_22 {
color=blue
56 [label="Enter property [2]" style="filled" fillcolor=red];
57 [label="Access variable R|<local>/_children| [2]"];
58 [label="Exit property [2]" style="filled" fillcolor=red];
}
72 [label="Part of class initialization [1]"];
subgraph cluster_23 {
color=blue
66 [label="Enter property [2]" style="filled" fillcolor=red];
67 [label="Access qualifier /TokenType [2]"];
68 [label="Access variable R|/TokenType.Companion.MODIFIER_LIST| [2]"];
69 [label="Exit property [2]" style="filled" fillcolor=red];
}
73 [label="Exit class LighterASTNode [1]" style="filled" fillcolor=red];
subgraph cluster_22 {
color=blue
50 [label="Enter function <init> [2]" style="filled" fillcolor=red];
51 [label="Delegated constructor call: super<R|kotlin/Any|>() [2]" style="filled" fillcolor=yellow];
52 [label="Exit function <init> [2]" style="filled" fillcolor=red];
}
subgraph cluster_23 {
color=blue
53 [label="Enter default value of _children [3]" style="filled" fillcolor=red];
54 [label="Function call: R|kotlin/collections/emptyList|<R|LighterASTNode?|>() [3]" style="filled" fillcolor=yellow];
55 [label="Exit default value of _children [3]" style="filled" fillcolor=red];
}
70 -> {71} [color=green];
71 -> {56} [color=green];
@@ -230,6 +222,8 @@ digraph kt44814_kt {
72 -> {66} [color=green];
72 -> {73} [style=dotted];
72 -> {66} [style=dashed];
73 -> {50 59} [color=green];
73 -> {50 59} [style=dashed];
56 -> {57};
57 -> {58};
58 -> {72} [color=green];
@@ -237,30 +231,24 @@ digraph kt44814_kt {
67 -> {68};
68 -> {69};
69 -> {73} [color=green];
50 -> {51 53};
51 -> {52};
53 -> {54};
53 -> {53} [style=dashed];
54 -> {55};
59 -> {60};
60 -> {61};
61 -> {62};
62 -> {65};
62 -> {63} [style=dotted];
63 -> {64} [style=dotted];
64 -> {65} [style=dotted];
subgraph cluster_24 {
color=red
74 [label="Enter function <init> [2]" style="filled" fillcolor=red];
75 [label="Delegated constructor call: super<R|kotlin/Any|>() [2]" style="filled" fillcolor=yellow];
76 [label="Exit function <init> [2]" style="filled" fillcolor=red];
}
74 -> {75};
75 -> {76};
subgraph cluster_25 {
color=red
77 [label="Enter function <init> [3]" style="filled" fillcolor=red];
78 [label="Delegated constructor call: super<R|kotlin/Any|>() [3]" style="filled" fillcolor=yellow];
79 [label="Exit function <init> [3]" style="filled" fillcolor=red];
}
77 -> {78};
78 -> {79};
subgraph cluster_26 {
color=red
83 [label="Enter class Companion [2]" style="filled" fillcolor=red];
84 [label="Part of class initialization [2]"];
subgraph cluster_27 {
subgraph cluster_25 {
color=blue
80 [label="Enter property [3]" style="filled" fillcolor=red];
81 [label="Function call: R|/TokenType.TokenType|() [3]" style="filled" fillcolor=yellow];
@@ -268,67 +256,80 @@ digraph kt44814_kt {
}
85 [label="Exit class Companion [2]" style="filled" fillcolor=red];
}
subgraph cluster_26 {
color=blue
77 [label="Enter function <init> [3]" style="filled" fillcolor=red];
78 [label="Delegated constructor call: super<R|kotlin/Any|>() [3]" style="filled" fillcolor=yellow];
79 [label="Exit function <init> [3]" style="filled" fillcolor=red];
}
83 -> {84} [color=green];
84 -> {80} [color=green];
84 -> {85} [style=dotted];
84 -> {80} [style=dashed];
85 -> {77} [color=green];
85 -> {77} [style=dashed];
80 -> {81};
81 -> {82};
82 -> {85} [color=green];
77 -> {78};
78 -> {79};
subgraph cluster_28 {
subgraph cluster_27 {
color=red
86 [label="Enter class TokenType [1]" style="filled" fillcolor=red];
87 [label="Exit class TokenType [1]" style="filled" fillcolor=red];
}
subgraph cluster_28 {
color=blue
74 [label="Enter function <init> [2]" style="filled" fillcolor=red];
75 [label="Delegated constructor call: super<R|kotlin/Any|>() [2]" style="filled" fillcolor=yellow];
76 [label="Exit function <init> [2]" style="filled" fillcolor=red];
}
86 -> {87} [color=green];
87 -> {74} [color=green];
87 -> {74} [style=dashed];
74 -> {75};
75 -> {76};
subgraph cluster_29 {
color=red
88 [label="Enter function <init> [2]" style="filled" fillcolor=red];
89 [label="Delegated constructor call: super<R|kotlin/Any|>() [2]" style="filled" fillcolor=yellow];
90 [label="Exit function <init> [2]" style="filled" fillcolor=red];
}
88 -> {89};
89 -> {90};
subgraph cluster_30 {
color=red
91 [label="Enter class KtModifierKeywordToken [1]" style="filled" fillcolor=red];
92 [label="Exit class KtModifierKeywordToken [1]" style="filled" fillcolor=red];
}
subgraph cluster_30 {
color=blue
88 [label="Enter function <init> [2]" style="filled" fillcolor=red];
89 [label="Delegated constructor call: super<R|kotlin/Any|>() [2]" style="filled" fillcolor=yellow];
90 [label="Exit function <init> [2]" style="filled" fillcolor=red];
}
91 -> {92} [color=green];
92 -> {88} [color=green];
92 -> {88} [style=dashed];
88 -> {89};
89 -> {90};
subgraph cluster_31 {
color=red
93 [label="Enter function <init> [2]" style="filled" fillcolor=red];
94 [label="Delegated constructor call: super<R|PsiElement|>() [2]" style="filled" fillcolor=yellow];
95 [label="Exit function <init> [2]" style="filled" fillcolor=red];
}
93 -> {94};
94 -> {95};
subgraph cluster_32 {
color=red
96 [label="Enter class KtModifierList [1]" style="filled" fillcolor=red];
97 [label="Exit class KtModifierList [1]" style="filled" fillcolor=red];
}
subgraph cluster_32 {
color=blue
93 [label="Enter function <init> [2]" style="filled" fillcolor=red];
94 [label="Delegated constructor call: super<R|PsiElement|>() [2]" style="filled" fillcolor=yellow];
95 [label="Exit function <init> [2]" style="filled" fillcolor=red];
}
96 -> {97} [color=green];
97 -> {93} [color=green];
97 -> {93} [style=dashed];
93 -> {94};
94 -> {95};
subgraph cluster_33 {
color=red
98 [label="Enter function <init> [2]" style="filled" fillcolor=red];
99 [label="Delegated constructor call: super<R|PsiElement|>() [2]" style="filled" fillcolor=yellow];
100 [label="Exit function <init> [2]" style="filled" fillcolor=red];
}
98 -> {99};
99 -> {100};
subgraph cluster_34 {
color=red
104 [label="Enter class KtModifierListOwner [1]" style="filled" fillcolor=red];
105 [label="Part of class initialization [1]"];
subgraph cluster_35 {
subgraph cluster_34 {
color=blue
101 [label="Enter property [2]" style="filled" fillcolor=red];
102 [label="Function call: R|/KtModifierList.KtModifierList|() [2]" style="filled" fillcolor=yellow];
@@ -336,61 +337,50 @@ digraph kt44814_kt {
}
106 [label="Exit class KtModifierListOwner [1]" style="filled" fillcolor=red];
}
subgraph cluster_35 {
color=blue
98 [label="Enter function <init> [2]" style="filled" fillcolor=red];
99 [label="Delegated constructor call: super<R|PsiElement|>() [2]" style="filled" fillcolor=yellow];
100 [label="Exit function <init> [2]" style="filled" fillcolor=red];
}
104 -> {105} [color=green];
105 -> {101} [color=green];
105 -> {106} [style=dotted];
105 -> {101} [style=dashed];
106 -> {98} [color=green];
106 -> {98} [style=dashed];
101 -> {102};
102 -> {103};
103 -> {106} [color=green];
98 -> {99};
99 -> {100};
subgraph cluster_36 {
color=red
107 [label="Enter function <init> [2]" style="filled" fillcolor=red];
108 [label="Delegated constructor call: super<R|kotlin/Any|>() [2]" style="filled" fillcolor=yellow];
109 [label="Exit function <init> [2]" style="filled" fillcolor=red];
121 [label="Enter class FirPsiModifier [2]" style="filled" fillcolor=red];
122 [label="Exit class FirPsiModifier [2]" style="filled" fillcolor=red];
}
107 -> {108};
108 -> {109};
subgraph cluster_37 {
color=red
color=blue
116 [label="Enter function <init> [3]" style="filled" fillcolor=red];
117 [label="Access variable R|<local>/node| [4]"];
118 [label="Access variable R|<local>/token| [4]"];
119 [label="Delegated constructor call: super<R|FirModifier<ASTNode>|>(...) [3]" style="filled" fillcolor=yellow];
120 [label="Exit function <init> [3]" style="filled" fillcolor=red];
}
121 -> {122} [color=green];
122 -> {116} [color=green];
122 -> {116} [style=dashed];
116 -> {117};
117 -> {118};
118 -> {119};
119 -> {120};
subgraph cluster_38 {
color=red
121 [label="Enter class FirPsiModifier [2]" style="filled" fillcolor=red];
122 [label="Exit class FirPsiModifier [2]" style="filled" fillcolor=red];
}
121 -> {122} [color=green];
subgraph cluster_39 {
color=red
123 [label="Enter function <init> [3]" style="filled" fillcolor=red];
124 [label="Access variable R|<local>/node| [4]"];
125 [label="Access variable R|<local>/token| [4]"];
126 [label="Delegated constructor call: super<R|FirModifier<LighterASTNode>|>(...) [3]" style="filled" fillcolor=yellow];
127 [label="Exit function <init> [3]" style="filled" fillcolor=red];
}
123 -> {124};
124 -> {125};
125 -> {126};
126 -> {127};
subgraph cluster_40 {
color=red
131 [label="Enter class FirLightModifier [2]" style="filled" fillcolor=red];
132 [label="Part of class initialization [2]"];
subgraph cluster_41 {
subgraph cluster_39 {
color=blue
128 [label="Enter property [3]" style="filled" fillcolor=red];
129 [label="Access variable R|<local>/tree| [3]"];
@@ -398,26 +388,40 @@ digraph kt44814_kt {
}
133 [label="Exit class FirLightModifier [2]" style="filled" fillcolor=red];
}
subgraph cluster_40 {
color=blue
123 [label="Enter function <init> [3]" style="filled" fillcolor=red];
124 [label="Access variable R|<local>/node| [4]"];
125 [label="Access variable R|<local>/token| [4]"];
126 [label="Delegated constructor call: super<R|FirModifier<LighterASTNode>|>(...) [3]" style="filled" fillcolor=yellow];
127 [label="Exit function <init> [3]" style="filled" fillcolor=red];
}
131 -> {132} [color=green];
132 -> {128} [color=green];
132 -> {133} [style=dotted];
132 -> {128} [style=dashed];
133 -> {123} [color=green];
133 -> {123} [style=dashed];
128 -> {129};
129 -> {130};
130 -> {133} [color=green];
123 -> {124};
124 -> {125};
125 -> {126};
126 -> {127};
subgraph cluster_42 {
subgraph cluster_41 {
color=red
134 [label="Enter class FirModifier [1]" style="filled" fillcolor=red];
135 [label="Part of class initialization [1]"];
subgraph cluster_43 {
subgraph cluster_42 {
color=blue
110 [label="Enter property [2]" style="filled" fillcolor=red];
111 [label="Access variable R|<local>/node| [2]"];
112 [label="Exit property [2]" style="filled" fillcolor=red];
}
136 [label="Part of class initialization [1]"];
subgraph cluster_44 {
subgraph cluster_43 {
color=blue
113 [label="Enter property [2]" style="filled" fillcolor=red];
114 [label="Access variable R|<local>/token| [2]"];
@@ -425,6 +429,12 @@ digraph kt44814_kt {
}
137 [label="Exit class FirModifier [1]" style="filled" fillcolor=red];
}
subgraph cluster_44 {
color=blue
107 [label="Enter function <init> [2]" style="filled" fillcolor=red];
108 [label="Delegated constructor call: super<R|kotlin/Any|>() [2]" style="filled" fillcolor=yellow];
109 [label="Exit function <init> [2]" style="filled" fillcolor=red];
}
134 -> {135} [color=green];
135 -> {110} [color=green];
135 -> {136} [style=dotted];
@@ -432,36 +442,22 @@ digraph kt44814_kt {
136 -> {113} [color=green];
136 -> {137} [style=dotted];
136 -> {113} [style=dashed];
137 -> {107} [color=green];
137 -> {107} [style=dashed];
110 -> {111};
111 -> {112};
112 -> {136} [color=green];
113 -> {114};
114 -> {115};
115 -> {137} [color=green];
107 -> {108};
108 -> {109};
subgraph cluster_45 {
color=red
138 [label="Enter function <init> [2]" style="filled" fillcolor=red];
139 [label="Delegated constructor call: super<R|kotlin/Any|>() [2]" style="filled" fillcolor=yellow];
140 [label="Exit function <init> [2]" style="filled" fillcolor=red];
}
138 -> {139};
139 -> {140};
subgraph cluster_46 {
color=red
144 [label="Enter function <init> [3]" style="filled" fillcolor=red];
145 [label="Delegated constructor call: super<R|FirModifierList|>() [3]" style="filled" fillcolor=yellow];
146 [label="Exit function <init> [3]" style="filled" fillcolor=red];
}
144 -> {145};
145 -> {146};
subgraph cluster_47 {
color=red
150 [label="Enter class FirPsiModifierList [2]" style="filled" fillcolor=red];
151 [label="Part of class initialization [2]"];
subgraph cluster_48 {
subgraph cluster_46 {
color=blue
147 [label="Enter property [3]" style="filled" fillcolor=red];
148 [label="Access variable R|<local>/modifierList| [3]"];
@@ -469,35 +465,36 @@ digraph kt44814_kt {
}
152 [label="Exit class FirPsiModifierList [2]" style="filled" fillcolor=red];
}
subgraph cluster_47 {
color=blue
144 [label="Enter function <init> [3]" style="filled" fillcolor=red];
145 [label="Delegated constructor call: super<R|FirModifierList|>() [3]" style="filled" fillcolor=yellow];
146 [label="Exit function <init> [3]" style="filled" fillcolor=red];
}
150 -> {151} [color=green];
151 -> {147} [color=green];
151 -> {152} [style=dotted];
151 -> {147} [style=dashed];
152 -> {144} [color=green];
152 -> {144} [style=dashed];
147 -> {148};
148 -> {149};
149 -> {152} [color=green];
144 -> {145};
145 -> {146};
subgraph cluster_49 {
color=red
153 [label="Enter function <init> [3]" style="filled" fillcolor=red];
154 [label="Delegated constructor call: super<R|FirModifierList|>() [3]" style="filled" fillcolor=yellow];
155 [label="Exit function <init> [3]" style="filled" fillcolor=red];
}
153 -> {154};
154 -> {155};
subgraph cluster_50 {
subgraph cluster_48 {
color=red
162 [label="Enter class FirLightModifierList [2]" style="filled" fillcolor=red];
163 [label="Part of class initialization [2]"];
subgraph cluster_51 {
subgraph cluster_49 {
color=blue
156 [label="Enter property [3]" style="filled" fillcolor=red];
157 [label="Access variable R|<local>/modifierList| [3]"];
158 [label="Exit property [3]" style="filled" fillcolor=red];
}
164 [label="Part of class initialization [2]"];
subgraph cluster_52 {
subgraph cluster_50 {
color=blue
159 [label="Enter property [3]" style="filled" fillcolor=red];
160 [label="Access variable R|<local>/tree| [3]"];
@@ -505,6 +502,12 @@ digraph kt44814_kt {
}
165 [label="Exit class FirLightModifierList [2]" style="filled" fillcolor=red];
}
subgraph cluster_51 {
color=blue
153 [label="Enter function <init> [3]" style="filled" fillcolor=red];
154 [label="Delegated constructor call: super<R|FirModifierList|>() [3]" style="filled" fillcolor=yellow];
155 [label="Exit function <init> [3]" style="filled" fillcolor=red];
}
162 -> {163} [color=green];
163 -> {156} [color=green];
163 -> {164} [style=dotted];
@@ -512,33 +515,95 @@ digraph kt44814_kt {
164 -> {159} [color=green];
164 -> {165} [style=dotted];
164 -> {159} [style=dashed];
165 -> {153} [color=green];
165 -> {153} [style=dashed];
156 -> {157};
157 -> {158};
158 -> {164} [color=green];
159 -> {160};
160 -> {161};
161 -> {165} [color=green];
153 -> {154};
154 -> {155};
subgraph cluster_53 {
subgraph cluster_52 {
color=red
166 [label="Enter function <init> [3]" style="filled" fillcolor=red];
167 [label="Delegated constructor call: super<R|kotlin/Any|>() [3]" style="filled" fillcolor=yellow];
168 [label="Exit function <init> [3]" style="filled" fillcolor=red];
282 [label="Enter class Companion [2]" style="filled" fillcolor=red];
283 [label="Exit class Companion [2]" style="filled" fillcolor=red];
}
166 -> {167};
167 -> {168};
subgraph cluster_54 {
color=red
subgraph cluster_53 {
color=blue
249 [label="Enter function boxImpl [3]" style="filled" fillcolor=red];
subgraph cluster_54 {
color=blue
250 [label="Enter block [3]"];
251 [label="Function call: R|/LighterASTNode.LighterASTNode|() [6]" style="filled" fillcolor=yellow];
252 [label="Function call: R|kotlin/collections/listOf|<R|LighterASTNode|>(...) [5]" style="filled" fillcolor=yellow];
253 [label="Function call: R|/LighterASTNode.LighterASTNode|(...) [4]" style="filled" fillcolor=yellow];
254 [label="Function call: R|/FlyweightCapableTreeStructure.FlyweightCapableTreeStructure|() [4]" style="filled" fillcolor=yellow];
255 [label="Function call: R|/FirLightSourceElement.FirLightSourceElement|(...) [3]" style="filled" fillcolor=yellow];
256 [label="Variable declaration: lval sourceElement: R|FirSourceElement?| [3]"];
257 [label="Access variable R|<local>/sourceElement| [4]"];
258 [label="Function call: (this@R|/FirModifierList.Companion|, R|<local>/sourceElement|).R|/FirModifierList.Companion.getModifierList|() [3]" style="filled" fillcolor=yellow];
259 [label="Variable declaration: lval result: R|FirModifierList?| [3]"];
subgraph cluster_55 {
color=blue
260 [label="Enter when [3]"];
subgraph cluster_56 {
color=blue
261 [label="Enter when branch condition [4]"];
262 [label="Access variable R|<local>/result| [5]"];
263 [label="Type operator: (R|<local>/result| is R|FirModifierList.FirLightModifierList|) [5]"];
264 [label="Exit when branch condition [4]"];
}
subgraph cluster_57 {
color=blue
265 [label="Enter when branch condition else [5]"];
266 [label="Exit when branch condition [5]"];
}
267 [label="Enter when branch result [6]"];
subgraph cluster_58 {
color=blue
268 [label="Enter block [6]"];
269 [label="Const: String(Fail) [6]"];
270 [label="Exit block [6]"];
}
271 [label="Exit when branch result [5]"];
272 [label="Enter when branch result [5]"];
subgraph cluster_59 {
color=blue
273 [label="Enter block [5]"];
274 [label="Const: String(OK) [5]"];
275 [label="Exit block [5]"];
}
276 [label="Exit when branch result [4]"];
277 [label="Exit when [3]"];
}
278 [label="Jump: ^boxImpl when () {
(R|<local>/result| is R|FirModifierList.FirLightModifierList|) -> {
String(OK)
}
else -> {
String(Fail)
}
}
[3]"];
279 [label="Stub [3]" style="filled" fillcolor=gray];
280 [label="Exit block [3]" style="filled" fillcolor=gray];
}
281 [label="Exit function boxImpl [3]" style="filled" fillcolor=red];
}
subgraph cluster_60 {
color=blue
169 [label="Enter function getModifierList [3]" style="filled" fillcolor=red];
subgraph cluster_55 {
subgraph cluster_61 {
color=blue
170 [label="Enter block [3]"];
subgraph cluster_56 {
subgraph cluster_62 {
color=blue
171 [label="Enter when [3]"];
172 [label="Access variable this@R|/FirModifierList.Companion.getModifierList| [4]"];
subgraph cluster_57 {
subgraph cluster_63 {
color=blue
173 [label="Enter when branch condition [4]"];
174 [label="Exit $subj [5]"];
@@ -546,14 +611,14 @@ digraph kt44814_kt {
176 [label="Equality operator == [5]"];
177 [label="Exit when branch condition [4]"];
}
subgraph cluster_58 {
subgraph cluster_64 {
color=blue
178 [label="Enter when branch condition [5]"];
179 [label="Exit $subj [6]"];
180 [label="Type operator: ($subj$ is R|FirPsiSourceElement|) [6]"];
181 [label="Exit when branch condition [5]"];
}
subgraph cluster_59 {
subgraph cluster_65 {
color=blue
182 [label="Enter when branch condition [6]"];
183 [label="Exit $subj [7]"];
@@ -561,17 +626,17 @@ digraph kt44814_kt {
185 [label="Exit when branch condition [6]"];
}
186 [label="Enter when branch result [7]"];
subgraph cluster_60 {
subgraph cluster_66 {
color=blue
187 [label="Enter block [7]"];
188 [label="Access variable R|/FirLightSourceElement.lighterASTNode| [9]"];
189 [label="Access variable R|/FirLightSourceElement.treeStructure| [9]"];
190 [label="Function call: this@R|/FirModifierList.Companion.getModifierList|.R|/FirLightSourceElement.lighterASTNode|.R|/LighterASTNode.getChildren|(...) [8]" style="filled" fillcolor=yellow];
191 [label="Postponed enter to lambda [8]"];
subgraph cluster_61 {
subgraph cluster_67 {
color=blue
238 [label="Enter function anonymousFunction [9]" style="filled" fillcolor=red];
subgraph cluster_62 {
subgraph cluster_68 {
color=blue
239 [label="Enter block [9]"];
240 [label="Access variable R|<local>/it| [9]"];
@@ -602,7 +667,7 @@ digraph kt44814_kt {
}
206 [label="Exit when branch result [6]"];
207 [label="Enter when branch result [6]"];
subgraph cluster_63 {
subgraph cluster_69 {
color=blue
208 [label="Enter block [6]"];
209 [label="Access variable R|/FirPsiSourceElement.psi| [6]"];
@@ -611,10 +676,10 @@ digraph kt44814_kt {
212 [label="Access variable R|/KtModifierListOwner.modifierList| [6]"];
213 [label="Enter safe call [6]"];
214 [label="Postponed enter to lambda [7]"];
subgraph cluster_64 {
subgraph cluster_70 {
color=blue
232 [label="Enter function anonymousFunction [8]" style="filled" fillcolor=red];
subgraph cluster_65 {
subgraph cluster_71 {
color=blue
233 [label="Enter block [8]"];
234 [label="Access variable R|<local>/it| [9]"];
@@ -632,7 +697,7 @@ digraph kt44814_kt {
220 [label="Exit when branch result [5]"];
221 [label="Merge postponed lambda exits [6]"];
222 [label="Enter when branch result [5]"];
subgraph cluster_66 {
subgraph cluster_72 {
color=blue
223 [label="Enter block [5]"];
224 [label="Const: Null(null) [5]"];
@@ -665,6 +730,17 @@ digraph kt44814_kt {
}
231 [label="Exit function getModifierList [3]" style="filled" fillcolor=red];
}
subgraph cluster_73 {
color=blue
166 [label="Enter function <init> [3]" style="filled" fillcolor=red];
167 [label="Delegated constructor call: super<R|kotlin/Any|>() [3]" style="filled" fillcolor=yellow];
168 [label="Exit function <init> [3]" style="filled" fillcolor=red];
}
282 -> {283} [color=green];
283 -> {166 169 249} [color=green];
283 -> {166 169 249} [style=dashed];
166 -> {167};
167 -> {168};
169 -> {170};
170 -> {171};
171 -> {172};
@@ -751,69 +827,6 @@ digraph kt44814_kt {
246 -> {247};
247 -> {248};
248 -> {192};
subgraph cluster_67 {
color=red
249 [label="Enter function boxImpl [3]" style="filled" fillcolor=red];
subgraph cluster_68 {
color=blue
250 [label="Enter block [3]"];
251 [label="Function call: R|/LighterASTNode.LighterASTNode|() [6]" style="filled" fillcolor=yellow];
252 [label="Function call: R|kotlin/collections/listOf|<R|LighterASTNode|>(...) [5]" style="filled" fillcolor=yellow];
253 [label="Function call: R|/LighterASTNode.LighterASTNode|(...) [4]" style="filled" fillcolor=yellow];
254 [label="Function call: R|/FlyweightCapableTreeStructure.FlyweightCapableTreeStructure|() [4]" style="filled" fillcolor=yellow];
255 [label="Function call: R|/FirLightSourceElement.FirLightSourceElement|(...) [3]" style="filled" fillcolor=yellow];
256 [label="Variable declaration: lval sourceElement: R|FirSourceElement?| [3]"];
257 [label="Access variable R|<local>/sourceElement| [4]"];
258 [label="Function call: (this@R|/FirModifierList.Companion|, R|<local>/sourceElement|).R|/FirModifierList.Companion.getModifierList|() [3]" style="filled" fillcolor=yellow];
259 [label="Variable declaration: lval result: R|FirModifierList?| [3]"];
subgraph cluster_69 {
color=blue
260 [label="Enter when [3]"];
subgraph cluster_70 {
color=blue
261 [label="Enter when branch condition [4]"];
262 [label="Access variable R|<local>/result| [5]"];
263 [label="Type operator: (R|<local>/result| is R|FirModifierList.FirLightModifierList|) [5]"];
264 [label="Exit when branch condition [4]"];
}
subgraph cluster_71 {
color=blue
265 [label="Enter when branch condition else [5]"];
266 [label="Exit when branch condition [5]"];
}
267 [label="Enter when branch result [6]"];
subgraph cluster_72 {
color=blue
268 [label="Enter block [6]"];
269 [label="Const: String(Fail) [6]"];
270 [label="Exit block [6]"];
}
271 [label="Exit when branch result [5]"];
272 [label="Enter when branch result [5]"];
subgraph cluster_73 {
color=blue
273 [label="Enter block [5]"];
274 [label="Const: String(OK) [5]"];
275 [label="Exit block [5]"];
}
276 [label="Exit when branch result [4]"];
277 [label="Exit when [3]"];
}
278 [label="Jump: ^boxImpl when () {
(R|<local>/result| is R|FirModifierList.FirLightModifierList|) -> {
String(OK)
}
else -> {
String(Fail)
}
}
[3]"];
279 [label="Stub [3]" style="filled" fillcolor=gray];
280 [label="Exit block [3]" style="filled" fillcolor=gray];
}
281 [label="Exit function boxImpl [3]" style="filled" fillcolor=red];
}
249 -> {250};
250 -> {251};
251 -> {252};
@@ -849,17 +862,10 @@ digraph kt44814_kt {
280 -> {281} [style=dotted];
subgraph cluster_74 {
color=red
282 [label="Enter class Companion [2]" style="filled" fillcolor=red];
283 [label="Exit class Companion [2]" style="filled" fillcolor=red];
}
282 -> {283} [color=green];
subgraph cluster_75 {
color=red
284 [label="Enter class FirModifierList [1]" style="filled" fillcolor=red];
285 [label="Part of class initialization [1]"];
subgraph cluster_76 {
subgraph cluster_75 {
color=blue
141 [label="Enter property [2]" style="filled" fillcolor=red];
142 [label="Function call: R|kotlin/collections/emptyList|<R|FirModifier<*>|>() [2]" style="filled" fillcolor=yellow];
@@ -867,13 +873,23 @@ digraph kt44814_kt {
}
286 [label="Exit class FirModifierList [1]" style="filled" fillcolor=red];
}
subgraph cluster_76 {
color=blue
138 [label="Enter function <init> [2]" style="filled" fillcolor=red];
139 [label="Delegated constructor call: super<R|kotlin/Any|>() [2]" style="filled" fillcolor=yellow];
140 [label="Exit function <init> [2]" style="filled" fillcolor=red];
}
284 -> {285} [color=green];
285 -> {141} [color=green];
285 -> {286} [style=dotted];
285 -> {141} [style=dashed];
286 -> {138} [color=green];
286 -> {138} [style=dashed];
141 -> {142};
142 -> {143};
143 -> {286} [color=green];
138 -> {139};
139 -> {140};
subgraph cluster_77 {
color=red