[FIR] Create CFG for files to track top-level property initialization
In order to properly analyze top-level property initialization, a control-flow graph must be created for FirFiles. This change adds the foundation for the file CFG and updates body resolve to create the CFG. Checking the CFG for proper initialization is separated into a following change to ease code review. KT-56683
This commit is contained in:
+299
-292
@@ -5,36 +5,41 @@ digraph bangbang_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter class A" style="filled" fillcolor=red];
|
||||
1 [label="Exit class A" style="filled" fillcolor=red];
|
||||
0 [label="Enter file bangbang.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file bangbang.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
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 [label="Enter class A" style="filled" fillcolor=red];
|
||||
3 [label="Exit class A" style="filled" fillcolor=red];
|
||||
}
|
||||
2 -> {3};
|
||||
2 -> {3} [color=green];
|
||||
|
||||
subgraph cluster_2 {
|
||||
color=red
|
||||
4 [label="Enter function test_0" style="filled" fillcolor=red];
|
||||
subgraph cluster_3 {
|
||||
color=blue
|
||||
5 [label="Enter block"];
|
||||
6 [label="Access variable R|<local>/a|"];
|
||||
7 [label="Check not null: R|<local>/a|!!" style="filled" fillcolor=yellow];
|
||||
8 [label="Function call: R|<local>/a|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
9 [label="Access variable R|<local>/a|"];
|
||||
10 [label="Smart cast: R|<local>/a|"];
|
||||
11 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
12 [label="Exit block"];
|
||||
}
|
||||
13 [label="Exit function test_0" style="filled" fillcolor=red];
|
||||
4 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
5 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
}
|
||||
4 -> {5};
|
||||
5 -> {6};
|
||||
|
||||
subgraph cluster_3 {
|
||||
color=red
|
||||
6 [label="Enter function test_0" style="filled" fillcolor=red];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
7 [label="Enter block"];
|
||||
8 [label="Access variable R|<local>/a|"];
|
||||
9 [label="Check not null: R|<local>/a|!!" style="filled" fillcolor=yellow];
|
||||
10 [label="Function call: R|<local>/a|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
11 [label="Access variable R|<local>/a|"];
|
||||
12 [label="Smart cast: R|<local>/a|"];
|
||||
13 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
14 [label="Exit block"];
|
||||
}
|
||||
15 [label="Exit function test_0" style="filled" fillcolor=red];
|
||||
}
|
||||
6 -> {7};
|
||||
7 -> {8};
|
||||
8 -> {9};
|
||||
@@ -42,55 +47,55 @@ digraph bangbang_kt {
|
||||
10 -> {11};
|
||||
11 -> {12};
|
||||
12 -> {13};
|
||||
13 -> {14};
|
||||
14 -> {15};
|
||||
|
||||
subgraph cluster_4 {
|
||||
subgraph cluster_5 {
|
||||
color=red
|
||||
14 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_5 {
|
||||
16 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
15 [label="Enter block"];
|
||||
subgraph cluster_6 {
|
||||
17 [label="Enter block"];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
16 [label="Enter when"];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
17 [label="Enter when branch condition "];
|
||||
18 [label="Access variable R|<local>/a|"];
|
||||
19 [label="Check not null: R|<local>/a|!!" style="filled" fillcolor=yellow];
|
||||
20 [label="Function call: R|<local>/a|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
21 [label="Exit when branch condition"];
|
||||
}
|
||||
22 [label="Synthetic else branch"];
|
||||
23 [label="Enter when branch result"];
|
||||
18 [label="Enter when"];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
24 [label="Enter block"];
|
||||
25 [label="Access variable R|<local>/a|"];
|
||||
26 [label="Smart cast: R|<local>/a|"];
|
||||
27 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
28 [label="Exit block"];
|
||||
19 [label="Enter when branch condition "];
|
||||
20 [label="Access variable R|<local>/a|"];
|
||||
21 [label="Check not null: R|<local>/a|!!" style="filled" fillcolor=yellow];
|
||||
22 [label="Function call: R|<local>/a|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
23 [label="Exit when branch condition"];
|
||||
}
|
||||
29 [label="Exit when branch result"];
|
||||
30 [label="Exit when"];
|
||||
24 [label="Synthetic else branch"];
|
||||
25 [label="Enter when branch result"];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
26 [label="Enter block"];
|
||||
27 [label="Access variable R|<local>/a|"];
|
||||
28 [label="Smart cast: R|<local>/a|"];
|
||||
29 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
30 [label="Exit block"];
|
||||
}
|
||||
31 [label="Exit when branch result"];
|
||||
32 [label="Exit when"];
|
||||
}
|
||||
31 [label="Access variable R|<local>/a|"];
|
||||
32 [label="Smart cast: R|<local>/a|"];
|
||||
33 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
34 [label="Exit block"];
|
||||
33 [label="Access variable R|<local>/a|"];
|
||||
34 [label="Smart cast: R|<local>/a|"];
|
||||
35 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
36 [label="Exit block"];
|
||||
}
|
||||
35 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
37 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
}
|
||||
14 -> {15};
|
||||
15 -> {16};
|
||||
16 -> {17};
|
||||
17 -> {18};
|
||||
18 -> {19};
|
||||
19 -> {20};
|
||||
20 -> {21};
|
||||
21 -> {22 23};
|
||||
22 -> {30};
|
||||
23 -> {24};
|
||||
24 -> {25};
|
||||
21 -> {22};
|
||||
22 -> {23};
|
||||
23 -> {24 25};
|
||||
24 -> {32};
|
||||
25 -> {26};
|
||||
26 -> {27};
|
||||
27 -> {28};
|
||||
@@ -101,68 +106,68 @@ digraph bangbang_kt {
|
||||
32 -> {33};
|
||||
33 -> {34};
|
||||
34 -> {35};
|
||||
|
||||
subgraph cluster_9 {
|
||||
color=red
|
||||
36 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
37 [label="Enter block"];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
38 [label="Enter when"];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
39 [label="Enter when branch condition "];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
40 [label="Enter &&"];
|
||||
41 [label="Access variable R|<local>/a|"];
|
||||
42 [label="Check not null: R|<local>/a|!!" style="filled" fillcolor=yellow];
|
||||
43 [label="Function call: R|<local>/a|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
44 [label="Exit left part of &&"];
|
||||
45 [label="Enter right part of &&"];
|
||||
46 [label="Access variable R|<local>/b|"];
|
||||
47 [label="Exit &&"];
|
||||
}
|
||||
48 [label="Exit when branch condition"];
|
||||
}
|
||||
49 [label="Synthetic else branch"];
|
||||
50 [label="Enter when branch result"];
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
51 [label="Enter block"];
|
||||
52 [label="Access variable R|<local>/a|"];
|
||||
53 [label="Smart cast: R|<local>/a|"];
|
||||
54 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
55 [label="Exit block"];
|
||||
}
|
||||
56 [label="Exit when branch result"];
|
||||
57 [label="Exit when"];
|
||||
}
|
||||
58 [label="Access variable R|<local>/a|"];
|
||||
59 [label="Smart cast: R|<local>/a|"];
|
||||
60 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
61 [label="Exit block"];
|
||||
}
|
||||
62 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
}
|
||||
35 -> {36};
|
||||
36 -> {37};
|
||||
37 -> {38};
|
||||
|
||||
subgraph cluster_10 {
|
||||
color=red
|
||||
38 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
39 [label="Enter block"];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
40 [label="Enter when"];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
41 [label="Enter when branch condition "];
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
42 [label="Enter &&"];
|
||||
43 [label="Access variable R|<local>/a|"];
|
||||
44 [label="Check not null: R|<local>/a|!!" style="filled" fillcolor=yellow];
|
||||
45 [label="Function call: R|<local>/a|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
46 [label="Exit left part of &&"];
|
||||
47 [label="Enter right part of &&"];
|
||||
48 [label="Access variable R|<local>/b|"];
|
||||
49 [label="Exit &&"];
|
||||
}
|
||||
50 [label="Exit when branch condition"];
|
||||
}
|
||||
51 [label="Synthetic else branch"];
|
||||
52 [label="Enter when branch result"];
|
||||
subgraph cluster_15 {
|
||||
color=blue
|
||||
53 [label="Enter block"];
|
||||
54 [label="Access variable R|<local>/a|"];
|
||||
55 [label="Smart cast: R|<local>/a|"];
|
||||
56 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
57 [label="Exit block"];
|
||||
}
|
||||
58 [label="Exit when branch result"];
|
||||
59 [label="Exit when"];
|
||||
}
|
||||
60 [label="Access variable R|<local>/a|"];
|
||||
61 [label="Smart cast: R|<local>/a|"];
|
||||
62 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
63 [label="Exit block"];
|
||||
}
|
||||
64 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
}
|
||||
38 -> {39};
|
||||
39 -> {40};
|
||||
40 -> {41};
|
||||
41 -> {42};
|
||||
42 -> {43};
|
||||
43 -> {44};
|
||||
44 -> {45 47};
|
||||
44 -> {45};
|
||||
45 -> {46};
|
||||
46 -> {47};
|
||||
46 -> {47 49};
|
||||
47 -> {48};
|
||||
48 -> {49 50};
|
||||
49 -> {57};
|
||||
50 -> {51};
|
||||
51 -> {52};
|
||||
48 -> {49};
|
||||
49 -> {50};
|
||||
50 -> {51 52};
|
||||
51 -> {59};
|
||||
52 -> {53};
|
||||
53 -> {54};
|
||||
54 -> {55};
|
||||
@@ -173,67 +178,67 @@ digraph bangbang_kt {
|
||||
59 -> {60};
|
||||
60 -> {61};
|
||||
61 -> {62};
|
||||
|
||||
subgraph cluster_15 {
|
||||
color=red
|
||||
63 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_16 {
|
||||
color=blue
|
||||
64 [label="Enter block"];
|
||||
subgraph cluster_17 {
|
||||
color=blue
|
||||
65 [label="Enter when"];
|
||||
subgraph cluster_18 {
|
||||
color=blue
|
||||
66 [label="Enter when branch condition "];
|
||||
subgraph cluster_19 {
|
||||
color=blue
|
||||
67 [label="Enter &&"];
|
||||
68 [label="Access variable R|<local>/b|"];
|
||||
69 [label="Exit left part of &&"];
|
||||
70 [label="Enter right part of &&"];
|
||||
71 [label="Access variable R|<local>/a|"];
|
||||
72 [label="Check not null: R|<local>/a|!!" style="filled" fillcolor=yellow];
|
||||
73 [label="Function call: R|<local>/a|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
74 [label="Exit &&"];
|
||||
}
|
||||
75 [label="Exit when branch condition"];
|
||||
}
|
||||
76 [label="Synthetic else branch"];
|
||||
77 [label="Enter when branch result"];
|
||||
subgraph cluster_20 {
|
||||
color=blue
|
||||
78 [label="Enter block"];
|
||||
79 [label="Access variable R|<local>/a|"];
|
||||
80 [label="Smart cast: R|<local>/a|"];
|
||||
81 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
82 [label="Exit block"];
|
||||
}
|
||||
83 [label="Exit when branch result"];
|
||||
84 [label="Exit when"];
|
||||
}
|
||||
85 [label="Access variable R|<local>/a|"];
|
||||
86 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
87 [label="Exit block"];
|
||||
}
|
||||
88 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
}
|
||||
62 -> {63};
|
||||
63 -> {64};
|
||||
64 -> {65};
|
||||
|
||||
subgraph cluster_16 {
|
||||
color=red
|
||||
65 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_17 {
|
||||
color=blue
|
||||
66 [label="Enter block"];
|
||||
subgraph cluster_18 {
|
||||
color=blue
|
||||
67 [label="Enter when"];
|
||||
subgraph cluster_19 {
|
||||
color=blue
|
||||
68 [label="Enter when branch condition "];
|
||||
subgraph cluster_20 {
|
||||
color=blue
|
||||
69 [label="Enter &&"];
|
||||
70 [label="Access variable R|<local>/b|"];
|
||||
71 [label="Exit left part of &&"];
|
||||
72 [label="Enter right part of &&"];
|
||||
73 [label="Access variable R|<local>/a|"];
|
||||
74 [label="Check not null: R|<local>/a|!!" style="filled" fillcolor=yellow];
|
||||
75 [label="Function call: R|<local>/a|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
76 [label="Exit &&"];
|
||||
}
|
||||
77 [label="Exit when branch condition"];
|
||||
}
|
||||
78 [label="Synthetic else branch"];
|
||||
79 [label="Enter when branch result"];
|
||||
subgraph cluster_21 {
|
||||
color=blue
|
||||
80 [label="Enter block"];
|
||||
81 [label="Access variable R|<local>/a|"];
|
||||
82 [label="Smart cast: R|<local>/a|"];
|
||||
83 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
84 [label="Exit block"];
|
||||
}
|
||||
85 [label="Exit when branch result"];
|
||||
86 [label="Exit when"];
|
||||
}
|
||||
87 [label="Access variable R|<local>/a|"];
|
||||
88 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
89 [label="Exit block"];
|
||||
}
|
||||
90 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
}
|
||||
65 -> {66};
|
||||
66 -> {67};
|
||||
67 -> {68};
|
||||
68 -> {69};
|
||||
69 -> {70 74};
|
||||
69 -> {70};
|
||||
70 -> {71};
|
||||
71 -> {72};
|
||||
71 -> {72 76};
|
||||
72 -> {73};
|
||||
73 -> {74};
|
||||
74 -> {75};
|
||||
75 -> {76 77};
|
||||
76 -> {84};
|
||||
77 -> {78};
|
||||
78 -> {79};
|
||||
75 -> {76};
|
||||
76 -> {77};
|
||||
77 -> {78 79};
|
||||
78 -> {86};
|
||||
79 -> {80};
|
||||
80 -> {81};
|
||||
81 -> {82};
|
||||
@@ -243,68 +248,68 @@ digraph bangbang_kt {
|
||||
85 -> {86};
|
||||
86 -> {87};
|
||||
87 -> {88};
|
||||
|
||||
subgraph cluster_21 {
|
||||
color=red
|
||||
89 [label="Enter function test_4" style="filled" fillcolor=red];
|
||||
subgraph cluster_22 {
|
||||
color=blue
|
||||
90 [label="Enter block"];
|
||||
subgraph cluster_23 {
|
||||
color=blue
|
||||
91 [label="Enter when"];
|
||||
subgraph cluster_24 {
|
||||
color=blue
|
||||
92 [label="Enter when branch condition "];
|
||||
subgraph cluster_25 {
|
||||
color=blue
|
||||
93 [label="Enter ||"];
|
||||
94 [label="Access variable R|<local>/a|"];
|
||||
95 [label="Check not null: R|<local>/a|!!" style="filled" fillcolor=yellow];
|
||||
96 [label="Function call: R|<local>/a|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
97 [label="Exit left part of ||"];
|
||||
98 [label="Enter right part of ||"];
|
||||
99 [label="Access variable R|<local>/b|"];
|
||||
100 [label="Exit ||"];
|
||||
}
|
||||
101 [label="Exit when branch condition"];
|
||||
}
|
||||
102 [label="Synthetic else branch"];
|
||||
103 [label="Enter when branch result"];
|
||||
subgraph cluster_26 {
|
||||
color=blue
|
||||
104 [label="Enter block"];
|
||||
105 [label="Access variable R|<local>/a|"];
|
||||
106 [label="Smart cast: R|<local>/a|"];
|
||||
107 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
108 [label="Exit block"];
|
||||
}
|
||||
109 [label="Exit when branch result"];
|
||||
110 [label="Exit when"];
|
||||
}
|
||||
111 [label="Access variable R|<local>/a|"];
|
||||
112 [label="Smart cast: R|<local>/a|"];
|
||||
113 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
114 [label="Exit block"];
|
||||
}
|
||||
115 [label="Exit function test_4" style="filled" fillcolor=red];
|
||||
}
|
||||
88 -> {89};
|
||||
89 -> {90};
|
||||
90 -> {91};
|
||||
|
||||
subgraph cluster_22 {
|
||||
color=red
|
||||
91 [label="Enter function test_4" style="filled" fillcolor=red];
|
||||
subgraph cluster_23 {
|
||||
color=blue
|
||||
92 [label="Enter block"];
|
||||
subgraph cluster_24 {
|
||||
color=blue
|
||||
93 [label="Enter when"];
|
||||
subgraph cluster_25 {
|
||||
color=blue
|
||||
94 [label="Enter when branch condition "];
|
||||
subgraph cluster_26 {
|
||||
color=blue
|
||||
95 [label="Enter ||"];
|
||||
96 [label="Access variable R|<local>/a|"];
|
||||
97 [label="Check not null: R|<local>/a|!!" style="filled" fillcolor=yellow];
|
||||
98 [label="Function call: R|<local>/a|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
99 [label="Exit left part of ||"];
|
||||
100 [label="Enter right part of ||"];
|
||||
101 [label="Access variable R|<local>/b|"];
|
||||
102 [label="Exit ||"];
|
||||
}
|
||||
103 [label="Exit when branch condition"];
|
||||
}
|
||||
104 [label="Synthetic else branch"];
|
||||
105 [label="Enter when branch result"];
|
||||
subgraph cluster_27 {
|
||||
color=blue
|
||||
106 [label="Enter block"];
|
||||
107 [label="Access variable R|<local>/a|"];
|
||||
108 [label="Smart cast: R|<local>/a|"];
|
||||
109 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
110 [label="Exit block"];
|
||||
}
|
||||
111 [label="Exit when branch result"];
|
||||
112 [label="Exit when"];
|
||||
}
|
||||
113 [label="Access variable R|<local>/a|"];
|
||||
114 [label="Smart cast: R|<local>/a|"];
|
||||
115 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
116 [label="Exit block"];
|
||||
}
|
||||
117 [label="Exit function test_4" style="filled" fillcolor=red];
|
||||
}
|
||||
91 -> {92};
|
||||
92 -> {93};
|
||||
93 -> {94};
|
||||
94 -> {95};
|
||||
95 -> {96};
|
||||
96 -> {97};
|
||||
97 -> {98 100};
|
||||
97 -> {98};
|
||||
98 -> {99};
|
||||
99 -> {100};
|
||||
99 -> {100 102};
|
||||
100 -> {101};
|
||||
101 -> {102 103};
|
||||
102 -> {110};
|
||||
103 -> {104};
|
||||
104 -> {105};
|
||||
101 -> {102};
|
||||
102 -> {103};
|
||||
103 -> {104 105};
|
||||
104 -> {112};
|
||||
105 -> {106};
|
||||
106 -> {107};
|
||||
107 -> {108};
|
||||
@@ -315,66 +320,66 @@ digraph bangbang_kt {
|
||||
112 -> {113};
|
||||
113 -> {114};
|
||||
114 -> {115};
|
||||
|
||||
subgraph cluster_27 {
|
||||
color=red
|
||||
116 [label="Enter function test_5" style="filled" fillcolor=red];
|
||||
subgraph cluster_28 {
|
||||
color=blue
|
||||
117 [label="Enter block"];
|
||||
subgraph cluster_29 {
|
||||
color=blue
|
||||
118 [label="Enter when"];
|
||||
subgraph cluster_30 {
|
||||
color=blue
|
||||
119 [label="Enter when branch condition "];
|
||||
subgraph cluster_31 {
|
||||
color=blue
|
||||
120 [label="Enter ||"];
|
||||
121 [label="Access variable R|<local>/b|"];
|
||||
122 [label="Exit left part of ||"];
|
||||
123 [label="Enter right part of ||"];
|
||||
124 [label="Access variable R|<local>/a|"];
|
||||
125 [label="Check not null: R|<local>/a|!!" style="filled" fillcolor=yellow];
|
||||
126 [label="Function call: R|<local>/a|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
127 [label="Exit ||"];
|
||||
}
|
||||
128 [label="Exit when branch condition"];
|
||||
}
|
||||
129 [label="Synthetic else branch"];
|
||||
130 [label="Enter when branch result"];
|
||||
subgraph cluster_32 {
|
||||
color=blue
|
||||
131 [label="Enter block"];
|
||||
132 [label="Access variable R|<local>/a|"];
|
||||
133 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
134 [label="Exit block"];
|
||||
}
|
||||
135 [label="Exit when branch result"];
|
||||
136 [label="Exit when"];
|
||||
}
|
||||
137 [label="Access variable R|<local>/a|"];
|
||||
138 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
139 [label="Exit block"];
|
||||
}
|
||||
140 [label="Exit function test_5" style="filled" fillcolor=red];
|
||||
}
|
||||
115 -> {116};
|
||||
116 -> {117};
|
||||
117 -> {118};
|
||||
|
||||
subgraph cluster_28 {
|
||||
color=red
|
||||
118 [label="Enter function test_5" style="filled" fillcolor=red];
|
||||
subgraph cluster_29 {
|
||||
color=blue
|
||||
119 [label="Enter block"];
|
||||
subgraph cluster_30 {
|
||||
color=blue
|
||||
120 [label="Enter when"];
|
||||
subgraph cluster_31 {
|
||||
color=blue
|
||||
121 [label="Enter when branch condition "];
|
||||
subgraph cluster_32 {
|
||||
color=blue
|
||||
122 [label="Enter ||"];
|
||||
123 [label="Access variable R|<local>/b|"];
|
||||
124 [label="Exit left part of ||"];
|
||||
125 [label="Enter right part of ||"];
|
||||
126 [label="Access variable R|<local>/a|"];
|
||||
127 [label="Check not null: R|<local>/a|!!" style="filled" fillcolor=yellow];
|
||||
128 [label="Function call: R|<local>/a|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
129 [label="Exit ||"];
|
||||
}
|
||||
130 [label="Exit when branch condition"];
|
||||
}
|
||||
131 [label="Synthetic else branch"];
|
||||
132 [label="Enter when branch result"];
|
||||
subgraph cluster_33 {
|
||||
color=blue
|
||||
133 [label="Enter block"];
|
||||
134 [label="Access variable R|<local>/a|"];
|
||||
135 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
136 [label="Exit block"];
|
||||
}
|
||||
137 [label="Exit when branch result"];
|
||||
138 [label="Exit when"];
|
||||
}
|
||||
139 [label="Access variable R|<local>/a|"];
|
||||
140 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
141 [label="Exit block"];
|
||||
}
|
||||
142 [label="Exit function test_5" style="filled" fillcolor=red];
|
||||
}
|
||||
118 -> {119};
|
||||
119 -> {120};
|
||||
120 -> {121};
|
||||
121 -> {122};
|
||||
122 -> {123 127};
|
||||
122 -> {123};
|
||||
123 -> {124};
|
||||
124 -> {125};
|
||||
124 -> {125 129};
|
||||
125 -> {126};
|
||||
126 -> {127};
|
||||
127 -> {128};
|
||||
128 -> {129 130};
|
||||
129 -> {136};
|
||||
130 -> {131};
|
||||
131 -> {132};
|
||||
128 -> {129};
|
||||
129 -> {130};
|
||||
130 -> {131 132};
|
||||
131 -> {138};
|
||||
132 -> {133};
|
||||
133 -> {134};
|
||||
134 -> {135};
|
||||
@@ -383,45 +388,47 @@ digraph bangbang_kt {
|
||||
137 -> {138};
|
||||
138 -> {139};
|
||||
139 -> {140};
|
||||
|
||||
subgraph cluster_33 {
|
||||
color=red
|
||||
141 [label="Enter function test_6" style="filled" fillcolor=red];
|
||||
subgraph cluster_34 {
|
||||
color=blue
|
||||
142 [label="Enter block"];
|
||||
143 [label="Access variable R|<local>/x|"];
|
||||
144 [label="Check not null: R|<local>/x|!!" style="filled" fillcolor=yellow];
|
||||
145 [label="Function call: R|<local>/x|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
146 [label="Exit block"];
|
||||
}
|
||||
147 [label="Exit function test_6" style="filled" fillcolor=red];
|
||||
}
|
||||
140 -> {141};
|
||||
141 -> {142};
|
||||
142 -> {143};
|
||||
|
||||
subgraph cluster_34 {
|
||||
color=red
|
||||
143 [label="Enter function test_6" style="filled" fillcolor=red];
|
||||
subgraph cluster_35 {
|
||||
color=blue
|
||||
144 [label="Enter block"];
|
||||
145 [label="Access variable R|<local>/x|"];
|
||||
146 [label="Check not null: R|<local>/x|!!" style="filled" fillcolor=yellow];
|
||||
147 [label="Function call: R|<local>/x|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
148 [label="Exit block"];
|
||||
}
|
||||
149 [label="Exit function test_6" style="filled" fillcolor=red];
|
||||
}
|
||||
143 -> {144};
|
||||
144 -> {145};
|
||||
145 -> {146};
|
||||
146 -> {147};
|
||||
|
||||
subgraph cluster_35 {
|
||||
color=red
|
||||
148 [label="Enter function test_7" style="filled" fillcolor=red];
|
||||
subgraph cluster_36 {
|
||||
color=blue
|
||||
149 [label="Enter block"];
|
||||
150 [label="Access variable R|<local>/x|"];
|
||||
151 [label="Check not null: R|<local>/x|!!" style="filled" fillcolor=yellow];
|
||||
152 [label="Function call: R|<local>/x|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
153 [label="Exit block"];
|
||||
}
|
||||
154 [label="Exit function test_7" style="filled" fillcolor=red];
|
||||
}
|
||||
147 -> {148};
|
||||
148 -> {149};
|
||||
149 -> {150};
|
||||
|
||||
subgraph cluster_36 {
|
||||
color=red
|
||||
150 [label="Enter function test_7" style="filled" fillcolor=red];
|
||||
subgraph cluster_37 {
|
||||
color=blue
|
||||
151 [label="Enter block"];
|
||||
152 [label="Access variable R|<local>/x|"];
|
||||
153 [label="Check not null: R|<local>/x|!!" style="filled" fillcolor=yellow];
|
||||
154 [label="Function call: R|<local>/x|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
155 [label="Exit block"];
|
||||
}
|
||||
156 [label="Exit function test_7" style="filled" fillcolor=red];
|
||||
}
|
||||
150 -> {151};
|
||||
151 -> {152};
|
||||
152 -> {153};
|
||||
153 -> {154};
|
||||
154 -> {155};
|
||||
155 -> {156};
|
||||
|
||||
}
|
||||
|
||||
+691
-684
File diff suppressed because it is too large
Load Diff
+336
-329
@@ -5,69 +5,74 @@ digraph equalsToBoolean_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter class A" style="filled" fillcolor=red];
|
||||
1 [label="Exit class A" style="filled" fillcolor=red];
|
||||
0 [label="Enter file equalsToBoolean.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file equalsToBoolean.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
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 [label="Enter class A" style="filled" fillcolor=red];
|
||||
3 [label="Exit class A" style="filled" fillcolor=red];
|
||||
}
|
||||
2 -> {3};
|
||||
2 -> {3} [color=green];
|
||||
|
||||
subgraph cluster_2 {
|
||||
color=red
|
||||
4 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_3 {
|
||||
color=blue
|
||||
5 [label="Enter block"];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
6 [label="Enter when"];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
7 [label="Enter when branch condition "];
|
||||
8 [label="Access variable R|<local>/b|"];
|
||||
9 [label="Const: Boolean(true)"];
|
||||
10 [label="Equality operator =="];
|
||||
11 [label="Const: Boolean(true)"];
|
||||
12 [label="Equality operator =="];
|
||||
13 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
14 [label="Enter when branch condition else"];
|
||||
15 [label="Exit when branch condition"];
|
||||
}
|
||||
16 [label="Enter when branch result"];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
17 [label="Enter block"];
|
||||
18 [label="Access variable R|<local>/b|"];
|
||||
19 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
|
||||
20 [label="Exit block"];
|
||||
}
|
||||
21 [label="Exit when branch result"];
|
||||
22 [label="Enter when branch result"];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
23 [label="Enter block"];
|
||||
24 [label="Access variable R|<local>/b|"];
|
||||
25 [label="Smart cast: R|<local>/b|"];
|
||||
26 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
27 [label="Exit block"];
|
||||
}
|
||||
28 [label="Exit when branch result"];
|
||||
29 [label="Exit when"];
|
||||
}
|
||||
30 [label="Exit block"];
|
||||
}
|
||||
31 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
4 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
5 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
}
|
||||
4 -> {5};
|
||||
5 -> {6};
|
||||
|
||||
subgraph cluster_3 {
|
||||
color=red
|
||||
6 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
7 [label="Enter block"];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
8 [label="Enter when"];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
9 [label="Enter when branch condition "];
|
||||
10 [label="Access variable R|<local>/b|"];
|
||||
11 [label="Const: Boolean(true)"];
|
||||
12 [label="Equality operator =="];
|
||||
13 [label="Const: Boolean(true)"];
|
||||
14 [label="Equality operator =="];
|
||||
15 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
16 [label="Enter when branch condition else"];
|
||||
17 [label="Exit when branch condition"];
|
||||
}
|
||||
18 [label="Enter when branch result"];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
19 [label="Enter block"];
|
||||
20 [label="Access variable R|<local>/b|"];
|
||||
21 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
|
||||
22 [label="Exit block"];
|
||||
}
|
||||
23 [label="Exit when branch result"];
|
||||
24 [label="Enter when branch result"];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
25 [label="Enter block"];
|
||||
26 [label="Access variable R|<local>/b|"];
|
||||
27 [label="Smart cast: R|<local>/b|"];
|
||||
28 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
29 [label="Exit block"];
|
||||
}
|
||||
30 [label="Exit when branch result"];
|
||||
31 [label="Exit when"];
|
||||
}
|
||||
32 [label="Exit block"];
|
||||
}
|
||||
33 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
}
|
||||
6 -> {7};
|
||||
7 -> {8};
|
||||
8 -> {9};
|
||||
@@ -75,17 +80,17 @@ digraph equalsToBoolean_kt {
|
||||
10 -> {11};
|
||||
11 -> {12};
|
||||
12 -> {13};
|
||||
13 -> {14 22};
|
||||
13 -> {14};
|
||||
14 -> {15};
|
||||
15 -> {16};
|
||||
15 -> {16 24};
|
||||
16 -> {17};
|
||||
17 -> {18};
|
||||
18 -> {19};
|
||||
19 -> {20};
|
||||
20 -> {21};
|
||||
21 -> {29};
|
||||
21 -> {22};
|
||||
22 -> {23};
|
||||
23 -> {24};
|
||||
23 -> {31};
|
||||
24 -> {25};
|
||||
25 -> {26};
|
||||
26 -> {27};
|
||||
@@ -93,58 +98,58 @@ digraph equalsToBoolean_kt {
|
||||
28 -> {29};
|
||||
29 -> {30};
|
||||
30 -> {31};
|
||||
31 -> {32};
|
||||
32 -> {33};
|
||||
|
||||
subgraph cluster_9 {
|
||||
subgraph cluster_10 {
|
||||
color=red
|
||||
32 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_10 {
|
||||
34 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
33 [label="Enter block"];
|
||||
subgraph cluster_11 {
|
||||
35 [label="Enter block"];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
34 [label="Enter when"];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
35 [label="Enter when branch condition "];
|
||||
36 [label="Access variable R|<local>/b|"];
|
||||
37 [label="Const: Boolean(true)"];
|
||||
38 [label="Equality operator =="];
|
||||
39 [label="Const: Boolean(true)"];
|
||||
40 [label="Equality operator !="];
|
||||
41 [label="Exit when branch condition"];
|
||||
}
|
||||
36 [label="Enter when"];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
42 [label="Enter when branch condition else"];
|
||||
37 [label="Enter when branch condition "];
|
||||
38 [label="Access variable R|<local>/b|"];
|
||||
39 [label="Const: Boolean(true)"];
|
||||
40 [label="Equality operator =="];
|
||||
41 [label="Const: Boolean(true)"];
|
||||
42 [label="Equality operator !="];
|
||||
43 [label="Exit when branch condition"];
|
||||
}
|
||||
44 [label="Enter when branch result"];
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
45 [label="Enter block"];
|
||||
46 [label="Access variable R|<local>/b|"];
|
||||
47 [label="Smart cast: R|<local>/b|"];
|
||||
48 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
49 [label="Exit block"];
|
||||
44 [label="Enter when branch condition else"];
|
||||
45 [label="Exit when branch condition"];
|
||||
}
|
||||
50 [label="Exit when branch result"];
|
||||
51 [label="Enter when branch result"];
|
||||
46 [label="Enter when branch result"];
|
||||
subgraph cluster_15 {
|
||||
color=blue
|
||||
52 [label="Enter block"];
|
||||
53 [label="Access variable R|<local>/b|"];
|
||||
54 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
|
||||
55 [label="Exit block"];
|
||||
47 [label="Enter block"];
|
||||
48 [label="Access variable R|<local>/b|"];
|
||||
49 [label="Smart cast: R|<local>/b|"];
|
||||
50 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
51 [label="Exit block"];
|
||||
}
|
||||
56 [label="Exit when branch result"];
|
||||
57 [label="Exit when"];
|
||||
52 [label="Exit when branch result"];
|
||||
53 [label="Enter when branch result"];
|
||||
subgraph cluster_16 {
|
||||
color=blue
|
||||
54 [label="Enter block"];
|
||||
55 [label="Access variable R|<local>/b|"];
|
||||
56 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
|
||||
57 [label="Exit block"];
|
||||
}
|
||||
58 [label="Exit when branch result"];
|
||||
59 [label="Exit when"];
|
||||
}
|
||||
58 [label="Exit block"];
|
||||
60 [label="Exit block"];
|
||||
}
|
||||
59 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
61 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
}
|
||||
32 -> {33};
|
||||
33 -> {34};
|
||||
34 -> {35};
|
||||
35 -> {36};
|
||||
36 -> {37};
|
||||
@@ -152,76 +157,76 @@ digraph equalsToBoolean_kt {
|
||||
38 -> {39};
|
||||
39 -> {40};
|
||||
40 -> {41};
|
||||
41 -> {42 51};
|
||||
41 -> {42};
|
||||
42 -> {43};
|
||||
43 -> {44};
|
||||
43 -> {44 53};
|
||||
44 -> {45};
|
||||
45 -> {46};
|
||||
46 -> {47};
|
||||
47 -> {48};
|
||||
48 -> {49};
|
||||
49 -> {50};
|
||||
50 -> {57};
|
||||
50 -> {51};
|
||||
51 -> {52};
|
||||
52 -> {53};
|
||||
52 -> {59};
|
||||
53 -> {54};
|
||||
54 -> {55};
|
||||
55 -> {56};
|
||||
56 -> {57};
|
||||
57 -> {58};
|
||||
58 -> {59};
|
||||
59 -> {60};
|
||||
60 -> {61};
|
||||
|
||||
subgraph cluster_16 {
|
||||
subgraph cluster_17 {
|
||||
color=red
|
||||
60 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_17 {
|
||||
62 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_18 {
|
||||
color=blue
|
||||
61 [label="Enter block"];
|
||||
subgraph cluster_18 {
|
||||
63 [label="Enter block"];
|
||||
subgraph cluster_19 {
|
||||
color=blue
|
||||
62 [label="Enter when"];
|
||||
subgraph cluster_19 {
|
||||
color=blue
|
||||
63 [label="Enter when branch condition "];
|
||||
64 [label="Access variable R|<local>/b|"];
|
||||
65 [label="Const: Boolean(true)"];
|
||||
66 [label="Equality operator =="];
|
||||
67 [label="Const: Boolean(false)"];
|
||||
68 [label="Equality operator =="];
|
||||
69 [label="Exit when branch condition"];
|
||||
}
|
||||
64 [label="Enter when"];
|
||||
subgraph cluster_20 {
|
||||
color=blue
|
||||
70 [label="Enter when branch condition else"];
|
||||
65 [label="Enter when branch condition "];
|
||||
66 [label="Access variable R|<local>/b|"];
|
||||
67 [label="Const: Boolean(true)"];
|
||||
68 [label="Equality operator =="];
|
||||
69 [label="Const: Boolean(false)"];
|
||||
70 [label="Equality operator =="];
|
||||
71 [label="Exit when branch condition"];
|
||||
}
|
||||
72 [label="Enter when branch result"];
|
||||
subgraph cluster_21 {
|
||||
color=blue
|
||||
73 [label="Enter block"];
|
||||
74 [label="Access variable R|<local>/b|"];
|
||||
75 [label="Smart cast: R|<local>/b|"];
|
||||
76 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
77 [label="Exit block"];
|
||||
72 [label="Enter when branch condition else"];
|
||||
73 [label="Exit when branch condition"];
|
||||
}
|
||||
78 [label="Exit when branch result"];
|
||||
79 [label="Enter when branch result"];
|
||||
74 [label="Enter when branch result"];
|
||||
subgraph cluster_22 {
|
||||
color=blue
|
||||
80 [label="Enter block"];
|
||||
81 [label="Access variable R|<local>/b|"];
|
||||
82 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
|
||||
83 [label="Exit block"];
|
||||
75 [label="Enter block"];
|
||||
76 [label="Access variable R|<local>/b|"];
|
||||
77 [label="Smart cast: R|<local>/b|"];
|
||||
78 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
79 [label="Exit block"];
|
||||
}
|
||||
84 [label="Exit when branch result"];
|
||||
85 [label="Exit when"];
|
||||
80 [label="Exit when branch result"];
|
||||
81 [label="Enter when branch result"];
|
||||
subgraph cluster_23 {
|
||||
color=blue
|
||||
82 [label="Enter block"];
|
||||
83 [label="Access variable R|<local>/b|"];
|
||||
84 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
|
||||
85 [label="Exit block"];
|
||||
}
|
||||
86 [label="Exit when branch result"];
|
||||
87 [label="Exit when"];
|
||||
}
|
||||
86 [label="Exit block"];
|
||||
88 [label="Exit block"];
|
||||
}
|
||||
87 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
89 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
}
|
||||
60 -> {61};
|
||||
61 -> {62};
|
||||
62 -> {63};
|
||||
63 -> {64};
|
||||
64 -> {65};
|
||||
@@ -229,76 +234,76 @@ digraph equalsToBoolean_kt {
|
||||
66 -> {67};
|
||||
67 -> {68};
|
||||
68 -> {69};
|
||||
69 -> {70 79};
|
||||
69 -> {70};
|
||||
70 -> {71};
|
||||
71 -> {72};
|
||||
71 -> {72 81};
|
||||
72 -> {73};
|
||||
73 -> {74};
|
||||
74 -> {75};
|
||||
75 -> {76};
|
||||
76 -> {77};
|
||||
77 -> {78};
|
||||
78 -> {85};
|
||||
78 -> {79};
|
||||
79 -> {80};
|
||||
80 -> {81};
|
||||
80 -> {87};
|
||||
81 -> {82};
|
||||
82 -> {83};
|
||||
83 -> {84};
|
||||
84 -> {85};
|
||||
85 -> {86};
|
||||
86 -> {87};
|
||||
87 -> {88};
|
||||
88 -> {89};
|
||||
|
||||
subgraph cluster_23 {
|
||||
subgraph cluster_24 {
|
||||
color=red
|
||||
88 [label="Enter function test_4" style="filled" fillcolor=red];
|
||||
subgraph cluster_24 {
|
||||
90 [label="Enter function test_4" style="filled" fillcolor=red];
|
||||
subgraph cluster_25 {
|
||||
color=blue
|
||||
89 [label="Enter block"];
|
||||
subgraph cluster_25 {
|
||||
91 [label="Enter block"];
|
||||
subgraph cluster_26 {
|
||||
color=blue
|
||||
90 [label="Enter when"];
|
||||
subgraph cluster_26 {
|
||||
color=blue
|
||||
91 [label="Enter when branch condition "];
|
||||
92 [label="Access variable R|<local>/b|"];
|
||||
93 [label="Const: Boolean(true)"];
|
||||
94 [label="Equality operator =="];
|
||||
95 [label="Const: Boolean(false)"];
|
||||
96 [label="Equality operator !="];
|
||||
97 [label="Exit when branch condition"];
|
||||
}
|
||||
92 [label="Enter when"];
|
||||
subgraph cluster_27 {
|
||||
color=blue
|
||||
98 [label="Enter when branch condition else"];
|
||||
93 [label="Enter when branch condition "];
|
||||
94 [label="Access variable R|<local>/b|"];
|
||||
95 [label="Const: Boolean(true)"];
|
||||
96 [label="Equality operator =="];
|
||||
97 [label="Const: Boolean(false)"];
|
||||
98 [label="Equality operator !="];
|
||||
99 [label="Exit when branch condition"];
|
||||
}
|
||||
100 [label="Enter when branch result"];
|
||||
subgraph cluster_28 {
|
||||
color=blue
|
||||
101 [label="Enter block"];
|
||||
102 [label="Access variable R|<local>/b|"];
|
||||
103 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
|
||||
104 [label="Exit block"];
|
||||
100 [label="Enter when branch condition else"];
|
||||
101 [label="Exit when branch condition"];
|
||||
}
|
||||
105 [label="Exit when branch result"];
|
||||
106 [label="Enter when branch result"];
|
||||
102 [label="Enter when branch result"];
|
||||
subgraph cluster_29 {
|
||||
color=blue
|
||||
107 [label="Enter block"];
|
||||
108 [label="Access variable R|<local>/b|"];
|
||||
109 [label="Smart cast: R|<local>/b|"];
|
||||
110 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
111 [label="Exit block"];
|
||||
103 [label="Enter block"];
|
||||
104 [label="Access variable R|<local>/b|"];
|
||||
105 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
|
||||
106 [label="Exit block"];
|
||||
}
|
||||
112 [label="Exit when branch result"];
|
||||
113 [label="Exit when"];
|
||||
107 [label="Exit when branch result"];
|
||||
108 [label="Enter when branch result"];
|
||||
subgraph cluster_30 {
|
||||
color=blue
|
||||
109 [label="Enter block"];
|
||||
110 [label="Access variable R|<local>/b|"];
|
||||
111 [label="Smart cast: R|<local>/b|"];
|
||||
112 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
113 [label="Exit block"];
|
||||
}
|
||||
114 [label="Exit when branch result"];
|
||||
115 [label="Exit when"];
|
||||
}
|
||||
114 [label="Exit block"];
|
||||
116 [label="Exit block"];
|
||||
}
|
||||
115 [label="Exit function test_4" style="filled" fillcolor=red];
|
||||
117 [label="Exit function test_4" style="filled" fillcolor=red];
|
||||
}
|
||||
88 -> {89};
|
||||
89 -> {90};
|
||||
90 -> {91};
|
||||
91 -> {92};
|
||||
92 -> {93};
|
||||
@@ -306,17 +311,17 @@ digraph equalsToBoolean_kt {
|
||||
94 -> {95};
|
||||
95 -> {96};
|
||||
96 -> {97};
|
||||
97 -> {98 106};
|
||||
97 -> {98};
|
||||
98 -> {99};
|
||||
99 -> {100};
|
||||
99 -> {100 108};
|
||||
100 -> {101};
|
||||
101 -> {102};
|
||||
102 -> {103};
|
||||
103 -> {104};
|
||||
104 -> {105};
|
||||
105 -> {113};
|
||||
105 -> {106};
|
||||
106 -> {107};
|
||||
107 -> {108};
|
||||
107 -> {115};
|
||||
108 -> {109};
|
||||
109 -> {110};
|
||||
110 -> {111};
|
||||
@@ -324,58 +329,58 @@ digraph equalsToBoolean_kt {
|
||||
112 -> {113};
|
||||
113 -> {114};
|
||||
114 -> {115};
|
||||
115 -> {116};
|
||||
116 -> {117};
|
||||
|
||||
subgraph cluster_30 {
|
||||
subgraph cluster_31 {
|
||||
color=red
|
||||
116 [label="Enter function test_5" style="filled" fillcolor=red];
|
||||
subgraph cluster_31 {
|
||||
118 [label="Enter function test_5" style="filled" fillcolor=red];
|
||||
subgraph cluster_32 {
|
||||
color=blue
|
||||
117 [label="Enter block"];
|
||||
subgraph cluster_32 {
|
||||
119 [label="Enter block"];
|
||||
subgraph cluster_33 {
|
||||
color=blue
|
||||
118 [label="Enter when"];
|
||||
subgraph cluster_33 {
|
||||
color=blue
|
||||
119 [label="Enter when branch condition "];
|
||||
120 [label="Access variable R|<local>/b|"];
|
||||
121 [label="Const: Boolean(true)"];
|
||||
122 [label="Equality operator !="];
|
||||
123 [label="Const: Boolean(true)"];
|
||||
124 [label="Equality operator =="];
|
||||
125 [label="Exit when branch condition"];
|
||||
}
|
||||
120 [label="Enter when"];
|
||||
subgraph cluster_34 {
|
||||
color=blue
|
||||
126 [label="Enter when branch condition else"];
|
||||
121 [label="Enter when branch condition "];
|
||||
122 [label="Access variable R|<local>/b|"];
|
||||
123 [label="Const: Boolean(true)"];
|
||||
124 [label="Equality operator !="];
|
||||
125 [label="Const: Boolean(true)"];
|
||||
126 [label="Equality operator =="];
|
||||
127 [label="Exit when branch condition"];
|
||||
}
|
||||
128 [label="Enter when branch result"];
|
||||
subgraph cluster_35 {
|
||||
color=blue
|
||||
129 [label="Enter block"];
|
||||
130 [label="Access variable R|<local>/b|"];
|
||||
131 [label="Smart cast: R|<local>/b|"];
|
||||
132 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
133 [label="Exit block"];
|
||||
128 [label="Enter when branch condition else"];
|
||||
129 [label="Exit when branch condition"];
|
||||
}
|
||||
134 [label="Exit when branch result"];
|
||||
135 [label="Enter when branch result"];
|
||||
130 [label="Enter when branch result"];
|
||||
subgraph cluster_36 {
|
||||
color=blue
|
||||
136 [label="Enter block"];
|
||||
137 [label="Access variable R|<local>/b|"];
|
||||
138 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
|
||||
139 [label="Exit block"];
|
||||
131 [label="Enter block"];
|
||||
132 [label="Access variable R|<local>/b|"];
|
||||
133 [label="Smart cast: R|<local>/b|"];
|
||||
134 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
135 [label="Exit block"];
|
||||
}
|
||||
140 [label="Exit when branch result"];
|
||||
141 [label="Exit when"];
|
||||
136 [label="Exit when branch result"];
|
||||
137 [label="Enter when branch result"];
|
||||
subgraph cluster_37 {
|
||||
color=blue
|
||||
138 [label="Enter block"];
|
||||
139 [label="Access variable R|<local>/b|"];
|
||||
140 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
|
||||
141 [label="Exit block"];
|
||||
}
|
||||
142 [label="Exit when branch result"];
|
||||
143 [label="Exit when"];
|
||||
}
|
||||
142 [label="Exit block"];
|
||||
144 [label="Exit block"];
|
||||
}
|
||||
143 [label="Exit function test_5" style="filled" fillcolor=red];
|
||||
145 [label="Exit function test_5" style="filled" fillcolor=red];
|
||||
}
|
||||
116 -> {117};
|
||||
117 -> {118};
|
||||
118 -> {119};
|
||||
119 -> {120};
|
||||
120 -> {121};
|
||||
@@ -383,76 +388,76 @@ digraph equalsToBoolean_kt {
|
||||
122 -> {123};
|
||||
123 -> {124};
|
||||
124 -> {125};
|
||||
125 -> {126 135};
|
||||
125 -> {126};
|
||||
126 -> {127};
|
||||
127 -> {128};
|
||||
127 -> {128 137};
|
||||
128 -> {129};
|
||||
129 -> {130};
|
||||
130 -> {131};
|
||||
131 -> {132};
|
||||
132 -> {133};
|
||||
133 -> {134};
|
||||
134 -> {141};
|
||||
134 -> {135};
|
||||
135 -> {136};
|
||||
136 -> {137};
|
||||
136 -> {143};
|
||||
137 -> {138};
|
||||
138 -> {139};
|
||||
139 -> {140};
|
||||
140 -> {141};
|
||||
141 -> {142};
|
||||
142 -> {143};
|
||||
143 -> {144};
|
||||
144 -> {145};
|
||||
|
||||
subgraph cluster_37 {
|
||||
subgraph cluster_38 {
|
||||
color=red
|
||||
144 [label="Enter function test_6" style="filled" fillcolor=red];
|
||||
subgraph cluster_38 {
|
||||
146 [label="Enter function test_6" style="filled" fillcolor=red];
|
||||
subgraph cluster_39 {
|
||||
color=blue
|
||||
145 [label="Enter block"];
|
||||
subgraph cluster_39 {
|
||||
147 [label="Enter block"];
|
||||
subgraph cluster_40 {
|
||||
color=blue
|
||||
146 [label="Enter when"];
|
||||
subgraph cluster_40 {
|
||||
color=blue
|
||||
147 [label="Enter when branch condition "];
|
||||
148 [label="Access variable R|<local>/b|"];
|
||||
149 [label="Const: Boolean(true)"];
|
||||
150 [label="Equality operator !="];
|
||||
151 [label="Const: Boolean(true)"];
|
||||
152 [label="Equality operator !="];
|
||||
153 [label="Exit when branch condition"];
|
||||
}
|
||||
148 [label="Enter when"];
|
||||
subgraph cluster_41 {
|
||||
color=blue
|
||||
154 [label="Enter when branch condition else"];
|
||||
149 [label="Enter when branch condition "];
|
||||
150 [label="Access variable R|<local>/b|"];
|
||||
151 [label="Const: Boolean(true)"];
|
||||
152 [label="Equality operator !="];
|
||||
153 [label="Const: Boolean(true)"];
|
||||
154 [label="Equality operator !="];
|
||||
155 [label="Exit when branch condition"];
|
||||
}
|
||||
156 [label="Enter when branch result"];
|
||||
subgraph cluster_42 {
|
||||
color=blue
|
||||
157 [label="Enter block"];
|
||||
158 [label="Access variable R|<local>/b|"];
|
||||
159 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
|
||||
160 [label="Exit block"];
|
||||
156 [label="Enter when branch condition else"];
|
||||
157 [label="Exit when branch condition"];
|
||||
}
|
||||
161 [label="Exit when branch result"];
|
||||
162 [label="Enter when branch result"];
|
||||
158 [label="Enter when branch result"];
|
||||
subgraph cluster_43 {
|
||||
color=blue
|
||||
163 [label="Enter block"];
|
||||
164 [label="Access variable R|<local>/b|"];
|
||||
165 [label="Smart cast: R|<local>/b|"];
|
||||
166 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
167 [label="Exit block"];
|
||||
159 [label="Enter block"];
|
||||
160 [label="Access variable R|<local>/b|"];
|
||||
161 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
|
||||
162 [label="Exit block"];
|
||||
}
|
||||
168 [label="Exit when branch result"];
|
||||
169 [label="Exit when"];
|
||||
163 [label="Exit when branch result"];
|
||||
164 [label="Enter when branch result"];
|
||||
subgraph cluster_44 {
|
||||
color=blue
|
||||
165 [label="Enter block"];
|
||||
166 [label="Access variable R|<local>/b|"];
|
||||
167 [label="Smart cast: R|<local>/b|"];
|
||||
168 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
169 [label="Exit block"];
|
||||
}
|
||||
170 [label="Exit when branch result"];
|
||||
171 [label="Exit when"];
|
||||
}
|
||||
170 [label="Exit block"];
|
||||
172 [label="Exit block"];
|
||||
}
|
||||
171 [label="Exit function test_6" style="filled" fillcolor=red];
|
||||
173 [label="Exit function test_6" style="filled" fillcolor=red];
|
||||
}
|
||||
144 -> {145};
|
||||
145 -> {146};
|
||||
146 -> {147};
|
||||
147 -> {148};
|
||||
148 -> {149};
|
||||
@@ -460,17 +465,17 @@ digraph equalsToBoolean_kt {
|
||||
150 -> {151};
|
||||
151 -> {152};
|
||||
152 -> {153};
|
||||
153 -> {154 162};
|
||||
153 -> {154};
|
||||
154 -> {155};
|
||||
155 -> {156};
|
||||
155 -> {156 164};
|
||||
156 -> {157};
|
||||
157 -> {158};
|
||||
158 -> {159};
|
||||
159 -> {160};
|
||||
160 -> {161};
|
||||
161 -> {169};
|
||||
161 -> {162};
|
||||
162 -> {163};
|
||||
163 -> {164};
|
||||
163 -> {171};
|
||||
164 -> {165};
|
||||
165 -> {166};
|
||||
166 -> {167};
|
||||
@@ -478,58 +483,58 @@ digraph equalsToBoolean_kt {
|
||||
168 -> {169};
|
||||
169 -> {170};
|
||||
170 -> {171};
|
||||
171 -> {172};
|
||||
172 -> {173};
|
||||
|
||||
subgraph cluster_44 {
|
||||
subgraph cluster_45 {
|
||||
color=red
|
||||
172 [label="Enter function test_7" style="filled" fillcolor=red];
|
||||
subgraph cluster_45 {
|
||||
174 [label="Enter function test_7" style="filled" fillcolor=red];
|
||||
subgraph cluster_46 {
|
||||
color=blue
|
||||
173 [label="Enter block"];
|
||||
subgraph cluster_46 {
|
||||
175 [label="Enter block"];
|
||||
subgraph cluster_47 {
|
||||
color=blue
|
||||
174 [label="Enter when"];
|
||||
subgraph cluster_47 {
|
||||
color=blue
|
||||
175 [label="Enter when branch condition "];
|
||||
176 [label="Access variable R|<local>/b|"];
|
||||
177 [label="Const: Boolean(true)"];
|
||||
178 [label="Equality operator !="];
|
||||
179 [label="Const: Boolean(false)"];
|
||||
180 [label="Equality operator =="];
|
||||
181 [label="Exit when branch condition"];
|
||||
}
|
||||
176 [label="Enter when"];
|
||||
subgraph cluster_48 {
|
||||
color=blue
|
||||
182 [label="Enter when branch condition else"];
|
||||
177 [label="Enter when branch condition "];
|
||||
178 [label="Access variable R|<local>/b|"];
|
||||
179 [label="Const: Boolean(true)"];
|
||||
180 [label="Equality operator !="];
|
||||
181 [label="Const: Boolean(false)"];
|
||||
182 [label="Equality operator =="];
|
||||
183 [label="Exit when branch condition"];
|
||||
}
|
||||
184 [label="Enter when branch result"];
|
||||
subgraph cluster_49 {
|
||||
color=blue
|
||||
185 [label="Enter block"];
|
||||
186 [label="Access variable R|<local>/b|"];
|
||||
187 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
|
||||
188 [label="Exit block"];
|
||||
184 [label="Enter when branch condition else"];
|
||||
185 [label="Exit when branch condition"];
|
||||
}
|
||||
189 [label="Exit when branch result"];
|
||||
190 [label="Enter when branch result"];
|
||||
186 [label="Enter when branch result"];
|
||||
subgraph cluster_50 {
|
||||
color=blue
|
||||
191 [label="Enter block"];
|
||||
192 [label="Access variable R|<local>/b|"];
|
||||
193 [label="Smart cast: R|<local>/b|"];
|
||||
194 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
195 [label="Exit block"];
|
||||
187 [label="Enter block"];
|
||||
188 [label="Access variable R|<local>/b|"];
|
||||
189 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
|
||||
190 [label="Exit block"];
|
||||
}
|
||||
196 [label="Exit when branch result"];
|
||||
197 [label="Exit when"];
|
||||
191 [label="Exit when branch result"];
|
||||
192 [label="Enter when branch result"];
|
||||
subgraph cluster_51 {
|
||||
color=blue
|
||||
193 [label="Enter block"];
|
||||
194 [label="Access variable R|<local>/b|"];
|
||||
195 [label="Smart cast: R|<local>/b|"];
|
||||
196 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
197 [label="Exit block"];
|
||||
}
|
||||
198 [label="Exit when branch result"];
|
||||
199 [label="Exit when"];
|
||||
}
|
||||
198 [label="Exit block"];
|
||||
200 [label="Exit block"];
|
||||
}
|
||||
199 [label="Exit function test_7" style="filled" fillcolor=red];
|
||||
201 [label="Exit function test_7" style="filled" fillcolor=red];
|
||||
}
|
||||
172 -> {173};
|
||||
173 -> {174};
|
||||
174 -> {175};
|
||||
175 -> {176};
|
||||
176 -> {177};
|
||||
@@ -537,17 +542,17 @@ digraph equalsToBoolean_kt {
|
||||
178 -> {179};
|
||||
179 -> {180};
|
||||
180 -> {181};
|
||||
181 -> {182 190};
|
||||
181 -> {182};
|
||||
182 -> {183};
|
||||
183 -> {184};
|
||||
183 -> {184 192};
|
||||
184 -> {185};
|
||||
185 -> {186};
|
||||
186 -> {187};
|
||||
187 -> {188};
|
||||
188 -> {189};
|
||||
189 -> {197};
|
||||
189 -> {190};
|
||||
190 -> {191};
|
||||
191 -> {192};
|
||||
191 -> {199};
|
||||
192 -> {193};
|
||||
193 -> {194};
|
||||
194 -> {195};
|
||||
@@ -555,58 +560,58 @@ digraph equalsToBoolean_kt {
|
||||
196 -> {197};
|
||||
197 -> {198};
|
||||
198 -> {199};
|
||||
199 -> {200};
|
||||
200 -> {201};
|
||||
|
||||
subgraph cluster_51 {
|
||||
subgraph cluster_52 {
|
||||
color=red
|
||||
200 [label="Enter function test_8" style="filled" fillcolor=red];
|
||||
subgraph cluster_52 {
|
||||
202 [label="Enter function test_8" style="filled" fillcolor=red];
|
||||
subgraph cluster_53 {
|
||||
color=blue
|
||||
201 [label="Enter block"];
|
||||
subgraph cluster_53 {
|
||||
203 [label="Enter block"];
|
||||
subgraph cluster_54 {
|
||||
color=blue
|
||||
202 [label="Enter when"];
|
||||
subgraph cluster_54 {
|
||||
color=blue
|
||||
203 [label="Enter when branch condition "];
|
||||
204 [label="Access variable R|<local>/b|"];
|
||||
205 [label="Const: Boolean(true)"];
|
||||
206 [label="Equality operator !="];
|
||||
207 [label="Const: Boolean(false)"];
|
||||
208 [label="Equality operator !="];
|
||||
209 [label="Exit when branch condition"];
|
||||
}
|
||||
204 [label="Enter when"];
|
||||
subgraph cluster_55 {
|
||||
color=blue
|
||||
210 [label="Enter when branch condition else"];
|
||||
205 [label="Enter when branch condition "];
|
||||
206 [label="Access variable R|<local>/b|"];
|
||||
207 [label="Const: Boolean(true)"];
|
||||
208 [label="Equality operator !="];
|
||||
209 [label="Const: Boolean(false)"];
|
||||
210 [label="Equality operator !="];
|
||||
211 [label="Exit when branch condition"];
|
||||
}
|
||||
212 [label="Enter when branch result"];
|
||||
subgraph cluster_56 {
|
||||
color=blue
|
||||
213 [label="Enter block"];
|
||||
214 [label="Access variable R|<local>/b|"];
|
||||
215 [label="Smart cast: R|<local>/b|"];
|
||||
216 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
217 [label="Exit block"];
|
||||
212 [label="Enter when branch condition else"];
|
||||
213 [label="Exit when branch condition"];
|
||||
}
|
||||
218 [label="Exit when branch result"];
|
||||
219 [label="Enter when branch result"];
|
||||
214 [label="Enter when branch result"];
|
||||
subgraph cluster_57 {
|
||||
color=blue
|
||||
220 [label="Enter block"];
|
||||
221 [label="Access variable R|<local>/b|"];
|
||||
222 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
|
||||
223 [label="Exit block"];
|
||||
215 [label="Enter block"];
|
||||
216 [label="Access variable R|<local>/b|"];
|
||||
217 [label="Smart cast: R|<local>/b|"];
|
||||
218 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
219 [label="Exit block"];
|
||||
}
|
||||
224 [label="Exit when branch result"];
|
||||
225 [label="Exit when"];
|
||||
220 [label="Exit when branch result"];
|
||||
221 [label="Enter when branch result"];
|
||||
subgraph cluster_58 {
|
||||
color=blue
|
||||
222 [label="Enter block"];
|
||||
223 [label="Access variable R|<local>/b|"];
|
||||
224 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
|
||||
225 [label="Exit block"];
|
||||
}
|
||||
226 [label="Exit when branch result"];
|
||||
227 [label="Exit when"];
|
||||
}
|
||||
226 [label="Exit block"];
|
||||
228 [label="Exit block"];
|
||||
}
|
||||
227 [label="Exit function test_8" style="filled" fillcolor=red];
|
||||
229 [label="Exit function test_8" style="filled" fillcolor=red];
|
||||
}
|
||||
200 -> {201};
|
||||
201 -> {202};
|
||||
202 -> {203};
|
||||
203 -> {204};
|
||||
204 -> {205};
|
||||
@@ -614,23 +619,25 @@ digraph equalsToBoolean_kt {
|
||||
206 -> {207};
|
||||
207 -> {208};
|
||||
208 -> {209};
|
||||
209 -> {210 219};
|
||||
209 -> {210};
|
||||
210 -> {211};
|
||||
211 -> {212};
|
||||
211 -> {212 221};
|
||||
212 -> {213};
|
||||
213 -> {214};
|
||||
214 -> {215};
|
||||
215 -> {216};
|
||||
216 -> {217};
|
||||
217 -> {218};
|
||||
218 -> {225};
|
||||
218 -> {219};
|
||||
219 -> {220};
|
||||
220 -> {221};
|
||||
220 -> {227};
|
||||
221 -> {222};
|
||||
222 -> {223};
|
||||
223 -> {224};
|
||||
224 -> {225};
|
||||
225 -> {226};
|
||||
226 -> {227};
|
||||
227 -> {228};
|
||||
228 -> {229};
|
||||
|
||||
}
|
||||
|
||||
+376
-369
@@ -5,169 +5,174 @@ digraph jumpFromRhsOfOperator_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter class A" style="filled" fillcolor=red];
|
||||
1 [label="Exit class A" style="filled" fillcolor=red];
|
||||
0 [label="Enter file jumpFromRhsOfOperator.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file jumpFromRhsOfOperator.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
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 [label="Enter class A" style="filled" fillcolor=red];
|
||||
3 [label="Exit class A" style="filled" fillcolor=red];
|
||||
}
|
||||
2 -> {3};
|
||||
2 -> {3} [color=green];
|
||||
|
||||
subgraph cluster_2 {
|
||||
color=red
|
||||
4 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_3 {
|
||||
color=blue
|
||||
5 [label="Enter block"];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
6 [label="Enter ||"];
|
||||
7 [label="Access variable R|<local>/a|"];
|
||||
8 [label="Const: Null(null)"];
|
||||
9 [label="Equality operator !="];
|
||||
10 [label="Exit left part of ||"];
|
||||
11 [label="Enter right part of ||"];
|
||||
12 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
|
||||
13 [label="Throw: throw R|java/lang/Exception.Exception|()"];
|
||||
14 [label="Stub" style="filled" fillcolor=gray];
|
||||
15 [label="Exit ||"];
|
||||
}
|
||||
16 [label="Access variable R|<local>/a|"];
|
||||
17 [label="Smart cast: R|<local>/a|"];
|
||||
18 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
19 [label="Exit block"];
|
||||
}
|
||||
20 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
4 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
5 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
}
|
||||
4 -> {5};
|
||||
5 -> {6};
|
||||
|
||||
subgraph cluster_3 {
|
||||
color=red
|
||||
6 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
7 [label="Enter block"];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
8 [label="Enter ||"];
|
||||
9 [label="Access variable R|<local>/a|"];
|
||||
10 [label="Const: Null(null)"];
|
||||
11 [label="Equality operator !="];
|
||||
12 [label="Exit left part of ||"];
|
||||
13 [label="Enter right part of ||"];
|
||||
14 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
|
||||
15 [label="Throw: throw R|java/lang/Exception.Exception|()"];
|
||||
16 [label="Stub" style="filled" fillcolor=gray];
|
||||
17 [label="Exit ||"];
|
||||
}
|
||||
18 [label="Access variable R|<local>/a|"];
|
||||
19 [label="Smart cast: R|<local>/a|"];
|
||||
20 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
21 [label="Exit block"];
|
||||
}
|
||||
22 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
}
|
||||
6 -> {7};
|
||||
7 -> {8};
|
||||
8 -> {9};
|
||||
9 -> {10};
|
||||
10 -> {11 15};
|
||||
10 -> {11};
|
||||
11 -> {12};
|
||||
12 -> {13};
|
||||
13 -> {14} [style=dotted];
|
||||
14 -> {15} [style=dotted];
|
||||
15 -> {16};
|
||||
16 -> {17};
|
||||
12 -> {13 17};
|
||||
13 -> {14};
|
||||
14 -> {15};
|
||||
15 -> {16} [style=dotted];
|
||||
16 -> {17} [style=dotted];
|
||||
17 -> {18};
|
||||
18 -> {19};
|
||||
19 -> {20};
|
||||
|
||||
subgraph cluster_5 {
|
||||
color=red
|
||||
21 [label="Enter function teat_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
22 [label="Enter block"];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
23 [label="Enter &&"];
|
||||
24 [label="Access variable R|<local>/a|"];
|
||||
25 [label="Const: Null(null)"];
|
||||
26 [label="Equality operator =="];
|
||||
27 [label="Exit left part of &&"];
|
||||
28 [label="Enter right part of &&"];
|
||||
29 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
|
||||
30 [label="Throw: throw R|java/lang/Exception.Exception|()"];
|
||||
31 [label="Stub" style="filled" fillcolor=gray];
|
||||
32 [label="Exit &&"];
|
||||
}
|
||||
33 [label="Access variable R|<local>/a|"];
|
||||
34 [label="Smart cast: R|<local>/a|"];
|
||||
35 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
36 [label="Exit block"];
|
||||
}
|
||||
37 [label="Exit function teat_2" style="filled" fillcolor=red];
|
||||
}
|
||||
20 -> {21};
|
||||
21 -> {22};
|
||||
22 -> {23};
|
||||
|
||||
subgraph cluster_6 {
|
||||
color=red
|
||||
23 [label="Enter function teat_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
24 [label="Enter block"];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
25 [label="Enter &&"];
|
||||
26 [label="Access variable R|<local>/a|"];
|
||||
27 [label="Const: Null(null)"];
|
||||
28 [label="Equality operator =="];
|
||||
29 [label="Exit left part of &&"];
|
||||
30 [label="Enter right part of &&"];
|
||||
31 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
|
||||
32 [label="Throw: throw R|java/lang/Exception.Exception|()"];
|
||||
33 [label="Stub" style="filled" fillcolor=gray];
|
||||
34 [label="Exit &&"];
|
||||
}
|
||||
35 [label="Access variable R|<local>/a|"];
|
||||
36 [label="Smart cast: R|<local>/a|"];
|
||||
37 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
38 [label="Exit block"];
|
||||
}
|
||||
39 [label="Exit function teat_2" style="filled" fillcolor=red];
|
||||
}
|
||||
23 -> {24};
|
||||
24 -> {25};
|
||||
25 -> {26};
|
||||
26 -> {27};
|
||||
27 -> {28 32};
|
||||
27 -> {28};
|
||||
28 -> {29};
|
||||
29 -> {30};
|
||||
30 -> {31} [style=dotted];
|
||||
31 -> {32} [style=dotted];
|
||||
32 -> {33};
|
||||
33 -> {34};
|
||||
29 -> {30 34};
|
||||
30 -> {31};
|
||||
31 -> {32};
|
||||
32 -> {33} [style=dotted];
|
||||
33 -> {34} [style=dotted];
|
||||
34 -> {35};
|
||||
35 -> {36};
|
||||
36 -> {37};
|
||||
|
||||
subgraph cluster_8 {
|
||||
color=red
|
||||
38 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
39 [label="Enter block"];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
40 [label="Enter when"];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
41 [label="Enter when branch condition "];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
42 [label="Enter ||"];
|
||||
43 [label="Access variable R|<local>/a|"];
|
||||
44 [label="Const: Null(null)"];
|
||||
45 [label="Equality operator !="];
|
||||
46 [label="Exit left part of ||"];
|
||||
47 [label="Enter right part of ||"];
|
||||
48 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
|
||||
49 [label="Throw: throw R|java/lang/Exception.Exception|()"];
|
||||
50 [label="Stub" style="filled" fillcolor=gray];
|
||||
51 [label="Exit ||"];
|
||||
}
|
||||
52 [label="Exit when branch condition"];
|
||||
}
|
||||
53 [label="Synthetic else branch"];
|
||||
54 [label="Enter when branch result"];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
55 [label="Enter block"];
|
||||
56 [label="Access variable R|<local>/a|"];
|
||||
57 [label="Smart cast: R|<local>/a|"];
|
||||
58 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
59 [label="Exit block"];
|
||||
}
|
||||
60 [label="Exit when branch result"];
|
||||
61 [label="Exit when"];
|
||||
}
|
||||
62 [label="Access variable R|<local>/a|"];
|
||||
63 [label="Smart cast: R|<local>/a|"];
|
||||
64 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
65 [label="Exit block"];
|
||||
}
|
||||
66 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
}
|
||||
37 -> {38};
|
||||
38 -> {39};
|
||||
39 -> {40};
|
||||
|
||||
subgraph cluster_9 {
|
||||
color=red
|
||||
40 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
41 [label="Enter block"];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
42 [label="Enter when"];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
43 [label="Enter when branch condition "];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
44 [label="Enter ||"];
|
||||
45 [label="Access variable R|<local>/a|"];
|
||||
46 [label="Const: Null(null)"];
|
||||
47 [label="Equality operator !="];
|
||||
48 [label="Exit left part of ||"];
|
||||
49 [label="Enter right part of ||"];
|
||||
50 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
|
||||
51 [label="Throw: throw R|java/lang/Exception.Exception|()"];
|
||||
52 [label="Stub" style="filled" fillcolor=gray];
|
||||
53 [label="Exit ||"];
|
||||
}
|
||||
54 [label="Exit when branch condition"];
|
||||
}
|
||||
55 [label="Synthetic else branch"];
|
||||
56 [label="Enter when branch result"];
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
57 [label="Enter block"];
|
||||
58 [label="Access variable R|<local>/a|"];
|
||||
59 [label="Smart cast: R|<local>/a|"];
|
||||
60 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
61 [label="Exit block"];
|
||||
}
|
||||
62 [label="Exit when branch result"];
|
||||
63 [label="Exit when"];
|
||||
}
|
||||
64 [label="Access variable R|<local>/a|"];
|
||||
65 [label="Smart cast: R|<local>/a|"];
|
||||
66 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
67 [label="Exit block"];
|
||||
}
|
||||
68 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
}
|
||||
40 -> {41};
|
||||
41 -> {42};
|
||||
42 -> {43};
|
||||
43 -> {44};
|
||||
44 -> {45};
|
||||
45 -> {46};
|
||||
46 -> {47 51};
|
||||
46 -> {47};
|
||||
47 -> {48};
|
||||
48 -> {49};
|
||||
49 -> {50} [style=dotted];
|
||||
50 -> {51} [style=dotted];
|
||||
51 -> {52};
|
||||
52 -> {53 54};
|
||||
53 -> {61};
|
||||
54 -> {55};
|
||||
55 -> {56};
|
||||
48 -> {49 53};
|
||||
49 -> {50};
|
||||
50 -> {51};
|
||||
51 -> {52} [style=dotted];
|
||||
52 -> {53} [style=dotted];
|
||||
53 -> {54};
|
||||
54 -> {55 56};
|
||||
55 -> {63};
|
||||
56 -> {57};
|
||||
57 -> {58};
|
||||
58 -> {59};
|
||||
@@ -178,72 +183,72 @@ digraph jumpFromRhsOfOperator_kt {
|
||||
63 -> {64};
|
||||
64 -> {65};
|
||||
65 -> {66};
|
||||
|
||||
subgraph cluster_14 {
|
||||
color=red
|
||||
67 [label="Enter function test_4" style="filled" fillcolor=red];
|
||||
subgraph cluster_15 {
|
||||
color=blue
|
||||
68 [label="Enter block"];
|
||||
subgraph cluster_16 {
|
||||
color=blue
|
||||
69 [label="Enter when"];
|
||||
subgraph cluster_17 {
|
||||
color=blue
|
||||
70 [label="Enter when branch condition "];
|
||||
subgraph cluster_18 {
|
||||
color=blue
|
||||
71 [label="Enter &&"];
|
||||
72 [label="Access variable R|<local>/a|"];
|
||||
73 [label="Const: Null(null)"];
|
||||
74 [label="Equality operator =="];
|
||||
75 [label="Exit left part of &&"];
|
||||
76 [label="Enter right part of &&"];
|
||||
77 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
|
||||
78 [label="Throw: throw R|java/lang/Exception.Exception|()"];
|
||||
79 [label="Stub" style="filled" fillcolor=gray];
|
||||
80 [label="Exit &&"];
|
||||
}
|
||||
81 [label="Exit when branch condition"];
|
||||
}
|
||||
82 [label="Synthetic else branch"];
|
||||
83 [label="Enter when branch result"];
|
||||
subgraph cluster_19 {
|
||||
color=blue
|
||||
84 [label="Enter block"];
|
||||
85 [label="Access variable R|<local>/a|"];
|
||||
86 [label="Smart cast: R|<local>/a|"];
|
||||
87 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
88 [label="Exit block"];
|
||||
}
|
||||
89 [label="Exit when branch result"];
|
||||
90 [label="Exit when"];
|
||||
}
|
||||
91 [label="Access variable R|<local>/a|"];
|
||||
92 [label="Smart cast: R|<local>/a|"];
|
||||
93 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
94 [label="Exit block"];
|
||||
}
|
||||
95 [label="Exit function test_4" style="filled" fillcolor=red];
|
||||
}
|
||||
66 -> {67};
|
||||
67 -> {68};
|
||||
68 -> {69};
|
||||
|
||||
subgraph cluster_15 {
|
||||
color=red
|
||||
69 [label="Enter function test_4" style="filled" fillcolor=red];
|
||||
subgraph cluster_16 {
|
||||
color=blue
|
||||
70 [label="Enter block"];
|
||||
subgraph cluster_17 {
|
||||
color=blue
|
||||
71 [label="Enter when"];
|
||||
subgraph cluster_18 {
|
||||
color=blue
|
||||
72 [label="Enter when branch condition "];
|
||||
subgraph cluster_19 {
|
||||
color=blue
|
||||
73 [label="Enter &&"];
|
||||
74 [label="Access variable R|<local>/a|"];
|
||||
75 [label="Const: Null(null)"];
|
||||
76 [label="Equality operator =="];
|
||||
77 [label="Exit left part of &&"];
|
||||
78 [label="Enter right part of &&"];
|
||||
79 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
|
||||
80 [label="Throw: throw R|java/lang/Exception.Exception|()"];
|
||||
81 [label="Stub" style="filled" fillcolor=gray];
|
||||
82 [label="Exit &&"];
|
||||
}
|
||||
83 [label="Exit when branch condition"];
|
||||
}
|
||||
84 [label="Synthetic else branch"];
|
||||
85 [label="Enter when branch result"];
|
||||
subgraph cluster_20 {
|
||||
color=blue
|
||||
86 [label="Enter block"];
|
||||
87 [label="Access variable R|<local>/a|"];
|
||||
88 [label="Smart cast: R|<local>/a|"];
|
||||
89 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
90 [label="Exit block"];
|
||||
}
|
||||
91 [label="Exit when branch result"];
|
||||
92 [label="Exit when"];
|
||||
}
|
||||
93 [label="Access variable R|<local>/a|"];
|
||||
94 [label="Smart cast: R|<local>/a|"];
|
||||
95 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
96 [label="Exit block"];
|
||||
}
|
||||
97 [label="Exit function test_4" style="filled" fillcolor=red];
|
||||
}
|
||||
69 -> {70};
|
||||
70 -> {71};
|
||||
71 -> {72};
|
||||
72 -> {73};
|
||||
73 -> {74};
|
||||
74 -> {75};
|
||||
75 -> {76 80};
|
||||
75 -> {76};
|
||||
76 -> {77};
|
||||
77 -> {78};
|
||||
78 -> {79} [style=dotted];
|
||||
79 -> {80} [style=dotted];
|
||||
80 -> {81};
|
||||
81 -> {82 83};
|
||||
82 -> {90};
|
||||
83 -> {84};
|
||||
84 -> {85};
|
||||
77 -> {78 82};
|
||||
78 -> {79};
|
||||
79 -> {80};
|
||||
80 -> {81} [style=dotted];
|
||||
81 -> {82} [style=dotted];
|
||||
82 -> {83};
|
||||
83 -> {84 85};
|
||||
84 -> {92};
|
||||
85 -> {86};
|
||||
86 -> {87};
|
||||
87 -> {88};
|
||||
@@ -254,158 +259,158 @@ digraph jumpFromRhsOfOperator_kt {
|
||||
92 -> {93};
|
||||
93 -> {94};
|
||||
94 -> {95};
|
||||
|
||||
subgraph cluster_20 {
|
||||
color=red
|
||||
96 [label="Enter function test_5" style="filled" fillcolor=red];
|
||||
subgraph cluster_21 {
|
||||
color=blue
|
||||
97 [label="Enter block"];
|
||||
subgraph cluster_22 {
|
||||
color=blue
|
||||
98 [label="Enter ||"];
|
||||
99 [label="Access variable R|<local>/a|"];
|
||||
100 [label="Const: Null(null)"];
|
||||
101 [label="Equality operator =="];
|
||||
102 [label="Exit left part of ||"];
|
||||
103 [label="Enter right part of ||"];
|
||||
104 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
|
||||
105 [label="Throw: throw R|java/lang/Exception.Exception|()"];
|
||||
106 [label="Stub" style="filled" fillcolor=gray];
|
||||
107 [label="Exit ||"];
|
||||
}
|
||||
108 [label="Access variable R|<local>/a|"];
|
||||
109 [label="Smart cast: R|<local>/a|"];
|
||||
110 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
111 [label="Exit block"];
|
||||
}
|
||||
112 [label="Exit function test_5" style="filled" fillcolor=red];
|
||||
}
|
||||
95 -> {96};
|
||||
96 -> {97};
|
||||
97 -> {98};
|
||||
|
||||
subgraph cluster_21 {
|
||||
color=red
|
||||
98 [label="Enter function test_5" style="filled" fillcolor=red];
|
||||
subgraph cluster_22 {
|
||||
color=blue
|
||||
99 [label="Enter block"];
|
||||
subgraph cluster_23 {
|
||||
color=blue
|
||||
100 [label="Enter ||"];
|
||||
101 [label="Access variable R|<local>/a|"];
|
||||
102 [label="Const: Null(null)"];
|
||||
103 [label="Equality operator =="];
|
||||
104 [label="Exit left part of ||"];
|
||||
105 [label="Enter right part of ||"];
|
||||
106 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
|
||||
107 [label="Throw: throw R|java/lang/Exception.Exception|()"];
|
||||
108 [label="Stub" style="filled" fillcolor=gray];
|
||||
109 [label="Exit ||"];
|
||||
}
|
||||
110 [label="Access variable R|<local>/a|"];
|
||||
111 [label="Smart cast: R|<local>/a|"];
|
||||
112 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
113 [label="Exit block"];
|
||||
}
|
||||
114 [label="Exit function test_5" style="filled" fillcolor=red];
|
||||
}
|
||||
98 -> {99};
|
||||
99 -> {100};
|
||||
100 -> {101};
|
||||
101 -> {102};
|
||||
102 -> {103 107};
|
||||
102 -> {103};
|
||||
103 -> {104};
|
||||
104 -> {105};
|
||||
105 -> {106} [style=dotted];
|
||||
106 -> {107} [style=dotted];
|
||||
107 -> {108};
|
||||
108 -> {109};
|
||||
104 -> {105 109};
|
||||
105 -> {106};
|
||||
106 -> {107};
|
||||
107 -> {108} [style=dotted];
|
||||
108 -> {109} [style=dotted];
|
||||
109 -> {110};
|
||||
110 -> {111};
|
||||
111 -> {112};
|
||||
|
||||
subgraph cluster_23 {
|
||||
color=red
|
||||
113 [label="Enter function teat_6" style="filled" fillcolor=red];
|
||||
subgraph cluster_24 {
|
||||
color=blue
|
||||
114 [label="Enter block"];
|
||||
subgraph cluster_25 {
|
||||
color=blue
|
||||
115 [label="Enter &&"];
|
||||
116 [label="Access variable R|<local>/a|"];
|
||||
117 [label="Const: Null(null)"];
|
||||
118 [label="Equality operator !="];
|
||||
119 [label="Exit left part of &&"];
|
||||
120 [label="Enter right part of &&"];
|
||||
121 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
|
||||
122 [label="Throw: throw R|java/lang/Exception.Exception|()"];
|
||||
123 [label="Stub" style="filled" fillcolor=gray];
|
||||
124 [label="Exit &&"];
|
||||
}
|
||||
125 [label="Access variable R|<local>/a|"];
|
||||
126 [label="Smart cast: R|<local>/a|"];
|
||||
127 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
128 [label="Exit block"];
|
||||
}
|
||||
129 [label="Exit function teat_6" style="filled" fillcolor=red];
|
||||
}
|
||||
112 -> {113};
|
||||
113 -> {114};
|
||||
114 -> {115};
|
||||
|
||||
subgraph cluster_24 {
|
||||
color=red
|
||||
115 [label="Enter function teat_6" style="filled" fillcolor=red];
|
||||
subgraph cluster_25 {
|
||||
color=blue
|
||||
116 [label="Enter block"];
|
||||
subgraph cluster_26 {
|
||||
color=blue
|
||||
117 [label="Enter &&"];
|
||||
118 [label="Access variable R|<local>/a|"];
|
||||
119 [label="Const: Null(null)"];
|
||||
120 [label="Equality operator !="];
|
||||
121 [label="Exit left part of &&"];
|
||||
122 [label="Enter right part of &&"];
|
||||
123 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
|
||||
124 [label="Throw: throw R|java/lang/Exception.Exception|()"];
|
||||
125 [label="Stub" style="filled" fillcolor=gray];
|
||||
126 [label="Exit &&"];
|
||||
}
|
||||
127 [label="Access variable R|<local>/a|"];
|
||||
128 [label="Smart cast: R|<local>/a|"];
|
||||
129 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
130 [label="Exit block"];
|
||||
}
|
||||
131 [label="Exit function teat_6" style="filled" fillcolor=red];
|
||||
}
|
||||
115 -> {116};
|
||||
116 -> {117};
|
||||
117 -> {118};
|
||||
118 -> {119};
|
||||
119 -> {120 124};
|
||||
119 -> {120};
|
||||
120 -> {121};
|
||||
121 -> {122};
|
||||
122 -> {123} [style=dotted];
|
||||
123 -> {124} [style=dotted];
|
||||
124 -> {125};
|
||||
125 -> {126};
|
||||
121 -> {122 126};
|
||||
122 -> {123};
|
||||
123 -> {124};
|
||||
124 -> {125} [style=dotted];
|
||||
125 -> {126} [style=dotted];
|
||||
126 -> {127};
|
||||
127 -> {128};
|
||||
128 -> {129};
|
||||
|
||||
subgraph cluster_26 {
|
||||
color=red
|
||||
130 [label="Enter function test_7" style="filled" fillcolor=red];
|
||||
subgraph cluster_27 {
|
||||
color=blue
|
||||
131 [label="Enter block"];
|
||||
subgraph cluster_28 {
|
||||
color=blue
|
||||
132 [label="Enter when"];
|
||||
subgraph cluster_29 {
|
||||
color=blue
|
||||
133 [label="Enter when branch condition "];
|
||||
subgraph cluster_30 {
|
||||
color=blue
|
||||
134 [label="Enter ||"];
|
||||
135 [label="Access variable R|<local>/a|"];
|
||||
136 [label="Const: Null(null)"];
|
||||
137 [label="Equality operator =="];
|
||||
138 [label="Exit left part of ||"];
|
||||
139 [label="Enter right part of ||"];
|
||||
140 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
|
||||
141 [label="Throw: throw R|java/lang/Exception.Exception|()"];
|
||||
142 [label="Stub" style="filled" fillcolor=gray];
|
||||
143 [label="Exit ||"];
|
||||
}
|
||||
144 [label="Exit when branch condition"];
|
||||
}
|
||||
145 [label="Synthetic else branch"];
|
||||
146 [label="Enter when branch result"];
|
||||
subgraph cluster_31 {
|
||||
color=blue
|
||||
147 [label="Enter block"];
|
||||
148 [label="Access variable R|<local>/a|"];
|
||||
149 [label="Smart cast: R|<local>/a|"];
|
||||
150 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
151 [label="Exit block"];
|
||||
}
|
||||
152 [label="Exit when branch result"];
|
||||
153 [label="Exit when"];
|
||||
}
|
||||
154 [label="Access variable R|<local>/a|"];
|
||||
155 [label="Smart cast: R|<local>/a|"];
|
||||
156 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
157 [label="Exit block"];
|
||||
}
|
||||
158 [label="Exit function test_7" style="filled" fillcolor=red];
|
||||
}
|
||||
129 -> {130};
|
||||
130 -> {131};
|
||||
131 -> {132};
|
||||
|
||||
subgraph cluster_27 {
|
||||
color=red
|
||||
132 [label="Enter function test_7" style="filled" fillcolor=red];
|
||||
subgraph cluster_28 {
|
||||
color=blue
|
||||
133 [label="Enter block"];
|
||||
subgraph cluster_29 {
|
||||
color=blue
|
||||
134 [label="Enter when"];
|
||||
subgraph cluster_30 {
|
||||
color=blue
|
||||
135 [label="Enter when branch condition "];
|
||||
subgraph cluster_31 {
|
||||
color=blue
|
||||
136 [label="Enter ||"];
|
||||
137 [label="Access variable R|<local>/a|"];
|
||||
138 [label="Const: Null(null)"];
|
||||
139 [label="Equality operator =="];
|
||||
140 [label="Exit left part of ||"];
|
||||
141 [label="Enter right part of ||"];
|
||||
142 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
|
||||
143 [label="Throw: throw R|java/lang/Exception.Exception|()"];
|
||||
144 [label="Stub" style="filled" fillcolor=gray];
|
||||
145 [label="Exit ||"];
|
||||
}
|
||||
146 [label="Exit when branch condition"];
|
||||
}
|
||||
147 [label="Synthetic else branch"];
|
||||
148 [label="Enter when branch result"];
|
||||
subgraph cluster_32 {
|
||||
color=blue
|
||||
149 [label="Enter block"];
|
||||
150 [label="Access variable R|<local>/a|"];
|
||||
151 [label="Smart cast: R|<local>/a|"];
|
||||
152 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
153 [label="Exit block"];
|
||||
}
|
||||
154 [label="Exit when branch result"];
|
||||
155 [label="Exit when"];
|
||||
}
|
||||
156 [label="Access variable R|<local>/a|"];
|
||||
157 [label="Smart cast: R|<local>/a|"];
|
||||
158 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
159 [label="Exit block"];
|
||||
}
|
||||
160 [label="Exit function test_7" style="filled" fillcolor=red];
|
||||
}
|
||||
132 -> {133};
|
||||
133 -> {134};
|
||||
134 -> {135};
|
||||
135 -> {136};
|
||||
136 -> {137};
|
||||
137 -> {138};
|
||||
138 -> {139 143};
|
||||
138 -> {139};
|
||||
139 -> {140};
|
||||
140 -> {141};
|
||||
141 -> {142} [style=dotted];
|
||||
142 -> {143} [style=dotted];
|
||||
143 -> {144};
|
||||
144 -> {145 146};
|
||||
145 -> {153};
|
||||
146 -> {147};
|
||||
147 -> {148};
|
||||
140 -> {141 145};
|
||||
141 -> {142};
|
||||
142 -> {143};
|
||||
143 -> {144} [style=dotted];
|
||||
144 -> {145} [style=dotted];
|
||||
145 -> {146};
|
||||
146 -> {147 148};
|
||||
147 -> {155};
|
||||
148 -> {149};
|
||||
149 -> {150};
|
||||
150 -> {151};
|
||||
@@ -416,72 +421,72 @@ digraph jumpFromRhsOfOperator_kt {
|
||||
155 -> {156};
|
||||
156 -> {157};
|
||||
157 -> {158};
|
||||
|
||||
subgraph cluster_32 {
|
||||
color=red
|
||||
159 [label="Enter function test_8" style="filled" fillcolor=red];
|
||||
subgraph cluster_33 {
|
||||
color=blue
|
||||
160 [label="Enter block"];
|
||||
subgraph cluster_34 {
|
||||
color=blue
|
||||
161 [label="Enter when"];
|
||||
subgraph cluster_35 {
|
||||
color=blue
|
||||
162 [label="Enter when branch condition "];
|
||||
subgraph cluster_36 {
|
||||
color=blue
|
||||
163 [label="Enter &&"];
|
||||
164 [label="Access variable R|<local>/a|"];
|
||||
165 [label="Const: Null(null)"];
|
||||
166 [label="Equality operator !="];
|
||||
167 [label="Exit left part of &&"];
|
||||
168 [label="Enter right part of &&"];
|
||||
169 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
|
||||
170 [label="Throw: throw R|java/lang/Exception.Exception|()"];
|
||||
171 [label="Stub" style="filled" fillcolor=gray];
|
||||
172 [label="Exit &&"];
|
||||
}
|
||||
173 [label="Exit when branch condition"];
|
||||
}
|
||||
174 [label="Synthetic else branch"];
|
||||
175 [label="Enter when branch result"];
|
||||
subgraph cluster_37 {
|
||||
color=blue
|
||||
176 [label="Enter block"];
|
||||
177 [label="Access variable R|<local>/a|"];
|
||||
178 [label="Smart cast: R|<local>/a|"];
|
||||
179 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
180 [label="Exit block"];
|
||||
}
|
||||
181 [label="Exit when branch result"];
|
||||
182 [label="Exit when"];
|
||||
}
|
||||
183 [label="Access variable R|<local>/a|"];
|
||||
184 [label="Smart cast: R|<local>/a|"];
|
||||
185 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
186 [label="Exit block"];
|
||||
}
|
||||
187 [label="Exit function test_8" style="filled" fillcolor=red];
|
||||
}
|
||||
158 -> {159};
|
||||
159 -> {160};
|
||||
160 -> {161};
|
||||
|
||||
subgraph cluster_33 {
|
||||
color=red
|
||||
161 [label="Enter function test_8" style="filled" fillcolor=red];
|
||||
subgraph cluster_34 {
|
||||
color=blue
|
||||
162 [label="Enter block"];
|
||||
subgraph cluster_35 {
|
||||
color=blue
|
||||
163 [label="Enter when"];
|
||||
subgraph cluster_36 {
|
||||
color=blue
|
||||
164 [label="Enter when branch condition "];
|
||||
subgraph cluster_37 {
|
||||
color=blue
|
||||
165 [label="Enter &&"];
|
||||
166 [label="Access variable R|<local>/a|"];
|
||||
167 [label="Const: Null(null)"];
|
||||
168 [label="Equality operator !="];
|
||||
169 [label="Exit left part of &&"];
|
||||
170 [label="Enter right part of &&"];
|
||||
171 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
|
||||
172 [label="Throw: throw R|java/lang/Exception.Exception|()"];
|
||||
173 [label="Stub" style="filled" fillcolor=gray];
|
||||
174 [label="Exit &&"];
|
||||
}
|
||||
175 [label="Exit when branch condition"];
|
||||
}
|
||||
176 [label="Synthetic else branch"];
|
||||
177 [label="Enter when branch result"];
|
||||
subgraph cluster_38 {
|
||||
color=blue
|
||||
178 [label="Enter block"];
|
||||
179 [label="Access variable R|<local>/a|"];
|
||||
180 [label="Smart cast: R|<local>/a|"];
|
||||
181 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
182 [label="Exit block"];
|
||||
}
|
||||
183 [label="Exit when branch result"];
|
||||
184 [label="Exit when"];
|
||||
}
|
||||
185 [label="Access variable R|<local>/a|"];
|
||||
186 [label="Smart cast: R|<local>/a|"];
|
||||
187 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
188 [label="Exit block"];
|
||||
}
|
||||
189 [label="Exit function test_8" style="filled" fillcolor=red];
|
||||
}
|
||||
161 -> {162};
|
||||
162 -> {163};
|
||||
163 -> {164};
|
||||
164 -> {165};
|
||||
165 -> {166};
|
||||
166 -> {167};
|
||||
167 -> {168 172};
|
||||
167 -> {168};
|
||||
168 -> {169};
|
||||
169 -> {170};
|
||||
170 -> {171} [style=dotted];
|
||||
171 -> {172} [style=dotted];
|
||||
172 -> {173};
|
||||
173 -> {174 175};
|
||||
174 -> {182};
|
||||
175 -> {176};
|
||||
176 -> {177};
|
||||
169 -> {170 174};
|
||||
170 -> {171};
|
||||
171 -> {172};
|
||||
172 -> {173} [style=dotted];
|
||||
173 -> {174} [style=dotted];
|
||||
174 -> {175};
|
||||
175 -> {176 177};
|
||||
176 -> {184};
|
||||
177 -> {178};
|
||||
178 -> {179};
|
||||
179 -> {180};
|
||||
@@ -492,5 +497,7 @@ digraph jumpFromRhsOfOperator_kt {
|
||||
184 -> {185};
|
||||
185 -> {186};
|
||||
186 -> {187};
|
||||
187 -> {188};
|
||||
188 -> {189};
|
||||
|
||||
}
|
||||
|
||||
Vendored
+325
-318
@@ -5,82 +5,87 @@ digraph boundSmartcasts_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter class A" style="filled" fillcolor=red];
|
||||
1 [label="Exit class A" style="filled" fillcolor=red];
|
||||
0 [label="Enter file boundSmartcasts.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file boundSmartcasts.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
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 [label="Enter class A" style="filled" fillcolor=red];
|
||||
3 [label="Exit class A" style="filled" fillcolor=red];
|
||||
}
|
||||
2 -> {3};
|
||||
2 -> {3} [color=green];
|
||||
|
||||
subgraph cluster_2 {
|
||||
color=red
|
||||
4 [label="Enter class B" style="filled" fillcolor=red];
|
||||
5 [label="Exit class B" style="filled" fillcolor=red];
|
||||
4 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
5 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
}
|
||||
4 -> {5} [color=green];
|
||||
4 -> {5};
|
||||
|
||||
subgraph cluster_3 {
|
||||
color=red
|
||||
6 [label="Enter function bar" style="filled" fillcolor=red];
|
||||
7 [label="Exit function bar" style="filled" fillcolor=red];
|
||||
6 [label="Enter class B" style="filled" fillcolor=red];
|
||||
7 [label="Exit class B" style="filled" fillcolor=red];
|
||||
}
|
||||
6 -> {7};
|
||||
6 -> {7} [color=green];
|
||||
|
||||
subgraph cluster_4 {
|
||||
color=red
|
||||
8 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
9 [label="Enter block"];
|
||||
10 [label="Access variable R|<local>/x|"];
|
||||
11 [label="Variable declaration: lval y: R|kotlin/Any|"];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
12 [label="Enter when"];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
13 [label="Enter when branch condition "];
|
||||
14 [label="Access variable R|<local>/x|"];
|
||||
15 [label="Type operator: (R|<local>/x| is R|A|)"];
|
||||
16 [label="Exit when branch condition"];
|
||||
}
|
||||
17 [label="Synthetic else branch"];
|
||||
18 [label="Enter when branch result"];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
19 [label="Enter block"];
|
||||
20 [label="Access variable R|<local>/x|"];
|
||||
21 [label="Smart cast: R|<local>/x|"];
|
||||
22 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
23 [label="Access variable R|<local>/y|"];
|
||||
24 [label="Smart cast: R|<local>/y|"];
|
||||
25 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
26 [label="Exit block"];
|
||||
}
|
||||
27 [label="Exit when branch result"];
|
||||
28 [label="Exit when"];
|
||||
}
|
||||
29 [label="Exit block"];
|
||||
}
|
||||
30 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
8 [label="Enter function bar" style="filled" fillcolor=red];
|
||||
9 [label="Exit function bar" style="filled" fillcolor=red];
|
||||
}
|
||||
8 -> {9};
|
||||
9 -> {10};
|
||||
|
||||
subgraph cluster_5 {
|
||||
color=red
|
||||
10 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
11 [label="Enter block"];
|
||||
12 [label="Access variable R|<local>/x|"];
|
||||
13 [label="Variable declaration: lval y: R|kotlin/Any|"];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
14 [label="Enter when"];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
15 [label="Enter when branch condition "];
|
||||
16 [label="Access variable R|<local>/x|"];
|
||||
17 [label="Type operator: (R|<local>/x| is R|A|)"];
|
||||
18 [label="Exit when branch condition"];
|
||||
}
|
||||
19 [label="Synthetic else branch"];
|
||||
20 [label="Enter when branch result"];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
21 [label="Enter block"];
|
||||
22 [label="Access variable R|<local>/x|"];
|
||||
23 [label="Smart cast: R|<local>/x|"];
|
||||
24 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
25 [label="Access variable R|<local>/y|"];
|
||||
26 [label="Smart cast: R|<local>/y|"];
|
||||
27 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
28 [label="Exit block"];
|
||||
}
|
||||
29 [label="Exit when branch result"];
|
||||
30 [label="Exit when"];
|
||||
}
|
||||
31 [label="Exit block"];
|
||||
}
|
||||
32 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
}
|
||||
10 -> {11};
|
||||
11 -> {12};
|
||||
12 -> {13};
|
||||
13 -> {14};
|
||||
14 -> {15};
|
||||
15 -> {16};
|
||||
16 -> {17 18};
|
||||
17 -> {28};
|
||||
18 -> {19};
|
||||
19 -> {20};
|
||||
16 -> {17};
|
||||
17 -> {18};
|
||||
18 -> {19 20};
|
||||
19 -> {30};
|
||||
20 -> {21};
|
||||
21 -> {22};
|
||||
22 -> {23};
|
||||
@@ -91,57 +96,57 @@ digraph boundSmartcasts_kt {
|
||||
27 -> {28};
|
||||
28 -> {29};
|
||||
29 -> {30};
|
||||
30 -> {31};
|
||||
31 -> {32};
|
||||
|
||||
subgraph cluster_9 {
|
||||
subgraph cluster_10 {
|
||||
color=red
|
||||
31 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_10 {
|
||||
33 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
32 [label="Enter block"];
|
||||
33 [label="Access variable R|<local>/x|"];
|
||||
34 [label="Variable declaration: lval y: R|kotlin/Any|"];
|
||||
subgraph cluster_11 {
|
||||
34 [label="Enter block"];
|
||||
35 [label="Access variable R|<local>/x|"];
|
||||
36 [label="Variable declaration: lval y: R|kotlin/Any|"];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
35 [label="Enter when"];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
36 [label="Enter when branch condition "];
|
||||
37 [label="Access variable R|<local>/y|"];
|
||||
38 [label="Type operator: (R|<local>/y| is R|A|)"];
|
||||
39 [label="Exit when branch condition"];
|
||||
}
|
||||
40 [label="Synthetic else branch"];
|
||||
41 [label="Enter when branch result"];
|
||||
37 [label="Enter when"];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
42 [label="Enter block"];
|
||||
43 [label="Access variable R|<local>/x|"];
|
||||
44 [label="Smart cast: R|<local>/x|"];
|
||||
45 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
46 [label="Access variable R|<local>/y|"];
|
||||
47 [label="Smart cast: R|<local>/y|"];
|
||||
48 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
49 [label="Exit block"];
|
||||
38 [label="Enter when branch condition "];
|
||||
39 [label="Access variable R|<local>/y|"];
|
||||
40 [label="Type operator: (R|<local>/y| is R|A|)"];
|
||||
41 [label="Exit when branch condition"];
|
||||
}
|
||||
50 [label="Exit when branch result"];
|
||||
51 [label="Exit when"];
|
||||
42 [label="Synthetic else branch"];
|
||||
43 [label="Enter when branch result"];
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
44 [label="Enter block"];
|
||||
45 [label="Access variable R|<local>/x|"];
|
||||
46 [label="Smart cast: R|<local>/x|"];
|
||||
47 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
48 [label="Access variable R|<local>/y|"];
|
||||
49 [label="Smart cast: R|<local>/y|"];
|
||||
50 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
51 [label="Exit block"];
|
||||
}
|
||||
52 [label="Exit when branch result"];
|
||||
53 [label="Exit when"];
|
||||
}
|
||||
52 [label="Exit block"];
|
||||
54 [label="Exit block"];
|
||||
}
|
||||
53 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
55 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
}
|
||||
31 -> {32};
|
||||
32 -> {33};
|
||||
33 -> {34};
|
||||
34 -> {35};
|
||||
35 -> {36};
|
||||
36 -> {37};
|
||||
37 -> {38};
|
||||
38 -> {39};
|
||||
39 -> {40 41};
|
||||
40 -> {51};
|
||||
41 -> {42};
|
||||
42 -> {43};
|
||||
39 -> {40};
|
||||
40 -> {41};
|
||||
41 -> {42 43};
|
||||
42 -> {53};
|
||||
43 -> {44};
|
||||
44 -> {45};
|
||||
45 -> {46};
|
||||
@@ -152,82 +157,82 @@ digraph boundSmartcasts_kt {
|
||||
50 -> {51};
|
||||
51 -> {52};
|
||||
52 -> {53};
|
||||
53 -> {54};
|
||||
54 -> {55};
|
||||
|
||||
subgraph cluster_14 {
|
||||
subgraph cluster_15 {
|
||||
color=red
|
||||
54 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_15 {
|
||||
56 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_16 {
|
||||
color=blue
|
||||
55 [label="Enter block"];
|
||||
56 [label="Access variable R|<local>/x|"];
|
||||
57 [label="Variable declaration: lvar z: R|kotlin/Any|"];
|
||||
subgraph cluster_16 {
|
||||
57 [label="Enter block"];
|
||||
58 [label="Access variable R|<local>/x|"];
|
||||
59 [label="Variable declaration: lvar z: R|kotlin/Any|"];
|
||||
subgraph cluster_17 {
|
||||
color=blue
|
||||
58 [label="Enter when"];
|
||||
subgraph cluster_17 {
|
||||
color=blue
|
||||
59 [label="Enter when branch condition "];
|
||||
60 [label="Access variable R|<local>/x|"];
|
||||
61 [label="Type operator: (R|<local>/x| is R|A|)"];
|
||||
62 [label="Exit when branch condition"];
|
||||
}
|
||||
63 [label="Synthetic else branch"];
|
||||
64 [label="Enter when branch result"];
|
||||
60 [label="Enter when"];
|
||||
subgraph cluster_18 {
|
||||
color=blue
|
||||
65 [label="Enter block"];
|
||||
66 [label="Access variable R|<local>/z|"];
|
||||
67 [label="Smart cast: R|<local>/z|"];
|
||||
68 [label="Function call: R|<local>/z|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
69 [label="Exit block"];
|
||||
61 [label="Enter when branch condition "];
|
||||
62 [label="Access variable R|<local>/x|"];
|
||||
63 [label="Type operator: (R|<local>/x| is R|A|)"];
|
||||
64 [label="Exit when branch condition"];
|
||||
}
|
||||
70 [label="Exit when branch result"];
|
||||
71 [label="Exit when"];
|
||||
}
|
||||
72 [label="Access variable R|<local>/y|"];
|
||||
73 [label="Assignment: R|<local>/z|"];
|
||||
subgraph cluster_19 {
|
||||
color=blue
|
||||
74 [label="Enter when"];
|
||||
subgraph cluster_20 {
|
||||
65 [label="Synthetic else branch"];
|
||||
66 [label="Enter when branch result"];
|
||||
subgraph cluster_19 {
|
||||
color=blue
|
||||
75 [label="Enter when branch condition "];
|
||||
76 [label="Access variable R|<local>/y|"];
|
||||
77 [label="Type operator: (R|<local>/y| is R|B|)"];
|
||||
78 [label="Exit when branch condition"];
|
||||
67 [label="Enter block"];
|
||||
68 [label="Access variable R|<local>/z|"];
|
||||
69 [label="Smart cast: R|<local>/z|"];
|
||||
70 [label="Function call: R|<local>/z|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
71 [label="Exit block"];
|
||||
}
|
||||
79 [label="Synthetic else branch"];
|
||||
80 [label="Enter when branch result"];
|
||||
72 [label="Exit when branch result"];
|
||||
73 [label="Exit when"];
|
||||
}
|
||||
74 [label="Access variable R|<local>/y|"];
|
||||
75 [label="Assignment: R|<local>/z|"];
|
||||
subgraph cluster_20 {
|
||||
color=blue
|
||||
76 [label="Enter when"];
|
||||
subgraph cluster_21 {
|
||||
color=blue
|
||||
81 [label="Enter block"];
|
||||
82 [label="Access variable R|<local>/z|"];
|
||||
83 [label="Smart cast: R|<local>/z|"];
|
||||
84 [label="Function call: R|<local>/z|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
85 [label="Access variable R|<local>/z|"];
|
||||
86 [label="Smart cast: R|<local>/z|"];
|
||||
87 [label="Function call: R|<local>/z|.R|/B.bar|()" style="filled" fillcolor=yellow];
|
||||
88 [label="Exit block"];
|
||||
77 [label="Enter when branch condition "];
|
||||
78 [label="Access variable R|<local>/y|"];
|
||||
79 [label="Type operator: (R|<local>/y| is R|B|)"];
|
||||
80 [label="Exit when branch condition"];
|
||||
}
|
||||
89 [label="Exit when branch result"];
|
||||
90 [label="Exit when"];
|
||||
81 [label="Synthetic else branch"];
|
||||
82 [label="Enter when branch result"];
|
||||
subgraph cluster_22 {
|
||||
color=blue
|
||||
83 [label="Enter block"];
|
||||
84 [label="Access variable R|<local>/z|"];
|
||||
85 [label="Smart cast: R|<local>/z|"];
|
||||
86 [label="Function call: R|<local>/z|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
87 [label="Access variable R|<local>/z|"];
|
||||
88 [label="Smart cast: R|<local>/z|"];
|
||||
89 [label="Function call: R|<local>/z|.R|/B.bar|()" style="filled" fillcolor=yellow];
|
||||
90 [label="Exit block"];
|
||||
}
|
||||
91 [label="Exit when branch result"];
|
||||
92 [label="Exit when"];
|
||||
}
|
||||
91 [label="Exit block"];
|
||||
93 [label="Exit block"];
|
||||
}
|
||||
92 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
94 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
}
|
||||
54 -> {55};
|
||||
55 -> {56};
|
||||
56 -> {57};
|
||||
57 -> {58};
|
||||
58 -> {59};
|
||||
59 -> {60};
|
||||
60 -> {61};
|
||||
61 -> {62};
|
||||
62 -> {63 64};
|
||||
63 -> {71};
|
||||
64 -> {65};
|
||||
65 -> {66};
|
||||
62 -> {63};
|
||||
63 -> {64};
|
||||
64 -> {65 66};
|
||||
65 -> {73};
|
||||
66 -> {67};
|
||||
67 -> {68};
|
||||
68 -> {69};
|
||||
@@ -240,10 +245,10 @@ digraph boundSmartcasts_kt {
|
||||
75 -> {76};
|
||||
76 -> {77};
|
||||
77 -> {78};
|
||||
78 -> {79 80};
|
||||
79 -> {90};
|
||||
80 -> {81};
|
||||
81 -> {82};
|
||||
78 -> {79};
|
||||
79 -> {80};
|
||||
80 -> {81 82};
|
||||
81 -> {92};
|
||||
82 -> {83};
|
||||
83 -> {84};
|
||||
84 -> {85};
|
||||
@@ -254,56 +259,56 @@ digraph boundSmartcasts_kt {
|
||||
89 -> {90};
|
||||
90 -> {91};
|
||||
91 -> {92};
|
||||
92 -> {93};
|
||||
93 -> {94};
|
||||
|
||||
subgraph cluster_22 {
|
||||
subgraph cluster_23 {
|
||||
color=red
|
||||
93 [label="Enter function test_4" style="filled" fillcolor=red];
|
||||
subgraph cluster_23 {
|
||||
95 [label="Enter function test_4" style="filled" fillcolor=red];
|
||||
subgraph cluster_24 {
|
||||
color=blue
|
||||
94 [label="Enter block"];
|
||||
95 [label="Const: Int(1)"];
|
||||
96 [label="Variable declaration: lvar x: R|kotlin/Any|"];
|
||||
97 [label="Access variable R|<local>/x|"];
|
||||
98 [label="Type operator: (R|<local>/x| as R|kotlin/Int|)"];
|
||||
96 [label="Enter block"];
|
||||
97 [label="Const: Int(1)"];
|
||||
98 [label="Variable declaration: lvar x: R|kotlin/Any|"];
|
||||
99 [label="Access variable R|<local>/x|"];
|
||||
100 [label="Smart cast: R|<local>/x|"];
|
||||
101 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
|
||||
102 [label="Access variable R|<local>/y|"];
|
||||
103 [label="Assignment: R|<local>/x|"];
|
||||
104 [label="Access variable R|<local>/x|"];
|
||||
105 [label="Function call: R|<local>/x|.<Unresolved name: inc>#()" style="filled" fillcolor=yellow];
|
||||
subgraph cluster_24 {
|
||||
100 [label="Type operator: (R|<local>/x| as R|kotlin/Int|)"];
|
||||
101 [label="Access variable R|<local>/x|"];
|
||||
102 [label="Smart cast: R|<local>/x|"];
|
||||
103 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
|
||||
104 [label="Access variable R|<local>/y|"];
|
||||
105 [label="Assignment: R|<local>/x|"];
|
||||
106 [label="Access variable R|<local>/x|"];
|
||||
107 [label="Function call: R|<local>/x|.<Unresolved name: inc>#()" style="filled" fillcolor=yellow];
|
||||
subgraph cluster_25 {
|
||||
color=blue
|
||||
106 [label="Enter when"];
|
||||
subgraph cluster_25 {
|
||||
color=blue
|
||||
107 [label="Enter when branch condition "];
|
||||
108 [label="Access variable R|<local>/y|"];
|
||||
109 [label="Type operator: (R|<local>/y| is R|A|)"];
|
||||
110 [label="Exit when branch condition"];
|
||||
}
|
||||
111 [label="Synthetic else branch"];
|
||||
112 [label="Enter when branch result"];
|
||||
108 [label="Enter when"];
|
||||
subgraph cluster_26 {
|
||||
color=blue
|
||||
113 [label="Enter block"];
|
||||
114 [label="Access variable R|<local>/x|"];
|
||||
115 [label="Smart cast: R|<local>/x|"];
|
||||
116 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
117 [label="Access variable R|<local>/y|"];
|
||||
118 [label="Smart cast: R|<local>/y|"];
|
||||
119 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
120 [label="Exit block"];
|
||||
109 [label="Enter when branch condition "];
|
||||
110 [label="Access variable R|<local>/y|"];
|
||||
111 [label="Type operator: (R|<local>/y| is R|A|)"];
|
||||
112 [label="Exit when branch condition"];
|
||||
}
|
||||
121 [label="Exit when branch result"];
|
||||
122 [label="Exit when"];
|
||||
113 [label="Synthetic else branch"];
|
||||
114 [label="Enter when branch result"];
|
||||
subgraph cluster_27 {
|
||||
color=blue
|
||||
115 [label="Enter block"];
|
||||
116 [label="Access variable R|<local>/x|"];
|
||||
117 [label="Smart cast: R|<local>/x|"];
|
||||
118 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
119 [label="Access variable R|<local>/y|"];
|
||||
120 [label="Smart cast: R|<local>/y|"];
|
||||
121 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
122 [label="Exit block"];
|
||||
}
|
||||
123 [label="Exit when branch result"];
|
||||
124 [label="Exit when"];
|
||||
}
|
||||
123 [label="Exit block"];
|
||||
125 [label="Exit block"];
|
||||
}
|
||||
124 [label="Exit function test_4" style="filled" fillcolor=red];
|
||||
126 [label="Exit function test_4" style="filled" fillcolor=red];
|
||||
}
|
||||
93 -> {94};
|
||||
94 -> {95};
|
||||
95 -> {96};
|
||||
96 -> {97};
|
||||
97 -> {98};
|
||||
@@ -319,10 +324,10 @@ digraph boundSmartcasts_kt {
|
||||
107 -> {108};
|
||||
108 -> {109};
|
||||
109 -> {110};
|
||||
110 -> {111 112};
|
||||
111 -> {122};
|
||||
112 -> {113};
|
||||
113 -> {114};
|
||||
110 -> {111};
|
||||
111 -> {112};
|
||||
112 -> {113 114};
|
||||
113 -> {124};
|
||||
114 -> {115};
|
||||
115 -> {116};
|
||||
116 -> {117};
|
||||
@@ -333,89 +338,89 @@ digraph boundSmartcasts_kt {
|
||||
121 -> {122};
|
||||
122 -> {123};
|
||||
123 -> {124};
|
||||
124 -> {125};
|
||||
125 -> {126};
|
||||
|
||||
subgraph cluster_27 {
|
||||
subgraph cluster_28 {
|
||||
color=red
|
||||
125 [label="Enter class D" style="filled" fillcolor=red];
|
||||
subgraph cluster_28 {
|
||||
color=blue
|
||||
126 [label="Enter property" style="filled" fillcolor=red];
|
||||
127 [label="Access variable R|<local>/any|"];
|
||||
128 [label="Exit property" style="filled" fillcolor=red];
|
||||
}
|
||||
127 [label="Enter class D" style="filled" fillcolor=red];
|
||||
subgraph cluster_29 {
|
||||
color=blue
|
||||
129 [label="Enter function <init>" style="filled" fillcolor=red];
|
||||
130 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
|
||||
131 [label="Exit function <init>" style="filled" fillcolor=red];
|
||||
128 [label="Enter property" style="filled" fillcolor=red];
|
||||
129 [label="Access variable R|<local>/any|"];
|
||||
130 [label="Exit property" style="filled" fillcolor=red];
|
||||
}
|
||||
132 [label="Exit class D" style="filled" fillcolor=red];
|
||||
subgraph cluster_30 {
|
||||
color=blue
|
||||
131 [label="Enter function <init>" style="filled" fillcolor=red];
|
||||
132 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
|
||||
133 [label="Exit function <init>" style="filled" fillcolor=red];
|
||||
}
|
||||
134 [label="Exit class D" style="filled" fillcolor=red];
|
||||
}
|
||||
125 -> {126} [color=green];
|
||||
125 -> {132} [style=dotted];
|
||||
125 -> {126 129} [style=dashed];
|
||||
126 -> {127};
|
||||
127 -> {128};
|
||||
128 -> {129} [color=green];
|
||||
127 -> {128} [color=green];
|
||||
127 -> {134} [style=dotted];
|
||||
127 -> {128 131} [style=dashed];
|
||||
128 -> {129};
|
||||
129 -> {130};
|
||||
130 -> {131};
|
||||
131 -> {132} [color=green];
|
||||
130 -> {131} [color=green];
|
||||
131 -> {132};
|
||||
132 -> {133};
|
||||
133 -> {134} [color=green];
|
||||
|
||||
subgraph cluster_30 {
|
||||
subgraph cluster_31 {
|
||||
color=red
|
||||
133 [label="Enter function baz" style="filled" fillcolor=red];
|
||||
subgraph cluster_31 {
|
||||
135 [label="Enter function baz" style="filled" fillcolor=red];
|
||||
subgraph cluster_32 {
|
||||
color=blue
|
||||
134 [label="Enter block"];
|
||||
135 [label="Exit block"];
|
||||
136 [label="Enter block"];
|
||||
137 [label="Exit block"];
|
||||
}
|
||||
136 [label="Exit function baz" style="filled" fillcolor=red];
|
||||
138 [label="Exit function baz" style="filled" fillcolor=red];
|
||||
}
|
||||
133 -> {134};
|
||||
134 -> {135};
|
||||
135 -> {136};
|
||||
|
||||
subgraph cluster_32 {
|
||||
color=red
|
||||
137 [label="Enter function test_5" style="filled" fillcolor=red];
|
||||
subgraph cluster_33 {
|
||||
color=blue
|
||||
138 [label="Enter block"];
|
||||
139 [label="Access variable R|<local>/d|"];
|
||||
140 [label="Access variable R|/D.any|"];
|
||||
141 [label="Exit lhs of ?:"];
|
||||
142 [label="Enter rhs of ?:"];
|
||||
143 [label="Jump: ^test_5 Unit"];
|
||||
144 [label="Stub" style="filled" fillcolor=gray];
|
||||
145 [label="Lhs of ?: is not null"];
|
||||
146 [label="Exit ?:"];
|
||||
147 [label="Variable declaration: lval a: R|kotlin/Any|"];
|
||||
148 [label="Access variable R|<local>/a|"];
|
||||
149 [label="Function call: R|<local>/a|.R|/baz|()" style="filled" fillcolor=yellow];
|
||||
150 [label="Access variable R|<local>/d|"];
|
||||
151 [label="Access variable R|/D.any|"];
|
||||
152 [label="Smart cast: R|<local>/d|.R|/D.any|"];
|
||||
153 [label="Function call: R|<local>/d|.R|/D.any|.R|/baz|()" style="filled" fillcolor=yellow];
|
||||
154 [label="Access variable R|<local>/a|"];
|
||||
155 [label="Type operator: (R|<local>/a| as R|A|)"];
|
||||
156 [label="Access variable R|<local>/a|"];
|
||||
157 [label="Smart cast: R|<local>/a|"];
|
||||
158 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
159 [label="Exit block"];
|
||||
}
|
||||
160 [label="Exit function test_5" style="filled" fillcolor=red];
|
||||
}
|
||||
136 -> {137};
|
||||
137 -> {138};
|
||||
138 -> {139};
|
||||
|
||||
subgraph cluster_33 {
|
||||
color=red
|
||||
139 [label="Enter function test_5" style="filled" fillcolor=red];
|
||||
subgraph cluster_34 {
|
||||
color=blue
|
||||
140 [label="Enter block"];
|
||||
141 [label="Access variable R|<local>/d|"];
|
||||
142 [label="Access variable R|/D.any|"];
|
||||
143 [label="Exit lhs of ?:"];
|
||||
144 [label="Enter rhs of ?:"];
|
||||
145 [label="Jump: ^test_5 Unit"];
|
||||
146 [label="Stub" style="filled" fillcolor=gray];
|
||||
147 [label="Lhs of ?: is not null"];
|
||||
148 [label="Exit ?:"];
|
||||
149 [label="Variable declaration: lval a: R|kotlin/Any|"];
|
||||
150 [label="Access variable R|<local>/a|"];
|
||||
151 [label="Function call: R|<local>/a|.R|/baz|()" style="filled" fillcolor=yellow];
|
||||
152 [label="Access variable R|<local>/d|"];
|
||||
153 [label="Access variable R|/D.any|"];
|
||||
154 [label="Smart cast: R|<local>/d|.R|/D.any|"];
|
||||
155 [label="Function call: R|<local>/d|.R|/D.any|.R|/baz|()" style="filled" fillcolor=yellow];
|
||||
156 [label="Access variable R|<local>/a|"];
|
||||
157 [label="Type operator: (R|<local>/a| as R|A|)"];
|
||||
158 [label="Access variable R|<local>/a|"];
|
||||
159 [label="Smart cast: R|<local>/a|"];
|
||||
160 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
161 [label="Exit block"];
|
||||
}
|
||||
162 [label="Exit function test_5" style="filled" fillcolor=red];
|
||||
}
|
||||
139 -> {140};
|
||||
140 -> {141};
|
||||
141 -> {142 145};
|
||||
141 -> {142};
|
||||
142 -> {143};
|
||||
143 -> {160};
|
||||
143 -> {144} [style=dotted];
|
||||
144 -> {146} [style=dotted];
|
||||
145 -> {146};
|
||||
146 -> {147};
|
||||
143 -> {144 147};
|
||||
144 -> {145};
|
||||
145 -> {162};
|
||||
145 -> {146} [style=dotted];
|
||||
146 -> {148} [style=dotted];
|
||||
147 -> {148};
|
||||
148 -> {149};
|
||||
149 -> {150};
|
||||
@@ -429,35 +434,35 @@ digraph boundSmartcasts_kt {
|
||||
157 -> {158};
|
||||
158 -> {159};
|
||||
159 -> {160};
|
||||
|
||||
subgraph cluster_34 {
|
||||
color=red
|
||||
161 [label="Enter function test_6" style="filled" fillcolor=red];
|
||||
subgraph cluster_35 {
|
||||
color=blue
|
||||
162 [label="Enter block"];
|
||||
163 [label="Access variable R|<local>/d1|"];
|
||||
164 [label="Access variable R|/D.any|"];
|
||||
165 [label="Variable declaration: lval a: R|kotlin/Any?|"];
|
||||
166 [label="Access variable R|<local>/a|"];
|
||||
167 [label="Type operator: (R|<local>/a| as R|A|)"];
|
||||
168 [label="Access variable R|<local>/a|"];
|
||||
169 [label="Smart cast: R|<local>/a|"];
|
||||
170 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
171 [label="Access variable R|<local>/d1|"];
|
||||
172 [label="Access variable R|/D.any|"];
|
||||
173 [label="Smart cast: R|<local>/d1|.R|/D.any|"];
|
||||
174 [label="Function call: R|<local>/d1|.R|/D.any|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
175 [label="Access variable R|<local>/d1|"];
|
||||
176 [label="Access variable R|/D.any|"];
|
||||
177 [label="Smart cast: R|<local>/d1|.R|/D.any|"];
|
||||
178 [label="Function call: R|<local>/d1|.R|/D.any|.R|/baz|()" style="filled" fillcolor=yellow];
|
||||
179 [label="Exit block"];
|
||||
}
|
||||
180 [label="Exit function test_6" style="filled" fillcolor=red];
|
||||
}
|
||||
160 -> {161};
|
||||
161 -> {162};
|
||||
162 -> {163};
|
||||
|
||||
subgraph cluster_35 {
|
||||
color=red
|
||||
163 [label="Enter function test_6" style="filled" fillcolor=red];
|
||||
subgraph cluster_36 {
|
||||
color=blue
|
||||
164 [label="Enter block"];
|
||||
165 [label="Access variable R|<local>/d1|"];
|
||||
166 [label="Access variable R|/D.any|"];
|
||||
167 [label="Variable declaration: lval a: R|kotlin/Any?|"];
|
||||
168 [label="Access variable R|<local>/a|"];
|
||||
169 [label="Type operator: (R|<local>/a| as R|A|)"];
|
||||
170 [label="Access variable R|<local>/a|"];
|
||||
171 [label="Smart cast: R|<local>/a|"];
|
||||
172 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
173 [label="Access variable R|<local>/d1|"];
|
||||
174 [label="Access variable R|/D.any|"];
|
||||
175 [label="Smart cast: R|<local>/d1|.R|/D.any|"];
|
||||
176 [label="Function call: R|<local>/d1|.R|/D.any|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
177 [label="Access variable R|<local>/d1|"];
|
||||
178 [label="Access variable R|/D.any|"];
|
||||
179 [label="Smart cast: R|<local>/d1|.R|/D.any|"];
|
||||
180 [label="Function call: R|<local>/d1|.R|/D.any|.R|/baz|()" style="filled" fillcolor=yellow];
|
||||
181 [label="Exit block"];
|
||||
}
|
||||
182 [label="Exit function test_6" style="filled" fillcolor=red];
|
||||
}
|
||||
163 -> {164};
|
||||
164 -> {165};
|
||||
165 -> {166};
|
||||
@@ -475,47 +480,47 @@ digraph boundSmartcasts_kt {
|
||||
177 -> {178};
|
||||
178 -> {179};
|
||||
179 -> {180};
|
||||
|
||||
subgraph cluster_36 {
|
||||
color=red
|
||||
181 [label="Enter function test_7" style="filled" fillcolor=red];
|
||||
subgraph cluster_37 {
|
||||
color=blue
|
||||
182 [label="Enter block"];
|
||||
183 [label="Access variable R|<local>/d1|"];
|
||||
184 [label="Enter safe call"];
|
||||
185 [label="Access variable R|/D.any|"];
|
||||
186 [label="Exit safe call"];
|
||||
187 [label="Variable declaration: lval a: R|kotlin/Any?|"];
|
||||
188 [label="Access variable R|<local>/d2|"];
|
||||
189 [label="Enter safe call"];
|
||||
190 [label="Access variable R|/D.any|"];
|
||||
191 [label="Exit safe call"];
|
||||
192 [label="Variable declaration: lval b: R|kotlin/Any?|"];
|
||||
193 [label="Access variable R|<local>/a|"];
|
||||
194 [label="Type operator: (R|<local>/a| as R|A|)"];
|
||||
195 [label="Access variable R|<local>/a|"];
|
||||
196 [label="Smart cast: R|<local>/a|"];
|
||||
197 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
198 [label="Access variable R|<local>/b|"];
|
||||
199 [label="Type operator: (R|<local>/b| as R|B|)"];
|
||||
200 [label="Access variable R|<local>/b|"];
|
||||
201 [label="Smart cast: R|<local>/b|"];
|
||||
202 [label="Function call: R|<local>/b|.R|/B.bar|()" style="filled" fillcolor=yellow];
|
||||
203 [label="Exit block"];
|
||||
}
|
||||
204 [label="Exit function test_7" style="filled" fillcolor=red];
|
||||
}
|
||||
180 -> {181};
|
||||
181 -> {182};
|
||||
182 -> {183};
|
||||
183 -> {184 186};
|
||||
|
||||
subgraph cluster_37 {
|
||||
color=red
|
||||
183 [label="Enter function test_7" style="filled" fillcolor=red];
|
||||
subgraph cluster_38 {
|
||||
color=blue
|
||||
184 [label="Enter block"];
|
||||
185 [label="Access variable R|<local>/d1|"];
|
||||
186 [label="Enter safe call"];
|
||||
187 [label="Access variable R|/D.any|"];
|
||||
188 [label="Exit safe call"];
|
||||
189 [label="Variable declaration: lval a: R|kotlin/Any?|"];
|
||||
190 [label="Access variable R|<local>/d2|"];
|
||||
191 [label="Enter safe call"];
|
||||
192 [label="Access variable R|/D.any|"];
|
||||
193 [label="Exit safe call"];
|
||||
194 [label="Variable declaration: lval b: R|kotlin/Any?|"];
|
||||
195 [label="Access variable R|<local>/a|"];
|
||||
196 [label="Type operator: (R|<local>/a| as R|A|)"];
|
||||
197 [label="Access variable R|<local>/a|"];
|
||||
198 [label="Smart cast: R|<local>/a|"];
|
||||
199 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
200 [label="Access variable R|<local>/b|"];
|
||||
201 [label="Type operator: (R|<local>/b| as R|B|)"];
|
||||
202 [label="Access variable R|<local>/b|"];
|
||||
203 [label="Smart cast: R|<local>/b|"];
|
||||
204 [label="Function call: R|<local>/b|.R|/B.bar|()" style="filled" fillcolor=yellow];
|
||||
205 [label="Exit block"];
|
||||
}
|
||||
206 [label="Exit function test_7" style="filled" fillcolor=red];
|
||||
}
|
||||
183 -> {184};
|
||||
184 -> {185};
|
||||
185 -> {186};
|
||||
185 -> {186 188};
|
||||
186 -> {187};
|
||||
187 -> {188};
|
||||
188 -> {189 191};
|
||||
188 -> {189};
|
||||
189 -> {190};
|
||||
190 -> {191};
|
||||
190 -> {191 193};
|
||||
191 -> {192};
|
||||
192 -> {193};
|
||||
193 -> {194};
|
||||
@@ -529,5 +534,7 @@ digraph boundSmartcasts_kt {
|
||||
201 -> {202};
|
||||
202 -> {203};
|
||||
203 -> {204};
|
||||
204 -> {205};
|
||||
205 -> {206};
|
||||
|
||||
}
|
||||
|
||||
+770
-763
File diff suppressed because it is too large
Load Diff
Vendored
+99
-92
@@ -5,117 +5,124 @@ digraph functionCallBound_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter class Base" style="filled" fillcolor=red];
|
||||
subgraph cluster_1 {
|
||||
color=blue
|
||||
1 [label="Enter function <init>" style="filled" fillcolor=red];
|
||||
2 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
|
||||
3 [label="Exit function <init>" style="filled" fillcolor=red];
|
||||
}
|
||||
4 [label="Exit class Base" style="filled" fillcolor=red];
|
||||
0 [label="Enter file functionCallBound.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file functionCallBound.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1} [color=green];
|
||||
0 -> {4} [style=dotted];
|
||||
0 -> {1} [style=dashed];
|
||||
1 -> {2};
|
||||
2 -> {3};
|
||||
3 -> {4} [color=green];
|
||||
|
||||
subgraph cluster_2 {
|
||||
subgraph cluster_1 {
|
||||
color=red
|
||||
5 [label="Enter class Sub" style="filled" fillcolor=red];
|
||||
subgraph cluster_3 {
|
||||
2 [label="Enter class Base" style="filled" fillcolor=red];
|
||||
subgraph cluster_2 {
|
||||
color=blue
|
||||
6 [label="Enter property" style="filled" fillcolor=red];
|
||||
7 [label="Access variable R|<local>/data|"];
|
||||
8 [label="Exit property" style="filled" fillcolor=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];
|
||||
}
|
||||
6 [label="Exit class Base" style="filled" fillcolor=red];
|
||||
}
|
||||
2 -> {3} [color=green];
|
||||
2 -> {6} [style=dotted];
|
||||
2 -> {3} [style=dashed];
|
||||
3 -> {4};
|
||||
4 -> {5};
|
||||
5 -> {6} [color=green];
|
||||
|
||||
subgraph cluster_3 {
|
||||
color=red
|
||||
7 [label="Enter class Sub" style="filled" fillcolor=red];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
9 [label="Enter function <init>" style="filled" fillcolor=red];
|
||||
10 [label="Delegated constructor call: super<R|Base|>()" style="filled" fillcolor=yellow];
|
||||
11 [label="Exit function <init>" style="filled" fillcolor=red];
|
||||
8 [label="Enter property" style="filled" fillcolor=red];
|
||||
9 [label="Access variable R|<local>/data|"];
|
||||
10 [label="Exit property" style="filled" fillcolor=red];
|
||||
}
|
||||
12 [label="Exit class Sub" style="filled" fillcolor=red];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
11 [label="Enter function <init>" style="filled" fillcolor=red];
|
||||
12 [label="Delegated constructor call: super<R|Base|>()" style="filled" fillcolor=yellow];
|
||||
13 [label="Exit function <init>" style="filled" fillcolor=red];
|
||||
}
|
||||
14 [label="Exit class Sub" style="filled" fillcolor=red];
|
||||
}
|
||||
5 -> {6} [color=green];
|
||||
5 -> {12} [style=dotted];
|
||||
5 -> {6 9} [style=dashed];
|
||||
6 -> {7};
|
||||
7 -> {8};
|
||||
8 -> {9} [color=green];
|
||||
7 -> {8} [color=green];
|
||||
7 -> {14} [style=dotted];
|
||||
7 -> {8 11} [style=dashed];
|
||||
8 -> {9};
|
||||
9 -> {10};
|
||||
10 -> {11};
|
||||
11 -> {12} [color=green];
|
||||
10 -> {11} [color=green];
|
||||
11 -> {12};
|
||||
12 -> {13};
|
||||
13 -> {14} [color=green];
|
||||
|
||||
subgraph cluster_5 {
|
||||
subgraph cluster_6 {
|
||||
color=red
|
||||
13 [label="Enter function isOk" style="filled" fillcolor=red];
|
||||
subgraph cluster_6 {
|
||||
15 [label="Enter function isOk" style="filled" fillcolor=red];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
14 [label="Enter block"];
|
||||
15 [label="Const: Boolean(true)"];
|
||||
16 [label="Jump: ^isOk Boolean(true)"];
|
||||
17 [label="Stub" style="filled" fillcolor=gray];
|
||||
18 [label="Exit block" style="filled" fillcolor=gray];
|
||||
16 [label="Enter block"];
|
||||
17 [label="Const: Boolean(true)"];
|
||||
18 [label="Jump: ^isOk Boolean(true)"];
|
||||
19 [label="Stub" style="filled" fillcolor=gray];
|
||||
20 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
19 [label="Exit function isOk" style="filled" fillcolor=red];
|
||||
21 [label="Exit function isOk" style="filled" fillcolor=red];
|
||||
}
|
||||
13 -> {14};
|
||||
14 -> {15};
|
||||
15 -> {16};
|
||||
16 -> {19};
|
||||
16 -> {17} [style=dotted];
|
||||
17 -> {18} [style=dotted];
|
||||
16 -> {17};
|
||||
17 -> {18};
|
||||
18 -> {21};
|
||||
18 -> {19} [style=dotted];
|
||||
19 -> {20} [style=dotted];
|
||||
20 -> {21} [style=dotted];
|
||||
|
||||
subgraph cluster_7 {
|
||||
subgraph cluster_8 {
|
||||
color=red
|
||||
20 [label="Enter function check" style="filled" fillcolor=red];
|
||||
subgraph cluster_8 {
|
||||
22 [label="Enter function check" style="filled" fillcolor=red];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
21 [label="Enter block"];
|
||||
subgraph cluster_9 {
|
||||
23 [label="Enter block"];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
22 [label="Enter when"];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
23 [label="Enter when branch condition "];
|
||||
24 [label="Access variable R|<local>/base|"];
|
||||
25 [label="Type operator: (R|<local>/base| as? R|Sub|)"];
|
||||
26 [label="Enter safe call"];
|
||||
27 [label="Function call: $subj$.R|/isOk|()" style="filled" fillcolor=yellow];
|
||||
28 [label="Exit safe call"];
|
||||
29 [label="Const: Boolean(true)"];
|
||||
30 [label="Equality operator =="];
|
||||
31 [label="Exit when branch condition"];
|
||||
}
|
||||
24 [label="Enter when"];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
32 [label="Enter when branch condition else"];
|
||||
25 [label="Enter when branch condition "];
|
||||
26 [label="Access variable R|<local>/base|"];
|
||||
27 [label="Type operator: (R|<local>/base| as? R|Sub|)"];
|
||||
28 [label="Enter safe call"];
|
||||
29 [label="Function call: $subj$.R|/isOk|()" style="filled" fillcolor=yellow];
|
||||
30 [label="Exit safe call"];
|
||||
31 [label="Const: Boolean(true)"];
|
||||
32 [label="Equality operator =="];
|
||||
33 [label="Exit when branch condition"];
|
||||
}
|
||||
34 [label="Enter when branch result"];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
35 [label="Enter block"];
|
||||
36 [label="Access variable R|<local>/base|"];
|
||||
37 [label="Exit block"];
|
||||
34 [label="Enter when branch condition else"];
|
||||
35 [label="Exit when branch condition"];
|
||||
}
|
||||
38 [label="Exit when branch result"];
|
||||
39 [label="Enter when branch result"];
|
||||
36 [label="Enter when branch result"];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
40 [label="Enter block"];
|
||||
41 [label="Access variable R|<local>/base|"];
|
||||
42 [label="Smart cast: R|<local>/base|"];
|
||||
43 [label="Access variable R|/Sub.data|"];
|
||||
44 [label="Exit block"];
|
||||
37 [label="Enter block"];
|
||||
38 [label="Access variable R|<local>/base|"];
|
||||
39 [label="Exit block"];
|
||||
}
|
||||
45 [label="Exit when branch result"];
|
||||
46 [label="Exit when"];
|
||||
40 [label="Exit when branch result"];
|
||||
41 [label="Enter when branch result"];
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
42 [label="Enter block"];
|
||||
43 [label="Access variable R|<local>/base|"];
|
||||
44 [label="Smart cast: R|<local>/base|"];
|
||||
45 [label="Access variable R|/Sub.data|"];
|
||||
46 [label="Exit block"];
|
||||
}
|
||||
47 [label="Exit when branch result"];
|
||||
48 [label="Exit when"];
|
||||
}
|
||||
47 [label="Jump: ^check when () {
|
||||
49 [label="Jump: ^check when () {
|
||||
==((R|<local>/base| as? R|Sub|)?.{ $subj$.R|/isOk|() }, Boolean(true)) -> {
|
||||
R|<local>/base|.R|/Sub.data|
|
||||
}
|
||||
@@ -124,41 +131,41 @@ digraph functionCallBound_kt {
|
||||
}
|
||||
}
|
||||
"];
|
||||
48 [label="Stub" style="filled" fillcolor=gray];
|
||||
49 [label="Exit block" style="filled" fillcolor=gray];
|
||||
50 [label="Stub" style="filled" fillcolor=gray];
|
||||
51 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
50 [label="Exit function check" style="filled" fillcolor=red];
|
||||
52 [label="Exit function check" style="filled" fillcolor=red];
|
||||
}
|
||||
20 -> {21};
|
||||
21 -> {22};
|
||||
22 -> {23};
|
||||
23 -> {24};
|
||||
24 -> {25};
|
||||
25 -> {26 28};
|
||||
25 -> {26};
|
||||
26 -> {27};
|
||||
27 -> {28};
|
||||
27 -> {28 30};
|
||||
28 -> {29};
|
||||
29 -> {30};
|
||||
30 -> {31};
|
||||
31 -> {32 39};
|
||||
31 -> {32};
|
||||
32 -> {33};
|
||||
33 -> {34};
|
||||
33 -> {34 41};
|
||||
34 -> {35};
|
||||
35 -> {36};
|
||||
36 -> {37};
|
||||
37 -> {38};
|
||||
38 -> {46};
|
||||
38 -> {39};
|
||||
39 -> {40};
|
||||
40 -> {41};
|
||||
40 -> {48};
|
||||
41 -> {42};
|
||||
42 -> {43};
|
||||
43 -> {44};
|
||||
44 -> {45};
|
||||
45 -> {46};
|
||||
46 -> {47};
|
||||
47 -> {50};
|
||||
47 -> {48} [style=dotted];
|
||||
48 -> {49} [style=dotted];
|
||||
47 -> {48};
|
||||
48 -> {49};
|
||||
49 -> {52};
|
||||
49 -> {50} [style=dotted];
|
||||
50 -> {51} [style=dotted];
|
||||
51 -> {52} [style=dotted];
|
||||
|
||||
}
|
||||
|
||||
+256
-249
@@ -5,74 +5,79 @@ digraph casts_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_1 {
|
||||
color=blue
|
||||
1 [label="Enter block"];
|
||||
2 [label="Access variable R|<local>/x|"];
|
||||
3 [label="Type operator: (R|<local>/x| as R|kotlin/String|)"];
|
||||
4 [label="Access variable R|<local>/x|"];
|
||||
5 [label="Smart cast: R|<local>/x|"];
|
||||
6 [label="Access variable R|kotlin/String.length|"];
|
||||
7 [label="Exit block"];
|
||||
}
|
||||
8 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
0 [label="Enter file casts.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file casts.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1} [color=green];
|
||||
|
||||
subgraph cluster_1 {
|
||||
color=red
|
||||
2 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_2 {
|
||||
color=blue
|
||||
3 [label="Enter block"];
|
||||
4 [label="Access variable R|<local>/x|"];
|
||||
5 [label="Type operator: (R|<local>/x| as R|kotlin/String|)"];
|
||||
6 [label="Access variable R|<local>/x|"];
|
||||
7 [label="Smart cast: R|<local>/x|"];
|
||||
8 [label="Access variable R|kotlin/String.length|"];
|
||||
9 [label="Exit block"];
|
||||
}
|
||||
10 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1};
|
||||
1 -> {2};
|
||||
2 -> {3};
|
||||
3 -> {4};
|
||||
4 -> {5};
|
||||
5 -> {6};
|
||||
6 -> {7};
|
||||
7 -> {8};
|
||||
8 -> {9};
|
||||
9 -> {10};
|
||||
|
||||
subgraph cluster_2 {
|
||||
subgraph cluster_3 {
|
||||
color=red
|
||||
9 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_3 {
|
||||
11 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
10 [label="Enter block"];
|
||||
subgraph cluster_4 {
|
||||
12 [label="Enter block"];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
11 [label="Enter when"];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
12 [label="Enter when branch condition "];
|
||||
13 [label="Access variable R|<local>/x|"];
|
||||
14 [label="Type operator: (R|<local>/x| as R|kotlin/Boolean|)"];
|
||||
15 [label="Exit when branch condition"];
|
||||
}
|
||||
16 [label="Synthetic else branch"];
|
||||
17 [label="Enter when branch result"];
|
||||
13 [label="Enter when"];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
18 [label="Enter block"];
|
||||
19 [label="Access variable R|<local>/x|"];
|
||||
20 [label="Smart cast: R|<local>/x|"];
|
||||
21 [label="Function call: R|<local>/x|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
22 [label="Exit block"];
|
||||
14 [label="Enter when branch condition "];
|
||||
15 [label="Access variable R|<local>/x|"];
|
||||
16 [label="Type operator: (R|<local>/x| as R|kotlin/Boolean|)"];
|
||||
17 [label="Exit when branch condition"];
|
||||
}
|
||||
23 [label="Exit when branch result"];
|
||||
24 [label="Exit when"];
|
||||
18 [label="Synthetic else branch"];
|
||||
19 [label="Enter when branch result"];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
20 [label="Enter block"];
|
||||
21 [label="Access variable R|<local>/x|"];
|
||||
22 [label="Smart cast: R|<local>/x|"];
|
||||
23 [label="Function call: R|<local>/x|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
24 [label="Exit block"];
|
||||
}
|
||||
25 [label="Exit when branch result"];
|
||||
26 [label="Exit when"];
|
||||
}
|
||||
25 [label="Access variable R|<local>/x|"];
|
||||
26 [label="Smart cast: R|<local>/x|"];
|
||||
27 [label="Function call: R|<local>/x|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
28 [label="Exit block"];
|
||||
27 [label="Access variable R|<local>/x|"];
|
||||
28 [label="Smart cast: R|<local>/x|"];
|
||||
29 [label="Function call: R|<local>/x|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
30 [label="Exit block"];
|
||||
}
|
||||
29 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
31 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
}
|
||||
9 -> {10};
|
||||
10 -> {11};
|
||||
11 -> {12};
|
||||
12 -> {13};
|
||||
13 -> {14};
|
||||
14 -> {15};
|
||||
15 -> {16 17};
|
||||
16 -> {24};
|
||||
17 -> {18};
|
||||
18 -> {19};
|
||||
15 -> {16};
|
||||
16 -> {17};
|
||||
17 -> {18 19};
|
||||
18 -> {26};
|
||||
19 -> {20};
|
||||
20 -> {21};
|
||||
21 -> {22};
|
||||
@@ -83,132 +88,132 @@ digraph casts_kt {
|
||||
26 -> {27};
|
||||
27 -> {28};
|
||||
28 -> {29};
|
||||
|
||||
subgraph cluster_7 {
|
||||
color=red
|
||||
30 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
31 [label="Enter block"];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
32 [label="Enter when"];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
33 [label="Enter when branch condition "];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
34 [label="Enter &&"];
|
||||
35 [label="Access variable R|<local>/b|"];
|
||||
36 [label="Exit left part of &&"];
|
||||
37 [label="Enter right part of &&"];
|
||||
38 [label="Access variable R|<local>/x|"];
|
||||
39 [label="Type operator: (R|<local>/x| as R|kotlin/Boolean|)"];
|
||||
40 [label="Exit &&"];
|
||||
}
|
||||
41 [label="Exit when branch condition"];
|
||||
}
|
||||
42 [label="Synthetic else branch"];
|
||||
43 [label="Enter when branch result"];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
44 [label="Enter block"];
|
||||
45 [label="Access variable R|<local>/x|"];
|
||||
46 [label="Smart cast: R|<local>/x|"];
|
||||
47 [label="Function call: R|<local>/x|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
48 [label="Exit block"];
|
||||
}
|
||||
49 [label="Exit when branch result"];
|
||||
50 [label="Exit when"];
|
||||
}
|
||||
51 [label="Access variable R|<local>/x|"];
|
||||
52 [label="Function call: R|<local>/x|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
53 [label="Enter when"];
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
54 [label="Enter when branch condition "];
|
||||
subgraph cluster_15 {
|
||||
color=blue
|
||||
55 [label="Enter &&"];
|
||||
56 [label="Access variable R|<local>/b|"];
|
||||
57 [label="Exit left part of &&"];
|
||||
58 [label="Enter right part of &&"];
|
||||
59 [label="Access variable R|<local>/x|"];
|
||||
60 [label="Type operator: (R|<local>/x| as R|kotlin/Boolean|)"];
|
||||
61 [label="Const: Boolean(true)"];
|
||||
62 [label="Equality operator =="];
|
||||
63 [label="Exit &&"];
|
||||
}
|
||||
64 [label="Exit when branch condition"];
|
||||
}
|
||||
65 [label="Synthetic else branch"];
|
||||
66 [label="Enter when branch result"];
|
||||
subgraph cluster_16 {
|
||||
color=blue
|
||||
67 [label="Enter block"];
|
||||
68 [label="Access variable R|<local>/x|"];
|
||||
69 [label="Smart cast: R|<local>/x|"];
|
||||
70 [label="Function call: R|<local>/x|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
71 [label="Exit block"];
|
||||
}
|
||||
72 [label="Exit when branch result"];
|
||||
73 [label="Exit when"];
|
||||
}
|
||||
74 [label="Access variable R|<local>/x|"];
|
||||
75 [label="Function call: R|<local>/x|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
|
||||
subgraph cluster_17 {
|
||||
color=blue
|
||||
76 [label="Enter when"];
|
||||
subgraph cluster_18 {
|
||||
color=blue
|
||||
77 [label="Enter when branch condition "];
|
||||
subgraph cluster_19 {
|
||||
color=blue
|
||||
78 [label="Enter ||"];
|
||||
79 [label="Access variable R|<local>/b|"];
|
||||
80 [label="Exit left part of ||"];
|
||||
81 [label="Enter right part of ||"];
|
||||
82 [label="Access variable R|<local>/x|"];
|
||||
83 [label="Type operator: (R|<local>/x| as R|kotlin/Boolean|)"];
|
||||
84 [label="Exit ||"];
|
||||
}
|
||||
85 [label="Exit when branch condition"];
|
||||
}
|
||||
86 [label="Synthetic else branch"];
|
||||
87 [label="Enter when branch result"];
|
||||
subgraph cluster_20 {
|
||||
color=blue
|
||||
88 [label="Enter block"];
|
||||
89 [label="Access variable R|<local>/x|"];
|
||||
90 [label="Function call: R|<local>/x|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
|
||||
91 [label="Exit block"];
|
||||
}
|
||||
92 [label="Exit when branch result"];
|
||||
93 [label="Exit when"];
|
||||
}
|
||||
94 [label="Access variable R|<local>/x|"];
|
||||
95 [label="Function call: R|<local>/x|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
|
||||
96 [label="Exit block"];
|
||||
}
|
||||
97 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
}
|
||||
29 -> {30};
|
||||
30 -> {31};
|
||||
31 -> {32};
|
||||
|
||||
subgraph cluster_8 {
|
||||
color=red
|
||||
32 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
33 [label="Enter block"];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
34 [label="Enter when"];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
35 [label="Enter when branch condition "];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
36 [label="Enter &&"];
|
||||
37 [label="Access variable R|<local>/b|"];
|
||||
38 [label="Exit left part of &&"];
|
||||
39 [label="Enter right part of &&"];
|
||||
40 [label="Access variable R|<local>/x|"];
|
||||
41 [label="Type operator: (R|<local>/x| as R|kotlin/Boolean|)"];
|
||||
42 [label="Exit &&"];
|
||||
}
|
||||
43 [label="Exit when branch condition"];
|
||||
}
|
||||
44 [label="Synthetic else branch"];
|
||||
45 [label="Enter when branch result"];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
46 [label="Enter block"];
|
||||
47 [label="Access variable R|<local>/x|"];
|
||||
48 [label="Smart cast: R|<local>/x|"];
|
||||
49 [label="Function call: R|<local>/x|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
50 [label="Exit block"];
|
||||
}
|
||||
51 [label="Exit when branch result"];
|
||||
52 [label="Exit when"];
|
||||
}
|
||||
53 [label="Access variable R|<local>/x|"];
|
||||
54 [label="Function call: R|<local>/x|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
55 [label="Enter when"];
|
||||
subgraph cluster_15 {
|
||||
color=blue
|
||||
56 [label="Enter when branch condition "];
|
||||
subgraph cluster_16 {
|
||||
color=blue
|
||||
57 [label="Enter &&"];
|
||||
58 [label="Access variable R|<local>/b|"];
|
||||
59 [label="Exit left part of &&"];
|
||||
60 [label="Enter right part of &&"];
|
||||
61 [label="Access variable R|<local>/x|"];
|
||||
62 [label="Type operator: (R|<local>/x| as R|kotlin/Boolean|)"];
|
||||
63 [label="Const: Boolean(true)"];
|
||||
64 [label="Equality operator =="];
|
||||
65 [label="Exit &&"];
|
||||
}
|
||||
66 [label="Exit when branch condition"];
|
||||
}
|
||||
67 [label="Synthetic else branch"];
|
||||
68 [label="Enter when branch result"];
|
||||
subgraph cluster_17 {
|
||||
color=blue
|
||||
69 [label="Enter block"];
|
||||
70 [label="Access variable R|<local>/x|"];
|
||||
71 [label="Smart cast: R|<local>/x|"];
|
||||
72 [label="Function call: R|<local>/x|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
73 [label="Exit block"];
|
||||
}
|
||||
74 [label="Exit when branch result"];
|
||||
75 [label="Exit when"];
|
||||
}
|
||||
76 [label="Access variable R|<local>/x|"];
|
||||
77 [label="Function call: R|<local>/x|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
|
||||
subgraph cluster_18 {
|
||||
color=blue
|
||||
78 [label="Enter when"];
|
||||
subgraph cluster_19 {
|
||||
color=blue
|
||||
79 [label="Enter when branch condition "];
|
||||
subgraph cluster_20 {
|
||||
color=blue
|
||||
80 [label="Enter ||"];
|
||||
81 [label="Access variable R|<local>/b|"];
|
||||
82 [label="Exit left part of ||"];
|
||||
83 [label="Enter right part of ||"];
|
||||
84 [label="Access variable R|<local>/x|"];
|
||||
85 [label="Type operator: (R|<local>/x| as R|kotlin/Boolean|)"];
|
||||
86 [label="Exit ||"];
|
||||
}
|
||||
87 [label="Exit when branch condition"];
|
||||
}
|
||||
88 [label="Synthetic else branch"];
|
||||
89 [label="Enter when branch result"];
|
||||
subgraph cluster_21 {
|
||||
color=blue
|
||||
90 [label="Enter block"];
|
||||
91 [label="Access variable R|<local>/x|"];
|
||||
92 [label="Function call: R|<local>/x|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
|
||||
93 [label="Exit block"];
|
||||
}
|
||||
94 [label="Exit when branch result"];
|
||||
95 [label="Exit when"];
|
||||
}
|
||||
96 [label="Access variable R|<local>/x|"];
|
||||
97 [label="Function call: R|<local>/x|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
|
||||
98 [label="Exit block"];
|
||||
}
|
||||
99 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
}
|
||||
32 -> {33};
|
||||
33 -> {34};
|
||||
34 -> {35};
|
||||
35 -> {36};
|
||||
36 -> {37 40};
|
||||
36 -> {37};
|
||||
37 -> {38};
|
||||
38 -> {39};
|
||||
38 -> {39 42};
|
||||
39 -> {40};
|
||||
40 -> {41};
|
||||
41 -> {42 43};
|
||||
42 -> {50};
|
||||
43 -> {44};
|
||||
44 -> {45};
|
||||
41 -> {42};
|
||||
42 -> {43};
|
||||
43 -> {44 45};
|
||||
44 -> {52};
|
||||
45 -> {46};
|
||||
46 -> {47};
|
||||
47 -> {48};
|
||||
@@ -221,17 +226,17 @@ digraph casts_kt {
|
||||
54 -> {55};
|
||||
55 -> {56};
|
||||
56 -> {57};
|
||||
57 -> {58 63};
|
||||
57 -> {58};
|
||||
58 -> {59};
|
||||
59 -> {60};
|
||||
59 -> {60 65};
|
||||
60 -> {61};
|
||||
61 -> {62};
|
||||
62 -> {63};
|
||||
63 -> {64};
|
||||
64 -> {65 66};
|
||||
65 -> {73};
|
||||
66 -> {67};
|
||||
67 -> {68};
|
||||
64 -> {65};
|
||||
65 -> {66};
|
||||
66 -> {67 68};
|
||||
67 -> {75};
|
||||
68 -> {69};
|
||||
69 -> {70};
|
||||
70 -> {71};
|
||||
@@ -244,15 +249,15 @@ digraph casts_kt {
|
||||
77 -> {78};
|
||||
78 -> {79};
|
||||
79 -> {80};
|
||||
80 -> {81 84};
|
||||
80 -> {81};
|
||||
81 -> {82};
|
||||
82 -> {83};
|
||||
82 -> {83 86};
|
||||
83 -> {84};
|
||||
84 -> {85};
|
||||
85 -> {86 87};
|
||||
86 -> {93};
|
||||
87 -> {88};
|
||||
88 -> {89};
|
||||
85 -> {86};
|
||||
86 -> {87};
|
||||
87 -> {88 89};
|
||||
88 -> {95};
|
||||
89 -> {90};
|
||||
90 -> {91};
|
||||
91 -> {92};
|
||||
@@ -261,116 +266,116 @@ digraph casts_kt {
|
||||
94 -> {95};
|
||||
95 -> {96};
|
||||
96 -> {97};
|
||||
97 -> {98};
|
||||
98 -> {99};
|
||||
|
||||
subgraph cluster_21 {
|
||||
subgraph cluster_22 {
|
||||
color=red
|
||||
98 [label="Enter function test_4" style="filled" fillcolor=red];
|
||||
subgraph cluster_22 {
|
||||
100 [label="Enter function test_4" style="filled" fillcolor=red];
|
||||
subgraph cluster_23 {
|
||||
color=blue
|
||||
99 [label="Enter block"];
|
||||
subgraph cluster_23 {
|
||||
101 [label="Enter block"];
|
||||
subgraph cluster_24 {
|
||||
color=blue
|
||||
100 [label="Enter when"];
|
||||
subgraph cluster_24 {
|
||||
color=blue
|
||||
101 [label="Enter when branch condition "];
|
||||
102 [label="Access variable R|<local>/b|"];
|
||||
103 [label="Type operator: (R|<local>/b| as? R|kotlin/Boolean|)"];
|
||||
104 [label="Const: Null(null)"];
|
||||
105 [label="Equality operator !="];
|
||||
106 [label="Exit when branch condition"];
|
||||
}
|
||||
102 [label="Enter when"];
|
||||
subgraph cluster_25 {
|
||||
color=blue
|
||||
107 [label="Enter when branch condition else"];
|
||||
103 [label="Enter when branch condition "];
|
||||
104 [label="Access variable R|<local>/b|"];
|
||||
105 [label="Type operator: (R|<local>/b| as? R|kotlin/Boolean|)"];
|
||||
106 [label="Const: Null(null)"];
|
||||
107 [label="Equality operator !="];
|
||||
108 [label="Exit when branch condition"];
|
||||
}
|
||||
109 [label="Enter when branch result"];
|
||||
subgraph cluster_26 {
|
||||
color=blue
|
||||
110 [label="Enter block"];
|
||||
111 [label="Access variable R|<local>/b|"];
|
||||
112 [label="Function call: R|<local>/b|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
|
||||
113 [label="Exit block"];
|
||||
109 [label="Enter when branch condition else"];
|
||||
110 [label="Exit when branch condition"];
|
||||
}
|
||||
114 [label="Exit when branch result"];
|
||||
115 [label="Enter when branch result"];
|
||||
111 [label="Enter when branch result"];
|
||||
subgraph cluster_27 {
|
||||
color=blue
|
||||
116 [label="Enter block"];
|
||||
117 [label="Access variable R|<local>/b|"];
|
||||
118 [label="Smart cast: R|<local>/b|"];
|
||||
119 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
120 [label="Exit block"];
|
||||
112 [label="Enter block"];
|
||||
113 [label="Access variable R|<local>/b|"];
|
||||
114 [label="Function call: R|<local>/b|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
|
||||
115 [label="Exit block"];
|
||||
}
|
||||
121 [label="Exit when branch result"];
|
||||
122 [label="Exit when"];
|
||||
}
|
||||
123 [label="Access variable R|<local>/b|"];
|
||||
124 [label="Function call: R|<local>/b|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
|
||||
subgraph cluster_28 {
|
||||
color=blue
|
||||
125 [label="Enter when"];
|
||||
subgraph cluster_29 {
|
||||
116 [label="Exit when branch result"];
|
||||
117 [label="Enter when branch result"];
|
||||
subgraph cluster_28 {
|
||||
color=blue
|
||||
126 [label="Enter when branch condition "];
|
||||
127 [label="Access variable R|<local>/b|"];
|
||||
128 [label="Type operator: (R|<local>/b| as? R|kotlin/Boolean|)"];
|
||||
129 [label="Const: Null(null)"];
|
||||
130 [label="Equality operator =="];
|
||||
131 [label="Exit when branch condition"];
|
||||
118 [label="Enter block"];
|
||||
119 [label="Access variable R|<local>/b|"];
|
||||
120 [label="Smart cast: R|<local>/b|"];
|
||||
121 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
122 [label="Exit block"];
|
||||
}
|
||||
123 [label="Exit when branch result"];
|
||||
124 [label="Exit when"];
|
||||
}
|
||||
125 [label="Access variable R|<local>/b|"];
|
||||
126 [label="Function call: R|<local>/b|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
|
||||
subgraph cluster_29 {
|
||||
color=blue
|
||||
127 [label="Enter when"];
|
||||
subgraph cluster_30 {
|
||||
color=blue
|
||||
132 [label="Enter when branch condition else"];
|
||||
128 [label="Enter when branch condition "];
|
||||
129 [label="Access variable R|<local>/b|"];
|
||||
130 [label="Type operator: (R|<local>/b| as? R|kotlin/Boolean|)"];
|
||||
131 [label="Const: Null(null)"];
|
||||
132 [label="Equality operator =="];
|
||||
133 [label="Exit when branch condition"];
|
||||
}
|
||||
134 [label="Enter when branch result"];
|
||||
subgraph cluster_31 {
|
||||
color=blue
|
||||
135 [label="Enter block"];
|
||||
136 [label="Access variable R|<local>/b|"];
|
||||
137 [label="Smart cast: R|<local>/b|"];
|
||||
138 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
139 [label="Exit block"];
|
||||
134 [label="Enter when branch condition else"];
|
||||
135 [label="Exit when branch condition"];
|
||||
}
|
||||
140 [label="Exit when branch result"];
|
||||
141 [label="Enter when branch result"];
|
||||
136 [label="Enter when branch result"];
|
||||
subgraph cluster_32 {
|
||||
color=blue
|
||||
142 [label="Enter block"];
|
||||
143 [label="Access variable R|<local>/b|"];
|
||||
144 [label="Function call: R|<local>/b|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
|
||||
145 [label="Exit block"];
|
||||
137 [label="Enter block"];
|
||||
138 [label="Access variable R|<local>/b|"];
|
||||
139 [label="Smart cast: R|<local>/b|"];
|
||||
140 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
|
||||
141 [label="Exit block"];
|
||||
}
|
||||
146 [label="Exit when branch result"];
|
||||
147 [label="Exit when"];
|
||||
142 [label="Exit when branch result"];
|
||||
143 [label="Enter when branch result"];
|
||||
subgraph cluster_33 {
|
||||
color=blue
|
||||
144 [label="Enter block"];
|
||||
145 [label="Access variable R|<local>/b|"];
|
||||
146 [label="Function call: R|<local>/b|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
|
||||
147 [label="Exit block"];
|
||||
}
|
||||
148 [label="Exit when branch result"];
|
||||
149 [label="Exit when"];
|
||||
}
|
||||
148 [label="Access variable R|<local>/b|"];
|
||||
149 [label="Function call: R|<local>/b|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
|
||||
150 [label="Exit block"];
|
||||
150 [label="Access variable R|<local>/b|"];
|
||||
151 [label="Function call: R|<local>/b|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
|
||||
152 [label="Exit block"];
|
||||
}
|
||||
151 [label="Exit function test_4" style="filled" fillcolor=red];
|
||||
153 [label="Exit function test_4" style="filled" fillcolor=red];
|
||||
}
|
||||
98 -> {99};
|
||||
99 -> {100};
|
||||
100 -> {101};
|
||||
101 -> {102};
|
||||
102 -> {103};
|
||||
103 -> {104};
|
||||
104 -> {105};
|
||||
105 -> {106};
|
||||
106 -> {107 115};
|
||||
106 -> {107};
|
||||
107 -> {108};
|
||||
108 -> {109};
|
||||
108 -> {109 117};
|
||||
109 -> {110};
|
||||
110 -> {111};
|
||||
111 -> {112};
|
||||
112 -> {113};
|
||||
113 -> {114};
|
||||
114 -> {122};
|
||||
114 -> {115};
|
||||
115 -> {116};
|
||||
116 -> {117};
|
||||
116 -> {124};
|
||||
117 -> {118};
|
||||
118 -> {119};
|
||||
119 -> {120};
|
||||
@@ -385,18 +390,18 @@ digraph casts_kt {
|
||||
128 -> {129};
|
||||
129 -> {130};
|
||||
130 -> {131};
|
||||
131 -> {132 141};
|
||||
131 -> {132};
|
||||
132 -> {133};
|
||||
133 -> {134};
|
||||
133 -> {134 143};
|
||||
134 -> {135};
|
||||
135 -> {136};
|
||||
136 -> {137};
|
||||
137 -> {138};
|
||||
138 -> {139};
|
||||
139 -> {140};
|
||||
140 -> {147};
|
||||
140 -> {141};
|
||||
141 -> {142};
|
||||
142 -> {143};
|
||||
142 -> {149};
|
||||
143 -> {144};
|
||||
144 -> {145};
|
||||
145 -> {146};
|
||||
@@ -405,5 +410,7 @@ digraph casts_kt {
|
||||
148 -> {149};
|
||||
149 -> {150};
|
||||
150 -> {151};
|
||||
151 -> {152};
|
||||
152 -> {153};
|
||||
|
||||
}
|
||||
|
||||
+142
-135
@@ -5,78 +5,83 @@ digraph elvis_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter class A" style="filled" fillcolor=red];
|
||||
1 [label="Exit class A" style="filled" fillcolor=red];
|
||||
0 [label="Enter file elvis.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file elvis.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
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 [label="Enter class A" style="filled" fillcolor=red];
|
||||
3 [label="Exit class A" style="filled" fillcolor=red];
|
||||
}
|
||||
2 -> {3};
|
||||
2 -> {3} [color=green];
|
||||
|
||||
subgraph cluster_2 {
|
||||
color=red
|
||||
4 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_3 {
|
||||
color=blue
|
||||
5 [label="Enter block"];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
6 [label="Enter when"];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
7 [label="Enter when branch condition "];
|
||||
8 [label="Access variable R|<local>/x|"];
|
||||
9 [label="Enter safe call"];
|
||||
10 [label="Access variable R|/A.b|"];
|
||||
11 [label="Exit safe call"];
|
||||
12 [label="Exit lhs of ?:"];
|
||||
13 [label="Enter rhs of ?:"];
|
||||
14 [label="Jump: ^test_1 Unit"];
|
||||
15 [label="Stub" style="filled" fillcolor=gray];
|
||||
16 [label="Lhs of ?: is not null"];
|
||||
17 [label="Exit ?:"];
|
||||
18 [label="Exit when branch condition"];
|
||||
}
|
||||
19 [label="Synthetic else branch"];
|
||||
20 [label="Enter when branch result"];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
21 [label="Enter block"];
|
||||
22 [label="Access variable R|<local>/x|"];
|
||||
23 [label="Smart cast: R|<local>/x|"];
|
||||
24 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
25 [label="Exit block"];
|
||||
}
|
||||
26 [label="Exit when branch result"];
|
||||
27 [label="Exit when"];
|
||||
}
|
||||
28 [label="Exit block"];
|
||||
}
|
||||
29 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
4 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
5 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
}
|
||||
4 -> {5};
|
||||
5 -> {6};
|
||||
|
||||
subgraph cluster_3 {
|
||||
color=red
|
||||
6 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
7 [label="Enter block"];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
8 [label="Enter when"];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
9 [label="Enter when branch condition "];
|
||||
10 [label="Access variable R|<local>/x|"];
|
||||
11 [label="Enter safe call"];
|
||||
12 [label="Access variable R|/A.b|"];
|
||||
13 [label="Exit safe call"];
|
||||
14 [label="Exit lhs of ?:"];
|
||||
15 [label="Enter rhs of ?:"];
|
||||
16 [label="Jump: ^test_1 Unit"];
|
||||
17 [label="Stub" style="filled" fillcolor=gray];
|
||||
18 [label="Lhs of ?: is not null"];
|
||||
19 [label="Exit ?:"];
|
||||
20 [label="Exit when branch condition"];
|
||||
}
|
||||
21 [label="Synthetic else branch"];
|
||||
22 [label="Enter when branch result"];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
23 [label="Enter block"];
|
||||
24 [label="Access variable R|<local>/x|"];
|
||||
25 [label="Smart cast: R|<local>/x|"];
|
||||
26 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
27 [label="Exit block"];
|
||||
}
|
||||
28 [label="Exit when branch result"];
|
||||
29 [label="Exit when"];
|
||||
}
|
||||
30 [label="Exit block"];
|
||||
}
|
||||
31 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
}
|
||||
6 -> {7};
|
||||
7 -> {8};
|
||||
8 -> {9 13};
|
||||
8 -> {9};
|
||||
9 -> {10};
|
||||
10 -> {11};
|
||||
10 -> {11 15};
|
||||
11 -> {12};
|
||||
12 -> {13 16};
|
||||
12 -> {13};
|
||||
13 -> {14};
|
||||
14 -> {29};
|
||||
14 -> {15} [style=dotted];
|
||||
15 -> {17} [style=dotted];
|
||||
16 -> {17};
|
||||
17 -> {18};
|
||||
18 -> {19 20};
|
||||
19 -> {27};
|
||||
20 -> {21};
|
||||
21 -> {22};
|
||||
14 -> {15 18};
|
||||
15 -> {16};
|
||||
16 -> {31};
|
||||
16 -> {17} [style=dotted];
|
||||
17 -> {19} [style=dotted];
|
||||
18 -> {19};
|
||||
19 -> {20};
|
||||
20 -> {21 22};
|
||||
21 -> {29};
|
||||
22 -> {23};
|
||||
23 -> {24};
|
||||
24 -> {25};
|
||||
@@ -84,116 +89,118 @@ digraph elvis_kt {
|
||||
26 -> {27};
|
||||
27 -> {28};
|
||||
28 -> {29};
|
||||
29 -> {30};
|
||||
30 -> {31};
|
||||
|
||||
subgraph cluster_7 {
|
||||
subgraph cluster_8 {
|
||||
color=red
|
||||
30 [label="Enter function test2" style="filled" fillcolor=red];
|
||||
subgraph cluster_8 {
|
||||
32 [label="Enter function test2" style="filled" fillcolor=red];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
31 [label="Enter block"];
|
||||
subgraph cluster_9 {
|
||||
33 [label="Enter block"];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
32 [label="Enter when"];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
33 [label="Enter when branch condition "];
|
||||
34 [label="Access variable R|<local>/b|"];
|
||||
35 [label="Type operator: (R|<local>/b| !is R|kotlin/String|)"];
|
||||
36 [label="Exit when branch condition"];
|
||||
}
|
||||
37 [label="Synthetic else branch"];
|
||||
38 [label="Enter when branch result"];
|
||||
34 [label="Enter when"];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
39 [label="Enter block"];
|
||||
40 [label="Const: String()"];
|
||||
41 [label="Jump: ^test2 String()"];
|
||||
42 [label="Stub" style="filled" fillcolor=gray];
|
||||
43 [label="Exit block" style="filled" fillcolor=gray];
|
||||
35 [label="Enter when branch condition "];
|
||||
36 [label="Access variable R|<local>/b|"];
|
||||
37 [label="Type operator: (R|<local>/b| !is R|kotlin/String|)"];
|
||||
38 [label="Exit when branch condition"];
|
||||
}
|
||||
44 [label="Exit when branch result" style="filled" fillcolor=gray];
|
||||
45 [label="Exit when"];
|
||||
}
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
46 [label="Enter when"];
|
||||
subgraph cluster_13 {
|
||||
39 [label="Synthetic else branch"];
|
||||
40 [label="Enter when branch result"];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
47 [label="Enter when branch condition "];
|
||||
48 [label="Access variable R|<local>/a|"];
|
||||
49 [label="Type operator: (R|<local>/a| !is R|kotlin/String?|)"];
|
||||
50 [label="Exit when branch condition"];
|
||||
41 [label="Enter block"];
|
||||
42 [label="Const: String()"];
|
||||
43 [label="Jump: ^test2 String()"];
|
||||
44 [label="Stub" style="filled" fillcolor=gray];
|
||||
45 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
51 [label="Synthetic else branch"];
|
||||
52 [label="Enter when branch result"];
|
||||
46 [label="Exit when branch result" style="filled" fillcolor=gray];
|
||||
47 [label="Exit when"];
|
||||
}
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
48 [label="Enter when"];
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
53 [label="Enter block"];
|
||||
54 [label="Const: String()"];
|
||||
55 [label="Jump: ^test2 String()"];
|
||||
56 [label="Stub" style="filled" fillcolor=gray];
|
||||
57 [label="Exit block" style="filled" fillcolor=gray];
|
||||
49 [label="Enter when branch condition "];
|
||||
50 [label="Access variable R|<local>/a|"];
|
||||
51 [label="Type operator: (R|<local>/a| !is R|kotlin/String?|)"];
|
||||
52 [label="Exit when branch condition"];
|
||||
}
|
||||
58 [label="Exit when branch result" style="filled" fillcolor=gray];
|
||||
59 [label="Exit when"];
|
||||
53 [label="Synthetic else branch"];
|
||||
54 [label="Enter when branch result"];
|
||||
subgraph cluster_15 {
|
||||
color=blue
|
||||
55 [label="Enter block"];
|
||||
56 [label="Const: String()"];
|
||||
57 [label="Jump: ^test2 String()"];
|
||||
58 [label="Stub" style="filled" fillcolor=gray];
|
||||
59 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
60 [label="Exit when branch result" style="filled" fillcolor=gray];
|
||||
61 [label="Exit when"];
|
||||
}
|
||||
60 [label="Access variable R|<local>/a|"];
|
||||
61 [label="Smart cast: R|<local>/a|"];
|
||||
62 [label="Exit lhs of ?:"];
|
||||
63 [label="Enter rhs of ?:"];
|
||||
64 [label="Access variable R|<local>/b|"];
|
||||
65 [label="Smart cast: R|<local>/b|"];
|
||||
66 [label="Lhs of ?: is not null"];
|
||||
67 [label="Exit ?:"];
|
||||
68 [label="Jump: ^test2 R|<local>/a| ?: R|<local>/b|"];
|
||||
69 [label="Stub" style="filled" fillcolor=gray];
|
||||
70 [label="Exit block" style="filled" fillcolor=gray];
|
||||
62 [label="Access variable R|<local>/a|"];
|
||||
63 [label="Smart cast: R|<local>/a|"];
|
||||
64 [label="Exit lhs of ?:"];
|
||||
65 [label="Enter rhs of ?:"];
|
||||
66 [label="Access variable R|<local>/b|"];
|
||||
67 [label="Smart cast: R|<local>/b|"];
|
||||
68 [label="Lhs of ?: is not null"];
|
||||
69 [label="Exit ?:"];
|
||||
70 [label="Jump: ^test2 R|<local>/a| ?: R|<local>/b|"];
|
||||
71 [label="Stub" style="filled" fillcolor=gray];
|
||||
72 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
71 [label="Exit function test2" style="filled" fillcolor=red];
|
||||
73 [label="Exit function test2" style="filled" fillcolor=red];
|
||||
}
|
||||
30 -> {31};
|
||||
31 -> {32};
|
||||
32 -> {33};
|
||||
33 -> {34};
|
||||
34 -> {35};
|
||||
35 -> {36};
|
||||
36 -> {37 38};
|
||||
37 -> {45};
|
||||
38 -> {39};
|
||||
39 -> {40};
|
||||
36 -> {37};
|
||||
37 -> {38};
|
||||
38 -> {39 40};
|
||||
39 -> {47};
|
||||
40 -> {41};
|
||||
41 -> {71};
|
||||
41 -> {42} [style=dotted];
|
||||
42 -> {43} [style=dotted];
|
||||
41 -> {42};
|
||||
42 -> {43};
|
||||
43 -> {73};
|
||||
43 -> {44} [style=dotted];
|
||||
44 -> {45} [style=dotted];
|
||||
45 -> {46};
|
||||
46 -> {47};
|
||||
45 -> {46} [style=dotted];
|
||||
46 -> {47} [style=dotted];
|
||||
47 -> {48};
|
||||
48 -> {49};
|
||||
49 -> {50};
|
||||
50 -> {51 52};
|
||||
51 -> {59};
|
||||
52 -> {53};
|
||||
53 -> {54};
|
||||
50 -> {51};
|
||||
51 -> {52};
|
||||
52 -> {53 54};
|
||||
53 -> {61};
|
||||
54 -> {55};
|
||||
55 -> {71};
|
||||
55 -> {56} [style=dotted];
|
||||
56 -> {57} [style=dotted];
|
||||
55 -> {56};
|
||||
56 -> {57};
|
||||
57 -> {73};
|
||||
57 -> {58} [style=dotted];
|
||||
58 -> {59} [style=dotted];
|
||||
59 -> {60};
|
||||
60 -> {61};
|
||||
59 -> {60} [style=dotted];
|
||||
60 -> {61} [style=dotted];
|
||||
61 -> {62};
|
||||
62 -> {63 66};
|
||||
62 -> {63};
|
||||
63 -> {64};
|
||||
64 -> {65};
|
||||
65 -> {67};
|
||||
64 -> {65 68};
|
||||
65 -> {66};
|
||||
66 -> {67};
|
||||
67 -> {68};
|
||||
68 -> {71};
|
||||
68 -> {69} [style=dotted];
|
||||
69 -> {70} [style=dotted];
|
||||
67 -> {69};
|
||||
68 -> {69};
|
||||
69 -> {70};
|
||||
70 -> {73};
|
||||
70 -> {71} [style=dotted];
|
||||
71 -> {72} [style=dotted];
|
||||
72 -> {73} [style=dotted];
|
||||
|
||||
}
|
||||
|
||||
+297
-290
@@ -5,65 +5,70 @@ digraph returns_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter function test_0" style="filled" fillcolor=red];
|
||||
subgraph cluster_1 {
|
||||
0 [label="Enter file returns.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file returns.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1} [color=green];
|
||||
|
||||
subgraph cluster_1 {
|
||||
color=red
|
||||
2 [label="Enter function test_0" style="filled" fillcolor=red];
|
||||
subgraph cluster_2 {
|
||||
color=blue
|
||||
1 [label="Enter block"];
|
||||
subgraph cluster_2 {
|
||||
3 [label="Enter block"];
|
||||
subgraph cluster_3 {
|
||||
color=blue
|
||||
2 [label="Enter when"];
|
||||
subgraph cluster_3 {
|
||||
color=blue
|
||||
3 [label="Enter when branch condition "];
|
||||
4 [label="Access variable R|<local>/x|"];
|
||||
5 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
6 [label="Exit when branch condition"];
|
||||
}
|
||||
4 [label="Enter when"];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
7 [label="Enter when branch condition else"];
|
||||
5 [label="Enter when branch condition "];
|
||||
6 [label="Access variable R|<local>/x|"];
|
||||
7 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
8 [label="Exit when branch condition"];
|
||||
}
|
||||
9 [label="Enter when branch result"];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
10 [label="Enter block"];
|
||||
11 [label="Exit block"];
|
||||
9 [label="Enter when branch condition else"];
|
||||
10 [label="Exit when branch condition"];
|
||||
}
|
||||
12 [label="Exit when branch result"];
|
||||
13 [label="Enter when branch result"];
|
||||
11 [label="Enter when branch result"];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
14 [label="Enter block"];
|
||||
15 [label="Access variable R|<local>/x|"];
|
||||
16 [label="Smart cast: R|<local>/x|"];
|
||||
17 [label="Access variable R|kotlin/String.length|"];
|
||||
18 [label="Exit block"];
|
||||
12 [label="Enter block"];
|
||||
13 [label="Exit block"];
|
||||
}
|
||||
19 [label="Exit when branch result"];
|
||||
20 [label="Exit when"];
|
||||
14 [label="Exit when branch result"];
|
||||
15 [label="Enter when branch result"];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
16 [label="Enter block"];
|
||||
17 [label="Access variable R|<local>/x|"];
|
||||
18 [label="Smart cast: R|<local>/x|"];
|
||||
19 [label="Access variable R|kotlin/String.length|"];
|
||||
20 [label="Exit block"];
|
||||
}
|
||||
21 [label="Exit when branch result"];
|
||||
22 [label="Exit when"];
|
||||
}
|
||||
21 [label="Access variable R|<local>/x|"];
|
||||
22 [label="Access variable <Unresolved name: length>#"];
|
||||
23 [label="Exit block"];
|
||||
23 [label="Access variable R|<local>/x|"];
|
||||
24 [label="Access variable <Unresolved name: length>#"];
|
||||
25 [label="Exit block"];
|
||||
}
|
||||
24 [label="Exit function test_0" style="filled" fillcolor=red];
|
||||
26 [label="Exit function test_0" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1};
|
||||
1 -> {2};
|
||||
2 -> {3};
|
||||
3 -> {4};
|
||||
4 -> {5};
|
||||
5 -> {6};
|
||||
6 -> {7 13};
|
||||
6 -> {7};
|
||||
7 -> {8};
|
||||
8 -> {9};
|
||||
8 -> {9 15};
|
||||
9 -> {10};
|
||||
10 -> {11};
|
||||
11 -> {12};
|
||||
12 -> {20};
|
||||
12 -> {13};
|
||||
13 -> {14};
|
||||
14 -> {15};
|
||||
14 -> {22};
|
||||
15 -> {16};
|
||||
16 -> {17};
|
||||
17 -> {18};
|
||||
@@ -73,74 +78,74 @@ digraph returns_kt {
|
||||
21 -> {22};
|
||||
22 -> {23};
|
||||
23 -> {24};
|
||||
24 -> {25};
|
||||
25 -> {26};
|
||||
|
||||
subgraph cluster_7 {
|
||||
subgraph cluster_8 {
|
||||
color=red
|
||||
25 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_8 {
|
||||
27 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
26 [label="Enter block"];
|
||||
subgraph cluster_9 {
|
||||
28 [label="Enter block"];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
27 [label="Enter when"];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
28 [label="Enter when branch condition "];
|
||||
29 [label="Access variable R|<local>/x|"];
|
||||
30 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
31 [label="Exit when branch condition"];
|
||||
}
|
||||
29 [label="Enter when"];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
32 [label="Enter when branch condition else"];
|
||||
30 [label="Enter when branch condition "];
|
||||
31 [label="Access variable R|<local>/x|"];
|
||||
32 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
33 [label="Exit when branch condition"];
|
||||
}
|
||||
34 [label="Enter when branch result"];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
35 [label="Enter block"];
|
||||
36 [label="Jump: ^test_1 Unit"];
|
||||
37 [label="Stub" style="filled" fillcolor=gray];
|
||||
38 [label="Exit block" style="filled" fillcolor=gray];
|
||||
34 [label="Enter when branch condition else"];
|
||||
35 [label="Exit when branch condition"];
|
||||
}
|
||||
39 [label="Exit when branch result" style="filled" fillcolor=gray];
|
||||
40 [label="Enter when branch result"];
|
||||
36 [label="Enter when branch result"];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
41 [label="Enter block"];
|
||||
42 [label="Access variable R|<local>/x|"];
|
||||
43 [label="Smart cast: R|<local>/x|"];
|
||||
44 [label="Access variable R|kotlin/String.length|"];
|
||||
45 [label="Exit block"];
|
||||
37 [label="Enter block"];
|
||||
38 [label="Jump: ^test_1 Unit"];
|
||||
39 [label="Stub" style="filled" fillcolor=gray];
|
||||
40 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
46 [label="Exit when branch result"];
|
||||
47 [label="Exit when"];
|
||||
41 [label="Exit when branch result" style="filled" fillcolor=gray];
|
||||
42 [label="Enter when branch result"];
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
43 [label="Enter block"];
|
||||
44 [label="Access variable R|<local>/x|"];
|
||||
45 [label="Smart cast: R|<local>/x|"];
|
||||
46 [label="Access variable R|kotlin/String.length|"];
|
||||
47 [label="Exit block"];
|
||||
}
|
||||
48 [label="Exit when branch result"];
|
||||
49 [label="Exit when"];
|
||||
}
|
||||
48 [label="Access variable R|<local>/x|"];
|
||||
49 [label="Smart cast: R|<local>/x|"];
|
||||
50 [label="Access variable R|kotlin/String.length|"];
|
||||
51 [label="Exit block"];
|
||||
50 [label="Access variable R|<local>/x|"];
|
||||
51 [label="Smart cast: R|<local>/x|"];
|
||||
52 [label="Access variable R|kotlin/String.length|"];
|
||||
53 [label="Exit block"];
|
||||
}
|
||||
52 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
54 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
}
|
||||
25 -> {26};
|
||||
26 -> {27};
|
||||
27 -> {28};
|
||||
28 -> {29};
|
||||
29 -> {30};
|
||||
30 -> {31};
|
||||
31 -> {32 40};
|
||||
31 -> {32};
|
||||
32 -> {33};
|
||||
33 -> {34};
|
||||
33 -> {34 42};
|
||||
34 -> {35};
|
||||
35 -> {36};
|
||||
36 -> {52};
|
||||
36 -> {37} [style=dotted];
|
||||
37 -> {38} [style=dotted];
|
||||
36 -> {37};
|
||||
37 -> {38};
|
||||
38 -> {54};
|
||||
38 -> {39} [style=dotted];
|
||||
39 -> {47} [style=dotted];
|
||||
40 -> {41};
|
||||
41 -> {42};
|
||||
39 -> {40} [style=dotted];
|
||||
40 -> {41} [style=dotted];
|
||||
41 -> {49} [style=dotted];
|
||||
42 -> {43};
|
||||
43 -> {44};
|
||||
44 -> {45};
|
||||
@@ -151,150 +156,150 @@ digraph returns_kt {
|
||||
49 -> {50};
|
||||
50 -> {51};
|
||||
51 -> {52};
|
||||
|
||||
subgraph cluster_14 {
|
||||
color=red
|
||||
53 [label="Enter class A" style="filled" fillcolor=red];
|
||||
54 [label="Exit class A" style="filled" fillcolor=red];
|
||||
}
|
||||
53 -> {54} [color=green];
|
||||
52 -> {53};
|
||||
53 -> {54};
|
||||
|
||||
subgraph cluster_15 {
|
||||
color=red
|
||||
55 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
56 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
55 [label="Enter class A" style="filled" fillcolor=red];
|
||||
56 [label="Exit class A" style="filled" fillcolor=red];
|
||||
}
|
||||
55 -> {56};
|
||||
55 -> {56} [color=green];
|
||||
|
||||
subgraph cluster_16 {
|
||||
color=red
|
||||
57 [label="Enter class B" style="filled" fillcolor=red];
|
||||
58 [label="Exit class B" style="filled" fillcolor=red];
|
||||
57 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
58 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
}
|
||||
57 -> {58} [color=green];
|
||||
57 -> {58};
|
||||
|
||||
subgraph cluster_17 {
|
||||
color=red
|
||||
59 [label="Enter function bar" style="filled" fillcolor=red];
|
||||
60 [label="Exit function bar" style="filled" fillcolor=red];
|
||||
59 [label="Enter class B" style="filled" fillcolor=red];
|
||||
60 [label="Exit class B" style="filled" fillcolor=red];
|
||||
}
|
||||
59 -> {60};
|
||||
59 -> {60} [color=green];
|
||||
|
||||
subgraph cluster_18 {
|
||||
color=red
|
||||
61 [label="Enter class C" style="filled" fillcolor=red];
|
||||
62 [label="Exit class C" style="filled" fillcolor=red];
|
||||
61 [label="Enter function bar" style="filled" fillcolor=red];
|
||||
62 [label="Exit function bar" style="filled" fillcolor=red];
|
||||
}
|
||||
61 -> {62} [color=green];
|
||||
61 -> {62};
|
||||
|
||||
subgraph cluster_19 {
|
||||
color=red
|
||||
63 [label="Enter function baz" style="filled" fillcolor=red];
|
||||
64 [label="Exit function baz" style="filled" fillcolor=red];
|
||||
63 [label="Enter class C" style="filled" fillcolor=red];
|
||||
64 [label="Exit class C" style="filled" fillcolor=red];
|
||||
}
|
||||
63 -> {64};
|
||||
63 -> {64} [color=green];
|
||||
|
||||
subgraph cluster_20 {
|
||||
color=red
|
||||
65 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_21 {
|
||||
65 [label="Enter function baz" style="filled" fillcolor=red];
|
||||
66 [label="Exit function baz" style="filled" fillcolor=red];
|
||||
}
|
||||
65 -> {66};
|
||||
|
||||
subgraph cluster_21 {
|
||||
color=red
|
||||
67 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_22 {
|
||||
color=blue
|
||||
66 [label="Enter block"];
|
||||
subgraph cluster_22 {
|
||||
68 [label="Enter block"];
|
||||
subgraph cluster_23 {
|
||||
color=blue
|
||||
67 [label="Enter when"];
|
||||
subgraph cluster_23 {
|
||||
color=blue
|
||||
68 [label="Enter when branch condition "];
|
||||
69 [label="Access variable R|<local>/x|"];
|
||||
70 [label="Type operator: (R|<local>/x| is R|B|)"];
|
||||
71 [label="Exit when branch condition"];
|
||||
}
|
||||
69 [label="Enter when"];
|
||||
subgraph cluster_24 {
|
||||
color=blue
|
||||
72 [label="Enter when branch condition "];
|
||||
73 [label="Access variable R|<local>/x|"];
|
||||
74 [label="Type operator: (R|<local>/x| is R|C|)"];
|
||||
75 [label="Exit when branch condition"];
|
||||
70 [label="Enter when branch condition "];
|
||||
71 [label="Access variable R|<local>/x|"];
|
||||
72 [label="Type operator: (R|<local>/x| is R|B|)"];
|
||||
73 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_25 {
|
||||
color=blue
|
||||
76 [label="Enter when branch condition else"];
|
||||
74 [label="Enter when branch condition "];
|
||||
75 [label="Access variable R|<local>/x|"];
|
||||
76 [label="Type operator: (R|<local>/x| is R|C|)"];
|
||||
77 [label="Exit when branch condition"];
|
||||
}
|
||||
78 [label="Enter when branch result"];
|
||||
subgraph cluster_26 {
|
||||
color=blue
|
||||
79 [label="Enter block"];
|
||||
80 [label="Jump: ^test_2 Unit"];
|
||||
81 [label="Stub" style="filled" fillcolor=gray];
|
||||
82 [label="Exit block" style="filled" fillcolor=gray];
|
||||
78 [label="Enter when branch condition else"];
|
||||
79 [label="Exit when branch condition"];
|
||||
}
|
||||
83 [label="Exit when branch result" style="filled" fillcolor=gray];
|
||||
84 [label="Enter when branch result"];
|
||||
80 [label="Enter when branch result"];
|
||||
subgraph cluster_27 {
|
||||
color=blue
|
||||
85 [label="Enter block"];
|
||||
86 [label="Access variable R|<local>/x|"];
|
||||
87 [label="Smart cast: R|<local>/x|"];
|
||||
88 [label="Function call: R|<local>/x|.R|/C.baz|()" style="filled" fillcolor=yellow];
|
||||
89 [label="Exit block"];
|
||||
81 [label="Enter block"];
|
||||
82 [label="Jump: ^test_2 Unit"];
|
||||
83 [label="Stub" style="filled" fillcolor=gray];
|
||||
84 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
90 [label="Exit when branch result"];
|
||||
91 [label="Enter when branch result"];
|
||||
85 [label="Exit when branch result" style="filled" fillcolor=gray];
|
||||
86 [label="Enter when branch result"];
|
||||
subgraph cluster_28 {
|
||||
color=blue
|
||||
92 [label="Enter block"];
|
||||
93 [label="Access variable R|<local>/x|"];
|
||||
94 [label="Smart cast: R|<local>/x|"];
|
||||
95 [label="Function call: R|<local>/x|.R|/B.bar|()" style="filled" fillcolor=yellow];
|
||||
96 [label="Exit block"];
|
||||
87 [label="Enter block"];
|
||||
88 [label="Access variable R|<local>/x|"];
|
||||
89 [label="Smart cast: R|<local>/x|"];
|
||||
90 [label="Function call: R|<local>/x|.R|/C.baz|()" style="filled" fillcolor=yellow];
|
||||
91 [label="Exit block"];
|
||||
}
|
||||
97 [label="Exit when branch result"];
|
||||
98 [label="Exit when"];
|
||||
92 [label="Exit when branch result"];
|
||||
93 [label="Enter when branch result"];
|
||||
subgraph cluster_29 {
|
||||
color=blue
|
||||
94 [label="Enter block"];
|
||||
95 [label="Access variable R|<local>/x|"];
|
||||
96 [label="Smart cast: R|<local>/x|"];
|
||||
97 [label="Function call: R|<local>/x|.R|/B.bar|()" style="filled" fillcolor=yellow];
|
||||
98 [label="Exit block"];
|
||||
}
|
||||
99 [label="Exit when branch result"];
|
||||
100 [label="Exit when"];
|
||||
}
|
||||
99 [label="Access variable R|<local>/x|"];
|
||||
100 [label="Smart cast: R|<local>/x|"];
|
||||
101 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
102 [label="Access variable R|<local>/x|"];
|
||||
103 [label="Smart cast: R|<local>/x|"];
|
||||
104 [label="Function call: R|<local>/x|.<Unresolved name: bar>#()" style="filled" fillcolor=yellow];
|
||||
105 [label="Access variable R|<local>/x|"];
|
||||
106 [label="Smart cast: R|<local>/x|"];
|
||||
107 [label="Function call: R|<local>/x|.<Unresolved name: baz>#()" style="filled" fillcolor=yellow];
|
||||
108 [label="Exit block"];
|
||||
101 [label="Access variable R|<local>/x|"];
|
||||
102 [label="Smart cast: R|<local>/x|"];
|
||||
103 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
104 [label="Access variable R|<local>/x|"];
|
||||
105 [label="Smart cast: R|<local>/x|"];
|
||||
106 [label="Function call: R|<local>/x|.<Unresolved name: bar>#()" style="filled" fillcolor=yellow];
|
||||
107 [label="Access variable R|<local>/x|"];
|
||||
108 [label="Smart cast: R|<local>/x|"];
|
||||
109 [label="Function call: R|<local>/x|.<Unresolved name: baz>#()" style="filled" fillcolor=yellow];
|
||||
110 [label="Exit block"];
|
||||
}
|
||||
109 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
111 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
}
|
||||
65 -> {66};
|
||||
66 -> {67};
|
||||
67 -> {68};
|
||||
68 -> {69};
|
||||
69 -> {70};
|
||||
70 -> {71};
|
||||
71 -> {72 91};
|
||||
71 -> {72};
|
||||
72 -> {73};
|
||||
73 -> {74};
|
||||
73 -> {74 93};
|
||||
74 -> {75};
|
||||
75 -> {76 84};
|
||||
75 -> {76};
|
||||
76 -> {77};
|
||||
77 -> {78};
|
||||
77 -> {78 86};
|
||||
78 -> {79};
|
||||
79 -> {80};
|
||||
80 -> {109};
|
||||
80 -> {81} [style=dotted];
|
||||
81 -> {82} [style=dotted];
|
||||
80 -> {81};
|
||||
81 -> {82};
|
||||
82 -> {111};
|
||||
82 -> {83} [style=dotted];
|
||||
83 -> {98} [style=dotted];
|
||||
84 -> {85};
|
||||
85 -> {86};
|
||||
83 -> {84} [style=dotted];
|
||||
84 -> {85} [style=dotted];
|
||||
85 -> {100} [style=dotted];
|
||||
86 -> {87};
|
||||
87 -> {88};
|
||||
88 -> {89};
|
||||
89 -> {90};
|
||||
90 -> {98};
|
||||
90 -> {91};
|
||||
91 -> {92};
|
||||
92 -> {93};
|
||||
92 -> {100};
|
||||
93 -> {94};
|
||||
94 -> {95};
|
||||
95 -> {96};
|
||||
@@ -311,84 +316,84 @@ digraph returns_kt {
|
||||
106 -> {107};
|
||||
107 -> {108};
|
||||
108 -> {109};
|
||||
109 -> {110};
|
||||
110 -> {111};
|
||||
|
||||
subgraph cluster_29 {
|
||||
subgraph cluster_30 {
|
||||
color=red
|
||||
110 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_30 {
|
||||
112 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_31 {
|
||||
color=blue
|
||||
111 [label="Enter block"];
|
||||
subgraph cluster_31 {
|
||||
113 [label="Enter block"];
|
||||
subgraph cluster_32 {
|
||||
color=blue
|
||||
112 [label="Enter when"];
|
||||
subgraph cluster_32 {
|
||||
color=blue
|
||||
113 [label="Enter when branch condition "];
|
||||
114 [label="Access variable R|<local>/x|"];
|
||||
115 [label="Type operator: (R|<local>/x| is R|B|)"];
|
||||
116 [label="Exit when branch condition"];
|
||||
}
|
||||
114 [label="Enter when"];
|
||||
subgraph cluster_33 {
|
||||
color=blue
|
||||
117 [label="Enter when branch condition "];
|
||||
118 [label="Access variable R|<local>/x|"];
|
||||
119 [label="Type operator: (R|<local>/x| is R|C|)"];
|
||||
120 [label="Exit when branch condition"];
|
||||
115 [label="Enter when branch condition "];
|
||||
116 [label="Access variable R|<local>/x|"];
|
||||
117 [label="Type operator: (R|<local>/x| is R|B|)"];
|
||||
118 [label="Exit when branch condition"];
|
||||
}
|
||||
121 [label="Synthetic else branch"];
|
||||
122 [label="Enter when branch result"];
|
||||
subgraph cluster_34 {
|
||||
color=blue
|
||||
123 [label="Enter block"];
|
||||
124 [label="Access variable R|<local>/x|"];
|
||||
125 [label="Smart cast: R|<local>/x|"];
|
||||
126 [label="Function call: R|<local>/x|.R|/C.baz|()" style="filled" fillcolor=yellow];
|
||||
127 [label="Exit block"];
|
||||
119 [label="Enter when branch condition "];
|
||||
120 [label="Access variable R|<local>/x|"];
|
||||
121 [label="Type operator: (R|<local>/x| is R|C|)"];
|
||||
122 [label="Exit when branch condition"];
|
||||
}
|
||||
128 [label="Exit when branch result"];
|
||||
129 [label="Enter when branch result"];
|
||||
123 [label="Synthetic else branch"];
|
||||
124 [label="Enter when branch result"];
|
||||
subgraph cluster_35 {
|
||||
color=blue
|
||||
130 [label="Enter block"];
|
||||
131 [label="Access variable R|<local>/x|"];
|
||||
132 [label="Smart cast: R|<local>/x|"];
|
||||
133 [label="Function call: R|<local>/x|.R|/B.bar|()" style="filled" fillcolor=yellow];
|
||||
134 [label="Exit block"];
|
||||
125 [label="Enter block"];
|
||||
126 [label="Access variable R|<local>/x|"];
|
||||
127 [label="Smart cast: R|<local>/x|"];
|
||||
128 [label="Function call: R|<local>/x|.R|/C.baz|()" style="filled" fillcolor=yellow];
|
||||
129 [label="Exit block"];
|
||||
}
|
||||
135 [label="Exit when branch result"];
|
||||
136 [label="Exit when"];
|
||||
130 [label="Exit when branch result"];
|
||||
131 [label="Enter when branch result"];
|
||||
subgraph cluster_36 {
|
||||
color=blue
|
||||
132 [label="Enter block"];
|
||||
133 [label="Access variable R|<local>/x|"];
|
||||
134 [label="Smart cast: R|<local>/x|"];
|
||||
135 [label="Function call: R|<local>/x|.R|/B.bar|()" style="filled" fillcolor=yellow];
|
||||
136 [label="Exit block"];
|
||||
}
|
||||
137 [label="Exit when branch result"];
|
||||
138 [label="Exit when"];
|
||||
}
|
||||
137 [label="Access variable R|<local>/x|"];
|
||||
138 [label="Function call: R|<local>/x|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
139 [label="Access variable R|<local>/x|"];
|
||||
140 [label="Function call: R|<local>/x|.<Unresolved name: bar>#()" style="filled" fillcolor=yellow];
|
||||
140 [label="Function call: R|<local>/x|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
141 [label="Access variable R|<local>/x|"];
|
||||
142 [label="Function call: R|<local>/x|.<Unresolved name: baz>#()" style="filled" fillcolor=yellow];
|
||||
143 [label="Exit block"];
|
||||
142 [label="Function call: R|<local>/x|.<Unresolved name: bar>#()" style="filled" fillcolor=yellow];
|
||||
143 [label="Access variable R|<local>/x|"];
|
||||
144 [label="Function call: R|<local>/x|.<Unresolved name: baz>#()" style="filled" fillcolor=yellow];
|
||||
145 [label="Exit block"];
|
||||
}
|
||||
144 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
146 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
}
|
||||
110 -> {111};
|
||||
111 -> {112};
|
||||
112 -> {113};
|
||||
113 -> {114};
|
||||
114 -> {115};
|
||||
115 -> {116};
|
||||
116 -> {117 129};
|
||||
116 -> {117};
|
||||
117 -> {118};
|
||||
118 -> {119};
|
||||
118 -> {119 131};
|
||||
119 -> {120};
|
||||
120 -> {121 122};
|
||||
121 -> {136};
|
||||
122 -> {123};
|
||||
123 -> {124};
|
||||
120 -> {121};
|
||||
121 -> {122};
|
||||
122 -> {123 124};
|
||||
123 -> {138};
|
||||
124 -> {125};
|
||||
125 -> {126};
|
||||
126 -> {127};
|
||||
127 -> {128};
|
||||
128 -> {136};
|
||||
128 -> {129};
|
||||
129 -> {130};
|
||||
130 -> {131};
|
||||
130 -> {138};
|
||||
131 -> {132};
|
||||
132 -> {133};
|
||||
133 -> {134};
|
||||
@@ -402,116 +407,118 @@ digraph returns_kt {
|
||||
141 -> {142};
|
||||
142 -> {143};
|
||||
143 -> {144};
|
||||
|
||||
subgraph cluster_36 {
|
||||
color=red
|
||||
145 [label="Enter function runHigherOrder" style="filled" fillcolor=red];
|
||||
subgraph cluster_37 {
|
||||
color=blue
|
||||
146 [label="Enter block"];
|
||||
147 [label="Function call: R|<local>/f|.R|SubstitutionOverride<kotlin/Function0.invoke: R|T|>|()" style="filled" fillcolor=yellow];
|
||||
148 [label="Jump: ^runHigherOrder R|<local>/f|.R|SubstitutionOverride<kotlin/Function0.invoke: R|T|>|()"];
|
||||
149 [label="Stub" style="filled" fillcolor=gray];
|
||||
150 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
151 [label="Exit function runHigherOrder" style="filled" fillcolor=red];
|
||||
}
|
||||
144 -> {145};
|
||||
145 -> {146};
|
||||
146 -> {147};
|
||||
|
||||
subgraph cluster_37 {
|
||||
color=red
|
||||
147 [label="Enter function runHigherOrder" style="filled" fillcolor=red];
|
||||
subgraph cluster_38 {
|
||||
color=blue
|
||||
148 [label="Enter block"];
|
||||
149 [label="Function call: R|<local>/f|.R|SubstitutionOverride<kotlin/Function0.invoke: R|T|>|()" style="filled" fillcolor=yellow];
|
||||
150 [label="Jump: ^runHigherOrder R|<local>/f|.R|SubstitutionOverride<kotlin/Function0.invoke: R|T|>|()"];
|
||||
151 [label="Stub" style="filled" fillcolor=gray];
|
||||
152 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
153 [label="Exit function runHigherOrder" style="filled" fillcolor=red];
|
||||
}
|
||||
147 -> {148};
|
||||
148 -> {151};
|
||||
148 -> {149} [style=dotted];
|
||||
149 -> {150} [style=dotted];
|
||||
148 -> {149};
|
||||
149 -> {150};
|
||||
150 -> {153};
|
||||
150 -> {151} [style=dotted];
|
||||
151 -> {152} [style=dotted];
|
||||
152 -> {153} [style=dotted];
|
||||
|
||||
subgraph cluster_38 {
|
||||
subgraph cluster_39 {
|
||||
color=red
|
||||
152 [label="Enter function <getter>" style="filled" fillcolor=red];
|
||||
subgraph cluster_39 {
|
||||
154 [label="Enter function <getter>" style="filled" fillcolor=red];
|
||||
subgraph cluster_40 {
|
||||
color=blue
|
||||
153 [label="Enter block"];
|
||||
154 [label="Access variable R|kotlin/String.length|"];
|
||||
155 [label="Jump: ^ this@R|/ext|.R|kotlin/String.length|"];
|
||||
156 [label="Stub" style="filled" fillcolor=gray];
|
||||
157 [label="Exit block" style="filled" fillcolor=gray];
|
||||
155 [label="Enter block"];
|
||||
156 [label="Access variable R|kotlin/String.length|"];
|
||||
157 [label="Jump: ^ this@R|/ext|.R|kotlin/String.length|"];
|
||||
158 [label="Stub" style="filled" fillcolor=gray];
|
||||
159 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
158 [label="Exit function <getter>" style="filled" fillcolor=red];
|
||||
160 [label="Exit function <getter>" style="filled" fillcolor=red];
|
||||
}
|
||||
152 -> {153};
|
||||
153 -> {154};
|
||||
154 -> {155};
|
||||
155 -> {158};
|
||||
155 -> {156} [style=dotted];
|
||||
156 -> {157} [style=dotted];
|
||||
155 -> {156};
|
||||
156 -> {157};
|
||||
157 -> {160};
|
||||
157 -> {158} [style=dotted];
|
||||
158 -> {159} [style=dotted];
|
||||
159 -> {160} [style=dotted];
|
||||
|
||||
subgraph cluster_40 {
|
||||
subgraph cluster_41 {
|
||||
color=red
|
||||
159 [label="Enter function test_4" style="filled" fillcolor=red];
|
||||
subgraph cluster_41 {
|
||||
161 [label="Enter function test_4" style="filled" fillcolor=red];
|
||||
subgraph cluster_42 {
|
||||
color=blue
|
||||
160 [label="Enter block"];
|
||||
161 [label="Access variable R|<local>/a|"];
|
||||
162 [label="Type operator: (R|<local>/a| as? R|kotlin/String|)"];
|
||||
163 [label="Variable declaration: lval s: R|kotlin/String?|"];
|
||||
164 [label="Access variable R|<local>/s|"];
|
||||
165 [label="Enter safe call"];
|
||||
166 [label="Access variable R|/ext|"];
|
||||
167 [label="Exit safe call"];
|
||||
168 [label="Exit lhs of ?:"];
|
||||
169 [label="Enter rhs of ?:"];
|
||||
170 [label="Jump: ^test_4 Unit"];
|
||||
171 [label="Stub" style="filled" fillcolor=gray];
|
||||
172 [label="Lhs of ?: is not null"];
|
||||
173 [label="Exit ?:"];
|
||||
174 [label="Variable declaration: lval length: R|kotlin/Int|"];
|
||||
175 [label="Postponed enter to lambda"];
|
||||
subgraph cluster_42 {
|
||||
162 [label="Enter block"];
|
||||
163 [label="Access variable R|<local>/a|"];
|
||||
164 [label="Type operator: (R|<local>/a| as? R|kotlin/String|)"];
|
||||
165 [label="Variable declaration: lval s: R|kotlin/String?|"];
|
||||
166 [label="Access variable R|<local>/s|"];
|
||||
167 [label="Enter safe call"];
|
||||
168 [label="Access variable R|/ext|"];
|
||||
169 [label="Exit safe call"];
|
||||
170 [label="Exit lhs of ?:"];
|
||||
171 [label="Enter rhs of ?:"];
|
||||
172 [label="Jump: ^test_4 Unit"];
|
||||
173 [label="Stub" style="filled" fillcolor=gray];
|
||||
174 [label="Lhs of ?: is not null"];
|
||||
175 [label="Exit ?:"];
|
||||
176 [label="Variable declaration: lval length: R|kotlin/Int|"];
|
||||
177 [label="Postponed enter to lambda"];
|
||||
subgraph cluster_43 {
|
||||
color=blue
|
||||
176 [label="Enter function <anonymous>" style="filled" fillcolor=red];
|
||||
subgraph cluster_43 {
|
||||
178 [label="Enter function <anonymous>" style="filled" fillcolor=red];
|
||||
subgraph cluster_44 {
|
||||
color=blue
|
||||
177 [label="Enter block"];
|
||||
178 [label="Access variable R|<local>/s|"];
|
||||
179 [label="Smart cast: R|<local>/s|"];
|
||||
180 [label="Access variable R|kotlin/String.length|"];
|
||||
181 [label="Exit block"];
|
||||
179 [label="Enter block"];
|
||||
180 [label="Access variable R|<local>/s|"];
|
||||
181 [label="Smart cast: R|<local>/s|"];
|
||||
182 [label="Access variable R|kotlin/String.length|"];
|
||||
183 [label="Exit block"];
|
||||
}
|
||||
182 [label="Exit function <anonymous>" style="filled" fillcolor=red];
|
||||
184 [label="Exit function <anonymous>" style="filled" fillcolor=red];
|
||||
}
|
||||
183 [label="Postponed exit from lambda"];
|
||||
184 [label="Function call: R|/runHigherOrder|<R|kotlin/Int|>(...)" style="filled" fillcolor=yellow];
|
||||
185 [label="Exit block"];
|
||||
185 [label="Postponed exit from lambda"];
|
||||
186 [label="Function call: R|/runHigherOrder|<R|kotlin/Int|>(...)" style="filled" fillcolor=yellow];
|
||||
187 [label="Exit block"];
|
||||
}
|
||||
186 [label="Exit function test_4" style="filled" fillcolor=red];
|
||||
188 [label="Exit function test_4" style="filled" fillcolor=red];
|
||||
}
|
||||
159 -> {160};
|
||||
160 -> {161};
|
||||
161 -> {162};
|
||||
162 -> {163};
|
||||
163 -> {164};
|
||||
164 -> {165 169};
|
||||
164 -> {165};
|
||||
165 -> {166};
|
||||
166 -> {167};
|
||||
166 -> {167 171};
|
||||
167 -> {168};
|
||||
168 -> {169 172};
|
||||
168 -> {169};
|
||||
169 -> {170};
|
||||
170 -> {186};
|
||||
170 -> {171} [style=dotted];
|
||||
171 -> {173} [style=dotted];
|
||||
172 -> {173};
|
||||
173 -> {174};
|
||||
170 -> {171 174};
|
||||
171 -> {172};
|
||||
172 -> {188};
|
||||
172 -> {173} [style=dotted];
|
||||
173 -> {175} [style=dotted];
|
||||
174 -> {175};
|
||||
175 -> {176 183 184};
|
||||
175 -> {176} [style=dashed];
|
||||
175 -> {176};
|
||||
176 -> {177};
|
||||
177 -> {178};
|
||||
177 -> {178 185 186};
|
||||
177 -> {178} [style=dashed];
|
||||
178 -> {179};
|
||||
179 -> {180};
|
||||
180 -> {181};
|
||||
181 -> {182};
|
||||
182 -> {183};
|
||||
183 -> {184};
|
||||
184 -> {185};
|
||||
185 -> {186};
|
||||
186 -> {187};
|
||||
187 -> {188};
|
||||
|
||||
}
|
||||
|
||||
+122
-115
@@ -5,49 +5,54 @@ digraph simpleIf_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_1 {
|
||||
0 [label="Enter file simpleIf.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file simpleIf.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1} [color=green];
|
||||
|
||||
subgraph cluster_1 {
|
||||
color=red
|
||||
2 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_2 {
|
||||
color=blue
|
||||
1 [label="Enter block"];
|
||||
subgraph cluster_2 {
|
||||
3 [label="Enter block"];
|
||||
subgraph cluster_3 {
|
||||
color=blue
|
||||
2 [label="Enter when"];
|
||||
subgraph cluster_3 {
|
||||
color=blue
|
||||
3 [label="Enter when branch condition "];
|
||||
4 [label="Access variable R|<local>/x|"];
|
||||
5 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
6 [label="Exit when branch condition"];
|
||||
}
|
||||
7 [label="Synthetic else branch"];
|
||||
8 [label="Enter when branch result"];
|
||||
4 [label="Enter when"];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
9 [label="Enter block"];
|
||||
10 [label="Access variable R|<local>/x|"];
|
||||
11 [label="Smart cast: R|<local>/x|"];
|
||||
12 [label="Access variable R|kotlin/String.length|"];
|
||||
13 [label="Exit block"];
|
||||
5 [label="Enter when branch condition "];
|
||||
6 [label="Access variable R|<local>/x|"];
|
||||
7 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
8 [label="Exit when branch condition"];
|
||||
}
|
||||
14 [label="Exit when branch result"];
|
||||
15 [label="Exit when"];
|
||||
9 [label="Synthetic else branch"];
|
||||
10 [label="Enter when branch result"];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
11 [label="Enter block"];
|
||||
12 [label="Access variable R|<local>/x|"];
|
||||
13 [label="Smart cast: R|<local>/x|"];
|
||||
14 [label="Access variable R|kotlin/String.length|"];
|
||||
15 [label="Exit block"];
|
||||
}
|
||||
16 [label="Exit when branch result"];
|
||||
17 [label="Exit when"];
|
||||
}
|
||||
16 [label="Access variable R|<local>/x|"];
|
||||
17 [label="Access variable <Unresolved name: length>#"];
|
||||
18 [label="Exit block"];
|
||||
18 [label="Access variable R|<local>/x|"];
|
||||
19 [label="Access variable <Unresolved name: length>#"];
|
||||
20 [label="Exit block"];
|
||||
}
|
||||
19 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
21 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1};
|
||||
1 -> {2};
|
||||
2 -> {3};
|
||||
3 -> {4};
|
||||
4 -> {5};
|
||||
5 -> {6};
|
||||
6 -> {7 8};
|
||||
7 -> {15};
|
||||
8 -> {9};
|
||||
9 -> {10};
|
||||
6 -> {7};
|
||||
7 -> {8};
|
||||
8 -> {9 10};
|
||||
9 -> {17};
|
||||
10 -> {11};
|
||||
11 -> {12};
|
||||
12 -> {13};
|
||||
@@ -57,56 +62,56 @@ digraph simpleIf_kt {
|
||||
16 -> {17};
|
||||
17 -> {18};
|
||||
18 -> {19};
|
||||
19 -> {20};
|
||||
20 -> {21};
|
||||
|
||||
subgraph cluster_5 {
|
||||
subgraph cluster_6 {
|
||||
color=red
|
||||
20 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_6 {
|
||||
22 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
21 [label="Enter block"];
|
||||
22 [label="Access variable R|<local>/x|"];
|
||||
23 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
24 [label="Variable declaration: lval b: R|kotlin/Boolean|"];
|
||||
subgraph cluster_7 {
|
||||
23 [label="Enter block"];
|
||||
24 [label="Access variable R|<local>/x|"];
|
||||
25 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
26 [label="Variable declaration: lval b: R|kotlin/Boolean|"];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
25 [label="Enter when"];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
26 [label="Enter when branch condition "];
|
||||
27 [label="Access variable R|<local>/b|"];
|
||||
28 [label="Exit when branch condition"];
|
||||
}
|
||||
29 [label="Synthetic else branch"];
|
||||
30 [label="Enter when branch result"];
|
||||
27 [label="Enter when"];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
31 [label="Enter block"];
|
||||
32 [label="Access variable R|<local>/x|"];
|
||||
33 [label="Smart cast: R|<local>/x|"];
|
||||
34 [label="Access variable R|kotlin/String.length|"];
|
||||
35 [label="Exit block"];
|
||||
28 [label="Enter when branch condition "];
|
||||
29 [label="Access variable R|<local>/b|"];
|
||||
30 [label="Exit when branch condition"];
|
||||
}
|
||||
36 [label="Exit when branch result"];
|
||||
37 [label="Exit when"];
|
||||
31 [label="Synthetic else branch"];
|
||||
32 [label="Enter when branch result"];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
33 [label="Enter block"];
|
||||
34 [label="Access variable R|<local>/x|"];
|
||||
35 [label="Smart cast: R|<local>/x|"];
|
||||
36 [label="Access variable R|kotlin/String.length|"];
|
||||
37 [label="Exit block"];
|
||||
}
|
||||
38 [label="Exit when branch result"];
|
||||
39 [label="Exit when"];
|
||||
}
|
||||
38 [label="Access variable R|<local>/x|"];
|
||||
39 [label="Access variable <Unresolved name: length>#"];
|
||||
40 [label="Exit block"];
|
||||
40 [label="Access variable R|<local>/x|"];
|
||||
41 [label="Access variable <Unresolved name: length>#"];
|
||||
42 [label="Exit block"];
|
||||
}
|
||||
41 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
43 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
}
|
||||
20 -> {21};
|
||||
21 -> {22};
|
||||
22 -> {23};
|
||||
23 -> {24};
|
||||
24 -> {25};
|
||||
25 -> {26};
|
||||
26 -> {27};
|
||||
27 -> {28};
|
||||
28 -> {29 30};
|
||||
29 -> {37};
|
||||
30 -> {31};
|
||||
31 -> {32};
|
||||
28 -> {29};
|
||||
29 -> {30};
|
||||
30 -> {31 32};
|
||||
31 -> {39};
|
||||
32 -> {33};
|
||||
33 -> {34};
|
||||
34 -> {35};
|
||||
@@ -116,83 +121,83 @@ digraph simpleIf_kt {
|
||||
38 -> {39};
|
||||
39 -> {40};
|
||||
40 -> {41};
|
||||
41 -> {42};
|
||||
42 -> {43};
|
||||
|
||||
subgraph cluster_10 {
|
||||
subgraph cluster_11 {
|
||||
color=red
|
||||
42 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_11 {
|
||||
44 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
43 [label="Enter block"];
|
||||
subgraph cluster_12 {
|
||||
45 [label="Enter block"];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
44 [label="Enter when"];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
45 [label="Enter when branch condition "];
|
||||
46 [label="Access variable R|<local>/x|"];
|
||||
47 [label="Type operator: (R|<local>/x| !is R|kotlin/String|)"];
|
||||
48 [label="Exit when branch condition"];
|
||||
}
|
||||
46 [label="Enter when"];
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
49 [label="Enter when branch condition "];
|
||||
50 [label="Access variable R|<local>/x|"];
|
||||
51 [label="Smart cast: R|<local>/x|"];
|
||||
52 [label="Type operator: (R|<local>/x| !is R|kotlin/Int|)"];
|
||||
53 [label="Exit when branch condition"];
|
||||
47 [label="Enter when branch condition "];
|
||||
48 [label="Access variable R|<local>/x|"];
|
||||
49 [label="Type operator: (R|<local>/x| !is R|kotlin/String|)"];
|
||||
50 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_15 {
|
||||
color=blue
|
||||
54 [label="Enter when branch condition else"];
|
||||
51 [label="Enter when branch condition "];
|
||||
52 [label="Access variable R|<local>/x|"];
|
||||
53 [label="Smart cast: R|<local>/x|"];
|
||||
54 [label="Type operator: (R|<local>/x| !is R|kotlin/Int|)"];
|
||||
55 [label="Exit when branch condition"];
|
||||
}
|
||||
56 [label="Enter when branch result"];
|
||||
subgraph cluster_16 {
|
||||
color=blue
|
||||
57 [label="Enter block"];
|
||||
58 [label="Access variable R|<local>/x|"];
|
||||
59 [label="Smart cast: R|<local>/x|"];
|
||||
60 [label="Access variable R|kotlin/String.length|"];
|
||||
61 [label="Access variable R|<local>/x|"];
|
||||
62 [label="Smart cast: R|<local>/x|"];
|
||||
63 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
|
||||
64 [label="Exit block"];
|
||||
56 [label="Enter when branch condition else"];
|
||||
57 [label="Exit when branch condition"];
|
||||
}
|
||||
65 [label="Exit when branch result"];
|
||||
66 [label="Enter when branch result"];
|
||||
58 [label="Enter when branch result"];
|
||||
subgraph cluster_17 {
|
||||
color=blue
|
||||
67 [label="Enter block"];
|
||||
68 [label="Exit block"];
|
||||
59 [label="Enter block"];
|
||||
60 [label="Access variable R|<local>/x|"];
|
||||
61 [label="Smart cast: R|<local>/x|"];
|
||||
62 [label="Access variable R|kotlin/String.length|"];
|
||||
63 [label="Access variable R|<local>/x|"];
|
||||
64 [label="Smart cast: R|<local>/x|"];
|
||||
65 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
|
||||
66 [label="Exit block"];
|
||||
}
|
||||
69 [label="Exit when branch result"];
|
||||
70 [label="Enter when branch result"];
|
||||
67 [label="Exit when branch result"];
|
||||
68 [label="Enter when branch result"];
|
||||
subgraph cluster_18 {
|
||||
color=blue
|
||||
71 [label="Enter block"];
|
||||
72 [label="Exit block"];
|
||||
69 [label="Enter block"];
|
||||
70 [label="Exit block"];
|
||||
}
|
||||
73 [label="Exit when branch result"];
|
||||
74 [label="Exit when"];
|
||||
71 [label="Exit when branch result"];
|
||||
72 [label="Enter when branch result"];
|
||||
subgraph cluster_19 {
|
||||
color=blue
|
||||
73 [label="Enter block"];
|
||||
74 [label="Exit block"];
|
||||
}
|
||||
75 [label="Exit when branch result"];
|
||||
76 [label="Exit when"];
|
||||
}
|
||||
75 [label="Exit block"];
|
||||
77 [label="Exit block"];
|
||||
}
|
||||
76 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
78 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
}
|
||||
42 -> {43};
|
||||
43 -> {44};
|
||||
44 -> {45};
|
||||
45 -> {46};
|
||||
46 -> {47};
|
||||
47 -> {48};
|
||||
48 -> {49 70};
|
||||
48 -> {49};
|
||||
49 -> {50};
|
||||
50 -> {51};
|
||||
50 -> {51 72};
|
||||
51 -> {52};
|
||||
52 -> {53};
|
||||
53 -> {54 66};
|
||||
53 -> {54};
|
||||
54 -> {55};
|
||||
55 -> {56};
|
||||
55 -> {56 68};
|
||||
56 -> {57};
|
||||
57 -> {58};
|
||||
58 -> {59};
|
||||
@@ -202,16 +207,18 @@ digraph simpleIf_kt {
|
||||
62 -> {63};
|
||||
63 -> {64};
|
||||
64 -> {65};
|
||||
65 -> {74};
|
||||
65 -> {66};
|
||||
66 -> {67};
|
||||
67 -> {68};
|
||||
67 -> {76};
|
||||
68 -> {69};
|
||||
69 -> {74};
|
||||
69 -> {70};
|
||||
70 -> {71};
|
||||
71 -> {72};
|
||||
71 -> {76};
|
||||
72 -> {73};
|
||||
73 -> {74};
|
||||
74 -> {75};
|
||||
75 -> {76};
|
||||
76 -> {77};
|
||||
77 -> {78};
|
||||
|
||||
}
|
||||
|
||||
Vendored
+71
-64
@@ -5,97 +5,102 @@ digraph smartcastFromArgument_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter class A" style="filled" fillcolor=red];
|
||||
1 [label="Exit class A" style="filled" fillcolor=red];
|
||||
0 [label="Enter file smartcastFromArgument.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file smartcastFromArgument.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
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 [label="Enter class A" style="filled" fillcolor=red];
|
||||
3 [label="Exit class A" style="filled" fillcolor=red];
|
||||
}
|
||||
2 -> {3};
|
||||
2 -> {3} [color=green];
|
||||
|
||||
subgraph cluster_2 {
|
||||
color=red
|
||||
4 [label="Enter function takeA" style="filled" fillcolor=red];
|
||||
subgraph cluster_3 {
|
||||
color=blue
|
||||
5 [label="Enter block"];
|
||||
6 [label="Const: Boolean(true)"];
|
||||
7 [label="Jump: ^takeA Boolean(true)"];
|
||||
8 [label="Stub" style="filled" fillcolor=gray];
|
||||
9 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
10 [label="Exit function takeA" style="filled" fillcolor=red];
|
||||
4 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
5 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
}
|
||||
4 -> {5};
|
||||
5 -> {6};
|
||||
6 -> {7};
|
||||
7 -> {10};
|
||||
7 -> {8} [style=dotted];
|
||||
8 -> {9} [style=dotted];
|
||||
9 -> {10} [style=dotted];
|
||||
|
||||
subgraph cluster_4 {
|
||||
subgraph cluster_3 {
|
||||
color=red
|
||||
11 [label="Enter function test" style="filled" fillcolor=red];
|
||||
subgraph cluster_5 {
|
||||
6 [label="Enter function takeA" style="filled" fillcolor=red];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
12 [label="Enter block"];
|
||||
subgraph cluster_6 {
|
||||
7 [label="Enter block"];
|
||||
8 [label="Const: Boolean(true)"];
|
||||
9 [label="Jump: ^takeA Boolean(true)"];
|
||||
10 [label="Stub" style="filled" fillcolor=gray];
|
||||
11 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
12 [label="Exit function takeA" style="filled" fillcolor=red];
|
||||
}
|
||||
6 -> {7};
|
||||
7 -> {8};
|
||||
8 -> {9};
|
||||
9 -> {12};
|
||||
9 -> {10} [style=dotted];
|
||||
10 -> {11} [style=dotted];
|
||||
11 -> {12} [style=dotted];
|
||||
|
||||
subgraph cluster_5 {
|
||||
color=red
|
||||
13 [label="Enter function test" style="filled" fillcolor=red];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
14 [label="Enter block"];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
13 [label="Enter when"];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
14 [label="Enter when branch condition "];
|
||||
15 [label="Access variable R|<local>/a|"];
|
||||
16 [label="Type operator: (R|<local>/a| as? R|A|)"];
|
||||
17 [label="Exit lhs of ?:"];
|
||||
18 [label="Enter rhs of ?:"];
|
||||
19 [label="Jump: ^test Unit"];
|
||||
20 [label="Stub" style="filled" fillcolor=gray];
|
||||
21 [label="Lhs of ?: is not null"];
|
||||
22 [label="Exit ?:"];
|
||||
23 [label="Function call: R|/takeA|(...)" style="filled" fillcolor=yellow];
|
||||
24 [label="Exit when branch condition"];
|
||||
}
|
||||
25 [label="Synthetic else branch"];
|
||||
26 [label="Enter when branch result"];
|
||||
15 [label="Enter when"];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
27 [label="Enter block"];
|
||||
28 [label="Access variable R|<local>/a|"];
|
||||
29 [label="Smart cast: R|<local>/a|"];
|
||||
30 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
31 [label="Exit block"];
|
||||
16 [label="Enter when branch condition "];
|
||||
17 [label="Access variable R|<local>/a|"];
|
||||
18 [label="Type operator: (R|<local>/a| as? R|A|)"];
|
||||
19 [label="Exit lhs of ?:"];
|
||||
20 [label="Enter rhs of ?:"];
|
||||
21 [label="Jump: ^test Unit"];
|
||||
22 [label="Stub" style="filled" fillcolor=gray];
|
||||
23 [label="Lhs of ?: is not null"];
|
||||
24 [label="Exit ?:"];
|
||||
25 [label="Function call: R|/takeA|(...)" style="filled" fillcolor=yellow];
|
||||
26 [label="Exit when branch condition"];
|
||||
}
|
||||
32 [label="Exit when branch result"];
|
||||
33 [label="Exit when"];
|
||||
27 [label="Synthetic else branch"];
|
||||
28 [label="Enter when branch result"];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
29 [label="Enter block"];
|
||||
30 [label="Access variable R|<local>/a|"];
|
||||
31 [label="Smart cast: R|<local>/a|"];
|
||||
32 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
33 [label="Exit block"];
|
||||
}
|
||||
34 [label="Exit when branch result"];
|
||||
35 [label="Exit when"];
|
||||
}
|
||||
34 [label="Exit block"];
|
||||
36 [label="Exit block"];
|
||||
}
|
||||
35 [label="Exit function test" style="filled" fillcolor=red];
|
||||
37 [label="Exit function test" style="filled" fillcolor=red];
|
||||
}
|
||||
11 -> {12};
|
||||
12 -> {13};
|
||||
13 -> {14};
|
||||
14 -> {15};
|
||||
15 -> {16};
|
||||
16 -> {17};
|
||||
17 -> {18 21};
|
||||
17 -> {18};
|
||||
18 -> {19};
|
||||
19 -> {35};
|
||||
19 -> {20} [style=dotted];
|
||||
20 -> {22} [style=dotted];
|
||||
21 -> {22};
|
||||
22 -> {23};
|
||||
19 -> {20 23};
|
||||
20 -> {21};
|
||||
21 -> {37};
|
||||
21 -> {22} [style=dotted];
|
||||
22 -> {24} [style=dotted];
|
||||
23 -> {24};
|
||||
24 -> {25 26};
|
||||
25 -> {33};
|
||||
26 -> {27};
|
||||
27 -> {28};
|
||||
24 -> {25};
|
||||
25 -> {26};
|
||||
26 -> {27 28};
|
||||
27 -> {35};
|
||||
28 -> {29};
|
||||
29 -> {30};
|
||||
30 -> {31};
|
||||
@@ -103,5 +108,7 @@ digraph smartcastFromArgument_kt {
|
||||
32 -> {33};
|
||||
33 -> {34};
|
||||
34 -> {35};
|
||||
35 -> {36};
|
||||
36 -> {37};
|
||||
|
||||
}
|
||||
|
||||
+415
-408
File diff suppressed because it is too large
Load Diff
Vendored
+107
-100
@@ -5,198 +5,205 @@ digraph whenSubjectExpression_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter function whenWithSubjectExpression" style="filled" fillcolor=red];
|
||||
subgraph cluster_1 {
|
||||
0 [label="Enter file whenSubjectExpression.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file whenSubjectExpression.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1} [color=green];
|
||||
|
||||
subgraph cluster_1 {
|
||||
color=red
|
||||
2 [label="Enter function whenWithSubjectExpression" style="filled" fillcolor=red];
|
||||
subgraph cluster_2 {
|
||||
color=blue
|
||||
1 [label="Enter block"];
|
||||
subgraph cluster_2 {
|
||||
3 [label="Enter block"];
|
||||
subgraph cluster_3 {
|
||||
color=blue
|
||||
2 [label="Enter when"];
|
||||
3 [label="Access variable R|<local>/x|"];
|
||||
subgraph cluster_3 {
|
||||
color=blue
|
||||
4 [label="Enter when branch condition "];
|
||||
5 [label="Exit $subj"];
|
||||
6 [label="Type operator: ($subj$ !is R|kotlin/Double|)"];
|
||||
7 [label="Exit when branch condition"];
|
||||
}
|
||||
4 [label="Enter when"];
|
||||
5 [label="Access variable R|<local>/x|"];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
8 [label="Enter when branch condition "];
|
||||
9 [label="Exit $subj"];
|
||||
10 [label="Const: Double(0.0)"];
|
||||
11 [label="Equality operator =="];
|
||||
12 [label="Exit when branch condition"];
|
||||
6 [label="Enter when branch condition "];
|
||||
7 [label="Exit $subj"];
|
||||
8 [label="Type operator: ($subj$ !is R|kotlin/Double|)"];
|
||||
9 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
13 [label="Enter when branch condition else"];
|
||||
10 [label="Enter when branch condition "];
|
||||
11 [label="Exit $subj"];
|
||||
12 [label="Const: Double(0.0)"];
|
||||
13 [label="Equality operator =="];
|
||||
14 [label="Exit when branch condition"];
|
||||
}
|
||||
15 [label="Enter when branch result"];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
16 [label="Enter block"];
|
||||
17 [label="Access variable R|<local>/x|"];
|
||||
18 [label="Smart cast: R|<local>/x|"];
|
||||
19 [label="Function call: R|<local>/x|.R|kotlin/Double.toInt|()" style="filled" fillcolor=yellow];
|
||||
20 [label="Exit block"];
|
||||
15 [label="Enter when branch condition else"];
|
||||
16 [label="Exit when branch condition"];
|
||||
}
|
||||
21 [label="Exit when branch result"];
|
||||
22 [label="Enter when branch result"];
|
||||
17 [label="Enter when branch result"];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
23 [label="Enter block"];
|
||||
24 [label="Const: Int(0)"];
|
||||
25 [label="Exit block"];
|
||||
18 [label="Enter block"];
|
||||
19 [label="Access variable R|<local>/x|"];
|
||||
20 [label="Smart cast: R|<local>/x|"];
|
||||
21 [label="Function call: R|<local>/x|.R|kotlin/Double.toInt|()" style="filled" fillcolor=yellow];
|
||||
22 [label="Exit block"];
|
||||
}
|
||||
26 [label="Exit when branch result"];
|
||||
27 [label="Enter when branch result"];
|
||||
23 [label="Exit when branch result"];
|
||||
24 [label="Enter when branch result"];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
28 [label="Enter block"];
|
||||
29 [label="Const: Int(-1)"];
|
||||
30 [label="Exit block"];
|
||||
25 [label="Enter block"];
|
||||
26 [label="Const: Int(0)"];
|
||||
27 [label="Exit block"];
|
||||
}
|
||||
31 [label="Exit when branch result"];
|
||||
32 [label="Exit when"];
|
||||
28 [label="Exit when branch result"];
|
||||
29 [label="Enter when branch result"];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
30 [label="Enter block"];
|
||||
31 [label="Const: Int(-1)"];
|
||||
32 [label="Exit block"];
|
||||
}
|
||||
33 [label="Exit when branch result"];
|
||||
34 [label="Exit when"];
|
||||
}
|
||||
33 [label="Exit block"];
|
||||
35 [label="Exit block"];
|
||||
}
|
||||
34 [label="Exit function whenWithSubjectExpression" style="filled" fillcolor=red];
|
||||
36 [label="Exit function whenWithSubjectExpression" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1};
|
||||
1 -> {2};
|
||||
2 -> {3};
|
||||
3 -> {4};
|
||||
4 -> {5};
|
||||
5 -> {6};
|
||||
6 -> {7};
|
||||
7 -> {8 27};
|
||||
7 -> {8};
|
||||
8 -> {9};
|
||||
9 -> {10};
|
||||
9 -> {10 29};
|
||||
10 -> {11};
|
||||
11 -> {12};
|
||||
12 -> {13 22};
|
||||
12 -> {13};
|
||||
13 -> {14};
|
||||
14 -> {15};
|
||||
14 -> {15 24};
|
||||
15 -> {16};
|
||||
16 -> {17};
|
||||
17 -> {18};
|
||||
18 -> {19};
|
||||
19 -> {20};
|
||||
20 -> {21};
|
||||
21 -> {32};
|
||||
21 -> {22};
|
||||
22 -> {23};
|
||||
23 -> {24};
|
||||
23 -> {34};
|
||||
24 -> {25};
|
||||
25 -> {26};
|
||||
26 -> {32};
|
||||
26 -> {27};
|
||||
27 -> {28};
|
||||
28 -> {29};
|
||||
28 -> {34};
|
||||
29 -> {30};
|
||||
30 -> {31};
|
||||
31 -> {32};
|
||||
32 -> {33};
|
||||
33 -> {34};
|
||||
34 -> {35};
|
||||
35 -> {36};
|
||||
|
||||
subgraph cluster_9 {
|
||||
subgraph cluster_10 {
|
||||
color=red
|
||||
35 [label="Enter function whenWithSubjectVariable" style="filled" fillcolor=red];
|
||||
subgraph cluster_10 {
|
||||
37 [label="Enter function whenWithSubjectVariable" style="filled" fillcolor=red];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
36 [label="Enter block"];
|
||||
subgraph cluster_11 {
|
||||
38 [label="Enter block"];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
37 [label="Enter when"];
|
||||
38 [label="Access variable R|<local>/x|"];
|
||||
39 [label="Variable declaration: lval y: R|kotlin/Any|"];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
40 [label="Enter when branch condition "];
|
||||
41 [label="Exit $subj"];
|
||||
42 [label="Type operator: ($subj$ !is R|kotlin/Double|)"];
|
||||
43 [label="Exit when branch condition"];
|
||||
}
|
||||
39 [label="Enter when"];
|
||||
40 [label="Access variable R|<local>/x|"];
|
||||
41 [label="Variable declaration: lval y: R|kotlin/Any|"];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
44 [label="Enter when branch condition "];
|
||||
45 [label="Exit $subj"];
|
||||
46 [label="Const: Double(0.0)"];
|
||||
47 [label="Equality operator =="];
|
||||
48 [label="Exit when branch condition"];
|
||||
42 [label="Enter when branch condition "];
|
||||
43 [label="Exit $subj"];
|
||||
44 [label="Type operator: ($subj$ !is R|kotlin/Double|)"];
|
||||
45 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
49 [label="Enter when branch condition else"];
|
||||
46 [label="Enter when branch condition "];
|
||||
47 [label="Exit $subj"];
|
||||
48 [label="Const: Double(0.0)"];
|
||||
49 [label="Equality operator =="];
|
||||
50 [label="Exit when branch condition"];
|
||||
}
|
||||
51 [label="Enter when branch result"];
|
||||
subgraph cluster_15 {
|
||||
color=blue
|
||||
52 [label="Enter block"];
|
||||
53 [label="Access variable R|<local>/y|"];
|
||||
54 [label="Smart cast: R|<local>/y|"];
|
||||
55 [label="Function call: R|<local>/y|.R|kotlin/Double.toInt|()" style="filled" fillcolor=yellow];
|
||||
56 [label="Exit block"];
|
||||
51 [label="Enter when branch condition else"];
|
||||
52 [label="Exit when branch condition"];
|
||||
}
|
||||
57 [label="Exit when branch result"];
|
||||
58 [label="Enter when branch result"];
|
||||
53 [label="Enter when branch result"];
|
||||
subgraph cluster_16 {
|
||||
color=blue
|
||||
59 [label="Enter block"];
|
||||
60 [label="Const: Int(0)"];
|
||||
61 [label="Exit block"];
|
||||
54 [label="Enter block"];
|
||||
55 [label="Access variable R|<local>/y|"];
|
||||
56 [label="Smart cast: R|<local>/y|"];
|
||||
57 [label="Function call: R|<local>/y|.R|kotlin/Double.toInt|()" style="filled" fillcolor=yellow];
|
||||
58 [label="Exit block"];
|
||||
}
|
||||
62 [label="Exit when branch result"];
|
||||
63 [label="Enter when branch result"];
|
||||
59 [label="Exit when branch result"];
|
||||
60 [label="Enter when branch result"];
|
||||
subgraph cluster_17 {
|
||||
color=blue
|
||||
64 [label="Enter block"];
|
||||
65 [label="Const: Int(-1)"];
|
||||
66 [label="Exit block"];
|
||||
61 [label="Enter block"];
|
||||
62 [label="Const: Int(0)"];
|
||||
63 [label="Exit block"];
|
||||
}
|
||||
67 [label="Exit when branch result"];
|
||||
68 [label="Exit when"];
|
||||
64 [label="Exit when branch result"];
|
||||
65 [label="Enter when branch result"];
|
||||
subgraph cluster_18 {
|
||||
color=blue
|
||||
66 [label="Enter block"];
|
||||
67 [label="Const: Int(-1)"];
|
||||
68 [label="Exit block"];
|
||||
}
|
||||
69 [label="Exit when branch result"];
|
||||
70 [label="Exit when"];
|
||||
}
|
||||
69 [label="Exit block"];
|
||||
71 [label="Exit block"];
|
||||
}
|
||||
70 [label="Exit function whenWithSubjectVariable" style="filled" fillcolor=red];
|
||||
72 [label="Exit function whenWithSubjectVariable" style="filled" fillcolor=red];
|
||||
}
|
||||
35 -> {36};
|
||||
36 -> {37};
|
||||
37 -> {38};
|
||||
38 -> {39};
|
||||
39 -> {40};
|
||||
40 -> {41};
|
||||
41 -> {42};
|
||||
42 -> {43};
|
||||
43 -> {44 63};
|
||||
43 -> {44};
|
||||
44 -> {45};
|
||||
45 -> {46};
|
||||
45 -> {46 65};
|
||||
46 -> {47};
|
||||
47 -> {48};
|
||||
48 -> {49 58};
|
||||
48 -> {49};
|
||||
49 -> {50};
|
||||
50 -> {51};
|
||||
50 -> {51 60};
|
||||
51 -> {52};
|
||||
52 -> {53};
|
||||
53 -> {54};
|
||||
54 -> {55};
|
||||
55 -> {56};
|
||||
56 -> {57};
|
||||
57 -> {68};
|
||||
57 -> {58};
|
||||
58 -> {59};
|
||||
59 -> {60};
|
||||
59 -> {70};
|
||||
60 -> {61};
|
||||
61 -> {62};
|
||||
62 -> {68};
|
||||
62 -> {63};
|
||||
63 -> {64};
|
||||
64 -> {65};
|
||||
64 -> {70};
|
||||
65 -> {66};
|
||||
66 -> {67};
|
||||
67 -> {68};
|
||||
68 -> {69};
|
||||
69 -> {70};
|
||||
70 -> {71};
|
||||
71 -> {72};
|
||||
|
||||
}
|
||||
|
||||
+225
-218
@@ -5,91 +5,96 @@ digraph equalsAndIdentity_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter class A" style="filled" fillcolor=red];
|
||||
1 [label="Exit class A" style="filled" fillcolor=red];
|
||||
0 [label="Enter file equalsAndIdentity.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file equalsAndIdentity.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
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 [label="Enter class A" style="filled" fillcolor=red];
|
||||
3 [label="Exit class A" style="filled" fillcolor=red];
|
||||
}
|
||||
2 -> {3};
|
||||
2 -> {3} [color=green];
|
||||
|
||||
subgraph cluster_2 {
|
||||
color=red
|
||||
4 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_3 {
|
||||
color=blue
|
||||
5 [label="Enter block"];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
6 [label="Enter when"];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
7 [label="Enter when branch condition "];
|
||||
8 [label="Access variable R|<local>/x|"];
|
||||
9 [label="Access variable R|<local>/y|"];
|
||||
10 [label="Equality operator =="];
|
||||
11 [label="Exit when branch condition"];
|
||||
}
|
||||
12 [label="Synthetic else branch"];
|
||||
13 [label="Enter when branch result"];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
14 [label="Enter block"];
|
||||
15 [label="Access variable R|<local>/x|"];
|
||||
16 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
17 [label="Access variable R|<local>/y|"];
|
||||
18 [label="Smart cast: R|<local>/y|"];
|
||||
19 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
20 [label="Exit block"];
|
||||
}
|
||||
21 [label="Exit when branch result"];
|
||||
22 [label="Exit when"];
|
||||
}
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
23 [label="Enter when"];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
24 [label="Enter when branch condition "];
|
||||
25 [label="Access variable R|<local>/x|"];
|
||||
26 [label="Access variable R|<local>/y|"];
|
||||
27 [label="Equality operator ==="];
|
||||
28 [label="Exit when branch condition"];
|
||||
}
|
||||
29 [label="Synthetic else branch"];
|
||||
30 [label="Enter when branch result"];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
31 [label="Enter block"];
|
||||
32 [label="Access variable R|<local>/x|"];
|
||||
33 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
34 [label="Access variable R|<local>/y|"];
|
||||
35 [label="Smart cast: R|<local>/y|"];
|
||||
36 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
37 [label="Exit block"];
|
||||
}
|
||||
38 [label="Exit when branch result"];
|
||||
39 [label="Exit when"];
|
||||
}
|
||||
40 [label="Exit block"];
|
||||
}
|
||||
41 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
4 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
5 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
}
|
||||
4 -> {5};
|
||||
5 -> {6};
|
||||
|
||||
subgraph cluster_3 {
|
||||
color=red
|
||||
6 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
7 [label="Enter block"];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
8 [label="Enter when"];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
9 [label="Enter when branch condition "];
|
||||
10 [label="Access variable R|<local>/x|"];
|
||||
11 [label="Access variable R|<local>/y|"];
|
||||
12 [label="Equality operator =="];
|
||||
13 [label="Exit when branch condition"];
|
||||
}
|
||||
14 [label="Synthetic else branch"];
|
||||
15 [label="Enter when branch result"];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
16 [label="Enter block"];
|
||||
17 [label="Access variable R|<local>/x|"];
|
||||
18 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
19 [label="Access variable R|<local>/y|"];
|
||||
20 [label="Smart cast: R|<local>/y|"];
|
||||
21 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
22 [label="Exit block"];
|
||||
}
|
||||
23 [label="Exit when branch result"];
|
||||
24 [label="Exit when"];
|
||||
}
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
25 [label="Enter when"];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
26 [label="Enter when branch condition "];
|
||||
27 [label="Access variable R|<local>/x|"];
|
||||
28 [label="Access variable R|<local>/y|"];
|
||||
29 [label="Equality operator ==="];
|
||||
30 [label="Exit when branch condition"];
|
||||
}
|
||||
31 [label="Synthetic else branch"];
|
||||
32 [label="Enter when branch result"];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
33 [label="Enter block"];
|
||||
34 [label="Access variable R|<local>/x|"];
|
||||
35 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
36 [label="Access variable R|<local>/y|"];
|
||||
37 [label="Smart cast: R|<local>/y|"];
|
||||
38 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
39 [label="Exit block"];
|
||||
}
|
||||
40 [label="Exit when branch result"];
|
||||
41 [label="Exit when"];
|
||||
}
|
||||
42 [label="Exit block"];
|
||||
}
|
||||
43 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
}
|
||||
6 -> {7};
|
||||
7 -> {8};
|
||||
8 -> {9};
|
||||
9 -> {10};
|
||||
10 -> {11};
|
||||
11 -> {12 13};
|
||||
12 -> {22};
|
||||
13 -> {14};
|
||||
14 -> {15};
|
||||
11 -> {12};
|
||||
12 -> {13};
|
||||
13 -> {14 15};
|
||||
14 -> {24};
|
||||
15 -> {16};
|
||||
16 -> {17};
|
||||
17 -> {18};
|
||||
@@ -103,10 +108,10 @@ digraph equalsAndIdentity_kt {
|
||||
25 -> {26};
|
||||
26 -> {27};
|
||||
27 -> {28};
|
||||
28 -> {29 30};
|
||||
29 -> {39};
|
||||
30 -> {31};
|
||||
31 -> {32};
|
||||
28 -> {29};
|
||||
29 -> {30};
|
||||
30 -> {31 32};
|
||||
31 -> {41};
|
||||
32 -> {33};
|
||||
33 -> {34};
|
||||
34 -> {35};
|
||||
@@ -116,78 +121,78 @@ digraph equalsAndIdentity_kt {
|
||||
38 -> {39};
|
||||
39 -> {40};
|
||||
40 -> {41};
|
||||
41 -> {42};
|
||||
42 -> {43};
|
||||
|
||||
subgraph cluster_10 {
|
||||
subgraph cluster_11 {
|
||||
color=red
|
||||
42 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_11 {
|
||||
44 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
43 [label="Enter block"];
|
||||
subgraph cluster_12 {
|
||||
45 [label="Enter block"];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
44 [label="Enter when"];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
45 [label="Enter when branch condition "];
|
||||
46 [label="Access variable R|<local>/x|"];
|
||||
47 [label="Access variable R|<local>/y|"];
|
||||
48 [label="Equality operator =="];
|
||||
49 [label="Exit when branch condition"];
|
||||
}
|
||||
50 [label="Synthetic else branch"];
|
||||
51 [label="Enter when branch result"];
|
||||
46 [label="Enter when"];
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
52 [label="Enter block"];
|
||||
53 [label="Access variable R|<local>/x|"];
|
||||
54 [label="Function call: R|<local>/x|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
55 [label="Access variable R|<local>/y|"];
|
||||
56 [label="Function call: R|<local>/y|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
57 [label="Exit block"];
|
||||
47 [label="Enter when branch condition "];
|
||||
48 [label="Access variable R|<local>/x|"];
|
||||
49 [label="Access variable R|<local>/y|"];
|
||||
50 [label="Equality operator =="];
|
||||
51 [label="Exit when branch condition"];
|
||||
}
|
||||
58 [label="Exit when branch result"];
|
||||
59 [label="Exit when"];
|
||||
}
|
||||
subgraph cluster_15 {
|
||||
color=blue
|
||||
60 [label="Enter when"];
|
||||
subgraph cluster_16 {
|
||||
52 [label="Synthetic else branch"];
|
||||
53 [label="Enter when branch result"];
|
||||
subgraph cluster_15 {
|
||||
color=blue
|
||||
61 [label="Enter when branch condition "];
|
||||
62 [label="Access variable R|<local>/x|"];
|
||||
63 [label="Access variable R|<local>/y|"];
|
||||
64 [label="Equality operator ==="];
|
||||
65 [label="Exit when branch condition"];
|
||||
54 [label="Enter block"];
|
||||
55 [label="Access variable R|<local>/x|"];
|
||||
56 [label="Function call: R|<local>/x|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
57 [label="Access variable R|<local>/y|"];
|
||||
58 [label="Function call: R|<local>/y|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
59 [label="Exit block"];
|
||||
}
|
||||
66 [label="Synthetic else branch"];
|
||||
67 [label="Enter when branch result"];
|
||||
60 [label="Exit when branch result"];
|
||||
61 [label="Exit when"];
|
||||
}
|
||||
subgraph cluster_16 {
|
||||
color=blue
|
||||
62 [label="Enter when"];
|
||||
subgraph cluster_17 {
|
||||
color=blue
|
||||
68 [label="Enter block"];
|
||||
69 [label="Access variable R|<local>/x|"];
|
||||
70 [label="Function call: R|<local>/x|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
71 [label="Access variable R|<local>/y|"];
|
||||
72 [label="Function call: R|<local>/y|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
73 [label="Exit block"];
|
||||
63 [label="Enter when branch condition "];
|
||||
64 [label="Access variable R|<local>/x|"];
|
||||
65 [label="Access variable R|<local>/y|"];
|
||||
66 [label="Equality operator ==="];
|
||||
67 [label="Exit when branch condition"];
|
||||
}
|
||||
74 [label="Exit when branch result"];
|
||||
75 [label="Exit when"];
|
||||
68 [label="Synthetic else branch"];
|
||||
69 [label="Enter when branch result"];
|
||||
subgraph cluster_18 {
|
||||
color=blue
|
||||
70 [label="Enter block"];
|
||||
71 [label="Access variable R|<local>/x|"];
|
||||
72 [label="Function call: R|<local>/x|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
73 [label="Access variable R|<local>/y|"];
|
||||
74 [label="Function call: R|<local>/y|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
75 [label="Exit block"];
|
||||
}
|
||||
76 [label="Exit when branch result"];
|
||||
77 [label="Exit when"];
|
||||
}
|
||||
76 [label="Exit block"];
|
||||
78 [label="Exit block"];
|
||||
}
|
||||
77 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
79 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
}
|
||||
42 -> {43};
|
||||
43 -> {44};
|
||||
44 -> {45};
|
||||
45 -> {46};
|
||||
46 -> {47};
|
||||
47 -> {48};
|
||||
48 -> {49};
|
||||
49 -> {50 51};
|
||||
50 -> {59};
|
||||
51 -> {52};
|
||||
52 -> {53};
|
||||
49 -> {50};
|
||||
50 -> {51};
|
||||
51 -> {52 53};
|
||||
52 -> {61};
|
||||
53 -> {54};
|
||||
54 -> {55};
|
||||
55 -> {56};
|
||||
@@ -200,10 +205,10 @@ digraph equalsAndIdentity_kt {
|
||||
62 -> {63};
|
||||
63 -> {64};
|
||||
64 -> {65};
|
||||
65 -> {66 67};
|
||||
66 -> {75};
|
||||
67 -> {68};
|
||||
68 -> {69};
|
||||
65 -> {66};
|
||||
66 -> {67};
|
||||
67 -> {68 69};
|
||||
68 -> {77};
|
||||
69 -> {70};
|
||||
70 -> {71};
|
||||
71 -> {72};
|
||||
@@ -212,123 +217,123 @@ digraph equalsAndIdentity_kt {
|
||||
74 -> {75};
|
||||
75 -> {76};
|
||||
76 -> {77};
|
||||
77 -> {78};
|
||||
78 -> {79};
|
||||
|
||||
subgraph cluster_18 {
|
||||
subgraph cluster_19 {
|
||||
color=red
|
||||
78 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_19 {
|
||||
80 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_20 {
|
||||
color=blue
|
||||
79 [label="Enter block"];
|
||||
subgraph cluster_20 {
|
||||
81 [label="Enter block"];
|
||||
subgraph cluster_21 {
|
||||
color=blue
|
||||
80 [label="Enter when"];
|
||||
subgraph cluster_21 {
|
||||
color=blue
|
||||
81 [label="Enter when branch condition "];
|
||||
82 [label="Access variable R|<local>/y|"];
|
||||
83 [label="Const: Null(null)"];
|
||||
84 [label="Equality operator =="];
|
||||
85 [label="Exit when branch condition"];
|
||||
}
|
||||
86 [label="Synthetic else branch"];
|
||||
87 [label="Enter when branch result"];
|
||||
82 [label="Enter when"];
|
||||
subgraph cluster_22 {
|
||||
color=blue
|
||||
88 [label="Enter block"];
|
||||
89 [label="Jump: ^test_3 Unit"];
|
||||
90 [label="Stub" style="filled" fillcolor=gray];
|
||||
91 [label="Exit block" style="filled" fillcolor=gray];
|
||||
83 [label="Enter when branch condition "];
|
||||
84 [label="Access variable R|<local>/y|"];
|
||||
85 [label="Const: Null(null)"];
|
||||
86 [label="Equality operator =="];
|
||||
87 [label="Exit when branch condition"];
|
||||
}
|
||||
92 [label="Exit when branch result" style="filled" fillcolor=gray];
|
||||
93 [label="Exit when"];
|
||||
}
|
||||
subgraph cluster_23 {
|
||||
color=blue
|
||||
94 [label="Enter when"];
|
||||
subgraph cluster_24 {
|
||||
88 [label="Synthetic else branch"];
|
||||
89 [label="Enter when branch result"];
|
||||
subgraph cluster_23 {
|
||||
color=blue
|
||||
95 [label="Enter when branch condition "];
|
||||
96 [label="Access variable R|<local>/x|"];
|
||||
97 [label="Access variable R|<local>/y|"];
|
||||
98 [label="Smart cast: R|<local>/y|"];
|
||||
99 [label="Equality operator =="];
|
||||
100 [label="Exit when branch condition"];
|
||||
90 [label="Enter block"];
|
||||
91 [label="Jump: ^test_3 Unit"];
|
||||
92 [label="Stub" style="filled" fillcolor=gray];
|
||||
93 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
101 [label="Synthetic else branch"];
|
||||
102 [label="Enter when branch result"];
|
||||
94 [label="Exit when branch result" style="filled" fillcolor=gray];
|
||||
95 [label="Exit when"];
|
||||
}
|
||||
subgraph cluster_24 {
|
||||
color=blue
|
||||
96 [label="Enter when"];
|
||||
subgraph cluster_25 {
|
||||
color=blue
|
||||
103 [label="Enter block"];
|
||||
104 [label="Access variable R|<local>/x|"];
|
||||
105 [label="Smart cast: R|<local>/x|"];
|
||||
106 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
107 [label="Access variable R|<local>/y|"];
|
||||
108 [label="Smart cast: R|<local>/y|"];
|
||||
109 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
110 [label="Exit block"];
|
||||
97 [label="Enter when branch condition "];
|
||||
98 [label="Access variable R|<local>/x|"];
|
||||
99 [label="Access variable R|<local>/y|"];
|
||||
100 [label="Smart cast: R|<local>/y|"];
|
||||
101 [label="Equality operator =="];
|
||||
102 [label="Exit when branch condition"];
|
||||
}
|
||||
111 [label="Exit when branch result"];
|
||||
112 [label="Exit when"];
|
||||
}
|
||||
subgraph cluster_26 {
|
||||
color=blue
|
||||
113 [label="Enter when"];
|
||||
subgraph cluster_27 {
|
||||
103 [label="Synthetic else branch"];
|
||||
104 [label="Enter when branch result"];
|
||||
subgraph cluster_26 {
|
||||
color=blue
|
||||
114 [label="Enter when branch condition "];
|
||||
115 [label="Access variable R|<local>/x|"];
|
||||
116 [label="Access variable R|<local>/y|"];
|
||||
117 [label="Smart cast: R|<local>/y|"];
|
||||
118 [label="Equality operator ==="];
|
||||
119 [label="Exit when branch condition"];
|
||||
105 [label="Enter block"];
|
||||
106 [label="Access variable R|<local>/x|"];
|
||||
107 [label="Smart cast: R|<local>/x|"];
|
||||
108 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
109 [label="Access variable R|<local>/y|"];
|
||||
110 [label="Smart cast: R|<local>/y|"];
|
||||
111 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
112 [label="Exit block"];
|
||||
}
|
||||
120 [label="Synthetic else branch"];
|
||||
121 [label="Enter when branch result"];
|
||||
113 [label="Exit when branch result"];
|
||||
114 [label="Exit when"];
|
||||
}
|
||||
subgraph cluster_27 {
|
||||
color=blue
|
||||
115 [label="Enter when"];
|
||||
subgraph cluster_28 {
|
||||
color=blue
|
||||
122 [label="Enter block"];
|
||||
123 [label="Access variable R|<local>/x|"];
|
||||
124 [label="Smart cast: R|<local>/x|"];
|
||||
125 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
126 [label="Access variable R|<local>/y|"];
|
||||
127 [label="Smart cast: R|<local>/y|"];
|
||||
128 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
129 [label="Exit block"];
|
||||
116 [label="Enter when branch condition "];
|
||||
117 [label="Access variable R|<local>/x|"];
|
||||
118 [label="Access variable R|<local>/y|"];
|
||||
119 [label="Smart cast: R|<local>/y|"];
|
||||
120 [label="Equality operator ==="];
|
||||
121 [label="Exit when branch condition"];
|
||||
}
|
||||
130 [label="Exit when branch result"];
|
||||
131 [label="Exit when"];
|
||||
122 [label="Synthetic else branch"];
|
||||
123 [label="Enter when branch result"];
|
||||
subgraph cluster_29 {
|
||||
color=blue
|
||||
124 [label="Enter block"];
|
||||
125 [label="Access variable R|<local>/x|"];
|
||||
126 [label="Smart cast: R|<local>/x|"];
|
||||
127 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
128 [label="Access variable R|<local>/y|"];
|
||||
129 [label="Smart cast: R|<local>/y|"];
|
||||
130 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
131 [label="Exit block"];
|
||||
}
|
||||
132 [label="Exit when branch result"];
|
||||
133 [label="Exit when"];
|
||||
}
|
||||
132 [label="Exit block"];
|
||||
134 [label="Exit block"];
|
||||
}
|
||||
133 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
135 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
}
|
||||
78 -> {79};
|
||||
79 -> {80};
|
||||
80 -> {81};
|
||||
81 -> {82};
|
||||
82 -> {83};
|
||||
83 -> {84};
|
||||
84 -> {85};
|
||||
85 -> {86 87};
|
||||
86 -> {93};
|
||||
87 -> {88};
|
||||
88 -> {89};
|
||||
89 -> {133};
|
||||
89 -> {90} [style=dotted];
|
||||
90 -> {91} [style=dotted];
|
||||
85 -> {86};
|
||||
86 -> {87};
|
||||
87 -> {88 89};
|
||||
88 -> {95};
|
||||
89 -> {90};
|
||||
90 -> {91};
|
||||
91 -> {135};
|
||||
91 -> {92} [style=dotted];
|
||||
92 -> {93} [style=dotted];
|
||||
93 -> {94};
|
||||
94 -> {95};
|
||||
93 -> {94} [style=dotted];
|
||||
94 -> {95} [style=dotted];
|
||||
95 -> {96};
|
||||
96 -> {97};
|
||||
97 -> {98};
|
||||
98 -> {99};
|
||||
99 -> {100};
|
||||
100 -> {101 102};
|
||||
101 -> {112};
|
||||
102 -> {103};
|
||||
103 -> {104};
|
||||
100 -> {101};
|
||||
101 -> {102};
|
||||
102 -> {103 104};
|
||||
103 -> {114};
|
||||
104 -> {105};
|
||||
105 -> {106};
|
||||
106 -> {107};
|
||||
@@ -344,10 +349,10 @@ digraph equalsAndIdentity_kt {
|
||||
116 -> {117};
|
||||
117 -> {118};
|
||||
118 -> {119};
|
||||
119 -> {120 121};
|
||||
120 -> {131};
|
||||
121 -> {122};
|
||||
122 -> {123};
|
||||
119 -> {120};
|
||||
120 -> {121};
|
||||
121 -> {122 123};
|
||||
122 -> {133};
|
||||
123 -> {124};
|
||||
124 -> {125};
|
||||
125 -> {126};
|
||||
@@ -358,5 +363,7 @@ digraph equalsAndIdentity_kt {
|
||||
130 -> {131};
|
||||
131 -> {132};
|
||||
132 -> {133};
|
||||
133 -> {134};
|
||||
134 -> {135};
|
||||
|
||||
}
|
||||
|
||||
+96
-87
@@ -5,147 +5,156 @@ digraph incorrectSmartcastToNothing_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter property" style="filled" fillcolor=red];
|
||||
1 [label="Const: String(foo)"];
|
||||
2 [label="Function call: R|java/io/File.File|(...)" style="filled" fillcolor=yellow];
|
||||
3 [label="Exit property" style="filled" fillcolor=red];
|
||||
0 [label="Enter file incorrectSmartcastToNothing.kt" style="filled" fillcolor=red];
|
||||
subgraph cluster_1 {
|
||||
color=blue
|
||||
1 [label="Enter property" style="filled" fillcolor=red];
|
||||
2 [label="Const: String(foo)"];
|
||||
3 [label="Function call: R|java/io/File.File|(...)" style="filled" fillcolor=yellow];
|
||||
4 [label="Exit property" style="filled" fillcolor=red];
|
||||
}
|
||||
5 [label="Exit file incorrectSmartcastToNothing.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1};
|
||||
0 -> {1} [color=green];
|
||||
0 -> {5} [style=dotted];
|
||||
0 -> {1} [style=dashed];
|
||||
1 -> {2};
|
||||
2 -> {3};
|
||||
3 -> {4};
|
||||
4 -> {5} [color=green];
|
||||
|
||||
subgraph cluster_1 {
|
||||
subgraph cluster_2 {
|
||||
color=red
|
||||
4 [label="Enter function test" style="filled" fillcolor=red];
|
||||
subgraph cluster_2 {
|
||||
6 [label="Enter function test" style="filled" fillcolor=red];
|
||||
subgraph cluster_3 {
|
||||
color=blue
|
||||
5 [label="Enter block"];
|
||||
subgraph cluster_3 {
|
||||
7 [label="Enter block"];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
6 [label="Enter when"];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
7 [label="Enter when branch condition "];
|
||||
8 [label="Access variable R|<local>/cacheExtSetting|"];
|
||||
9 [label="Const: Null(null)"];
|
||||
10 [label="Equality operator =="];
|
||||
11 [label="Exit when branch condition"];
|
||||
}
|
||||
8 [label="Enter when"];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
12 [label="Enter when branch condition "];
|
||||
13 [label="Access variable R|<local>/cacheExtSetting|"];
|
||||
14 [label="Smart cast: R|<local>/cacheExtSetting|"];
|
||||
15 [label="Function call: R|<local>/cacheExtSetting|.R|kotlin/text/isBlank|()" style="filled" fillcolor=yellow];
|
||||
16 [label="Exit when branch condition"];
|
||||
9 [label="Enter when branch condition "];
|
||||
10 [label="Access variable R|<local>/cacheExtSetting|"];
|
||||
11 [label="Const: Null(null)"];
|
||||
12 [label="Equality operator =="];
|
||||
13 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
17 [label="Enter when branch condition else"];
|
||||
14 [label="Enter when branch condition "];
|
||||
15 [label="Access variable R|<local>/cacheExtSetting|"];
|
||||
16 [label="Smart cast: R|<local>/cacheExtSetting|"];
|
||||
17 [label="Function call: R|<local>/cacheExtSetting|.R|kotlin/text/isBlank|()" style="filled" fillcolor=yellow];
|
||||
18 [label="Exit when branch condition"];
|
||||
}
|
||||
19 [label="Enter when branch result"];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
20 [label="Enter block"];
|
||||
21 [label="Access variable R|<local>/cacheExtSetting|"];
|
||||
22 [label="Smart cast: R|<local>/cacheExtSetting|"];
|
||||
23 [label="Function call: R|java/io/File.File|(...)" style="filled" fillcolor=yellow];
|
||||
24 [label="Exit block"];
|
||||
19 [label="Enter when branch condition else"];
|
||||
20 [label="Exit when branch condition"];
|
||||
}
|
||||
25 [label="Exit when branch result"];
|
||||
26 [label="Enter when branch result"];
|
||||
21 [label="Enter when branch result"];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
27 [label="Enter block"];
|
||||
28 [label="Const: Null(null)"];
|
||||
29 [label="Exit block"];
|
||||
22 [label="Enter block"];
|
||||
23 [label="Access variable R|<local>/cacheExtSetting|"];
|
||||
24 [label="Smart cast: R|<local>/cacheExtSetting|"];
|
||||
25 [label="Function call: R|java/io/File.File|(...)" style="filled" fillcolor=yellow];
|
||||
26 [label="Exit block"];
|
||||
}
|
||||
30 [label="Exit when branch result"];
|
||||
31 [label="Enter when branch result"];
|
||||
27 [label="Exit when branch result"];
|
||||
28 [label="Enter when branch result"];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
32 [label="Enter block"];
|
||||
33 [label="Access variable R|/cache|"];
|
||||
34 [label="Enter safe call"];
|
||||
35 [label="Postponed enter to lambda"];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
36 [label="Enter function <anonymous>" style="filled" fillcolor=red];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
37 [label="Enter block"];
|
||||
38 [label="Access variable R|<local>/it|"];
|
||||
39 [label="Const: String(main.kts.compiled.cache)"];
|
||||
40 [label="Function call: R|java/io/File.File|(...)" style="filled" fillcolor=yellow];
|
||||
41 [label="Exit block"];
|
||||
}
|
||||
42 [label="Exit function <anonymous>" style="filled" fillcolor=red];
|
||||
}
|
||||
43 [label="Postponed exit from lambda"];
|
||||
44 [label="Function call: $subj$.R|kotlin/let|<R|java/io/File|, R|java/io/File|>(...)" style="filled" fillcolor=yellow];
|
||||
45 [label="Exit safe call"];
|
||||
46 [label="Exit block"];
|
||||
29 [label="Enter block"];
|
||||
30 [label="Const: Null(null)"];
|
||||
31 [label="Exit block"];
|
||||
}
|
||||
47 [label="Exit when branch result"];
|
||||
48 [label="Merge postponed lambda exits"];
|
||||
49 [label="Exit when"];
|
||||
32 [label="Exit when branch result"];
|
||||
33 [label="Enter when branch result"];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
34 [label="Enter block"];
|
||||
35 [label="Access variable R|/cache|"];
|
||||
36 [label="Enter safe call"];
|
||||
37 [label="Postponed enter to lambda"];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
38 [label="Enter function <anonymous>" style="filled" fillcolor=red];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
39 [label="Enter block"];
|
||||
40 [label="Access variable R|<local>/it|"];
|
||||
41 [label="Const: String(main.kts.compiled.cache)"];
|
||||
42 [label="Function call: R|java/io/File.File|(...)" style="filled" fillcolor=yellow];
|
||||
43 [label="Exit block"];
|
||||
}
|
||||
44 [label="Exit function <anonymous>" style="filled" fillcolor=red];
|
||||
}
|
||||
45 [label="Postponed exit from lambda"];
|
||||
46 [label="Function call: $subj$.R|kotlin/let|<R|java/io/File|, R|java/io/File|>(...)" style="filled" fillcolor=yellow];
|
||||
47 [label="Exit safe call"];
|
||||
48 [label="Exit block"];
|
||||
}
|
||||
49 [label="Exit when branch result"];
|
||||
50 [label="Merge postponed lambda exits"];
|
||||
51 [label="Exit when"];
|
||||
}
|
||||
50 [label="Variable declaration: lval cacheBaseDir: R|java/io/File?|"];
|
||||
51 [label="Exit block"];
|
||||
52 [label="Variable declaration: lval cacheBaseDir: R|java/io/File?|"];
|
||||
53 [label="Exit block"];
|
||||
}
|
||||
52 [label="Exit function test" style="filled" fillcolor=red];
|
||||
54 [label="Exit function test" style="filled" fillcolor=red];
|
||||
}
|
||||
4 -> {5};
|
||||
5 -> {6};
|
||||
6 -> {7};
|
||||
7 -> {8};
|
||||
8 -> {9};
|
||||
9 -> {10};
|
||||
10 -> {11};
|
||||
11 -> {12 31};
|
||||
11 -> {12};
|
||||
12 -> {13};
|
||||
13 -> {14};
|
||||
13 -> {14 33};
|
||||
14 -> {15};
|
||||
15 -> {16};
|
||||
16 -> {17 26};
|
||||
16 -> {17};
|
||||
17 -> {18};
|
||||
18 -> {19};
|
||||
18 -> {19 28};
|
||||
19 -> {20};
|
||||
20 -> {21};
|
||||
21 -> {22};
|
||||
22 -> {23};
|
||||
23 -> {24};
|
||||
24 -> {25};
|
||||
25 -> {49};
|
||||
25 -> {26};
|
||||
26 -> {27};
|
||||
27 -> {28};
|
||||
27 -> {51};
|
||||
28 -> {29};
|
||||
29 -> {30};
|
||||
30 -> {49};
|
||||
30 -> {31};
|
||||
31 -> {32};
|
||||
32 -> {33};
|
||||
33 -> {34 45};
|
||||
32 -> {51};
|
||||
33 -> {34};
|
||||
34 -> {35};
|
||||
35 -> {36 44};
|
||||
35 -> {43} [style=dotted];
|
||||
35 -> {36} [style=dashed];
|
||||
35 -> {36 47};
|
||||
36 -> {37};
|
||||
37 -> {38};
|
||||
37 -> {38 46};
|
||||
37 -> {45} [style=dotted];
|
||||
37 -> {38} [style=dashed];
|
||||
38 -> {39};
|
||||
39 -> {40};
|
||||
40 -> {41};
|
||||
41 -> {42};
|
||||
42 -> {43};
|
||||
43 -> {44} [color=green];
|
||||
43 -> {48} [color=red];
|
||||
43 -> {44};
|
||||
44 -> {45};
|
||||
45 -> {46 48};
|
||||
45 -> {46} [color=green];
|
||||
45 -> {50} [color=red];
|
||||
46 -> {47};
|
||||
47 -> {49};
|
||||
48 -> {49} [color=red];
|
||||
49 -> {50};
|
||||
50 -> {51};
|
||||
47 -> {48 50};
|
||||
48 -> {49};
|
||||
49 -> {51};
|
||||
50 -> {51} [color=red];
|
||||
51 -> {52};
|
||||
52 -> {53};
|
||||
53 -> {54};
|
||||
|
||||
}
|
||||
|
||||
+157
-150
@@ -5,93 +5,98 @@ digraph inPlaceLambdas_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter class A" style="filled" fillcolor=red];
|
||||
1 [label="Exit class A" style="filled" fillcolor=red];
|
||||
0 [label="Enter file inPlaceLambdas.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file inPlaceLambdas.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
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 [label="Enter class A" style="filled" fillcolor=red];
|
||||
3 [label="Exit class A" style="filled" fillcolor=red];
|
||||
}
|
||||
2 -> {3};
|
||||
2 -> {3} [color=green];
|
||||
|
||||
subgraph cluster_2 {
|
||||
color=red
|
||||
4 [label="Enter class B" style="filled" fillcolor=red];
|
||||
5 [label="Exit class B" style="filled" fillcolor=red];
|
||||
4 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
5 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
}
|
||||
4 -> {5} [color=green];
|
||||
4 -> {5};
|
||||
|
||||
subgraph cluster_3 {
|
||||
color=red
|
||||
6 [label="Enter function bar" style="filled" fillcolor=red];
|
||||
7 [label="Exit function bar" style="filled" fillcolor=red];
|
||||
6 [label="Enter class B" style="filled" fillcolor=red];
|
||||
7 [label="Exit class B" style="filled" fillcolor=red];
|
||||
}
|
||||
6 -> {7};
|
||||
6 -> {7} [color=green];
|
||||
|
||||
subgraph cluster_4 {
|
||||
color=red
|
||||
8 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
9 [label="Enter block"];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
10 [label="Enter when"];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
11 [label="Enter when branch condition "];
|
||||
12 [label="Access variable R|<local>/x|"];
|
||||
13 [label="Type operator: (R|<local>/x| is R|A|)"];
|
||||
14 [label="Exit when branch condition"];
|
||||
}
|
||||
15 [label="Synthetic else branch"];
|
||||
16 [label="Enter when branch result"];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
17 [label="Enter block"];
|
||||
18 [label="Postponed enter to lambda"];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
19 [label="Enter function <anonymous>" style="filled" fillcolor=red];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
20 [label="Enter block"];
|
||||
21 [label="Access variable R|<local>/x|"];
|
||||
22 [label="Smart cast: R|<local>/x|"];
|
||||
23 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
24 [label="Exit block"];
|
||||
}
|
||||
25 [label="Exit function <anonymous>" style="filled" fillcolor=red];
|
||||
}
|
||||
26 [label="Postponed exit from lambda"];
|
||||
27 [label="Function call: R|kotlin/run|<R|kotlin/Unit|>(...)" style="filled" fillcolor=yellow];
|
||||
28 [label="Exit block"];
|
||||
}
|
||||
29 [label="Exit when branch result"];
|
||||
30 [label="Exit when"];
|
||||
}
|
||||
31 [label="Exit block"];
|
||||
}
|
||||
32 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
8 [label="Enter function bar" style="filled" fillcolor=red];
|
||||
9 [label="Exit function bar" style="filled" fillcolor=red];
|
||||
}
|
||||
8 -> {9};
|
||||
9 -> {10};
|
||||
|
||||
subgraph cluster_5 {
|
||||
color=red
|
||||
10 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
11 [label="Enter block"];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
12 [label="Enter when"];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
13 [label="Enter when branch condition "];
|
||||
14 [label="Access variable R|<local>/x|"];
|
||||
15 [label="Type operator: (R|<local>/x| is R|A|)"];
|
||||
16 [label="Exit when branch condition"];
|
||||
}
|
||||
17 [label="Synthetic else branch"];
|
||||
18 [label="Enter when branch result"];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
19 [label="Enter block"];
|
||||
20 [label="Postponed enter to lambda"];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
21 [label="Enter function <anonymous>" style="filled" fillcolor=red];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
22 [label="Enter block"];
|
||||
23 [label="Access variable R|<local>/x|"];
|
||||
24 [label="Smart cast: R|<local>/x|"];
|
||||
25 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
26 [label="Exit block"];
|
||||
}
|
||||
27 [label="Exit function <anonymous>" style="filled" fillcolor=red];
|
||||
}
|
||||
28 [label="Postponed exit from lambda"];
|
||||
29 [label="Function call: R|kotlin/run|<R|kotlin/Unit|>(...)" style="filled" fillcolor=yellow];
|
||||
30 [label="Exit block"];
|
||||
}
|
||||
31 [label="Exit when branch result"];
|
||||
32 [label="Exit when"];
|
||||
}
|
||||
33 [label="Exit block"];
|
||||
}
|
||||
34 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
}
|
||||
10 -> {11};
|
||||
11 -> {12};
|
||||
12 -> {13};
|
||||
13 -> {14};
|
||||
14 -> {15 16};
|
||||
15 -> {30};
|
||||
16 -> {17};
|
||||
17 -> {18};
|
||||
18 -> {19 27};
|
||||
18 -> {26} [style=dotted];
|
||||
18 -> {19} [style=dashed];
|
||||
14 -> {15};
|
||||
15 -> {16};
|
||||
16 -> {17 18};
|
||||
17 -> {32};
|
||||
18 -> {19};
|
||||
19 -> {20};
|
||||
20 -> {21};
|
||||
20 -> {21 29};
|
||||
20 -> {28} [style=dotted];
|
||||
20 -> {21} [style=dashed];
|
||||
21 -> {22};
|
||||
22 -> {23};
|
||||
23 -> {24};
|
||||
@@ -103,42 +108,42 @@ digraph inPlaceLambdas_kt {
|
||||
29 -> {30};
|
||||
30 -> {31};
|
||||
31 -> {32};
|
||||
|
||||
subgraph cluster_11 {
|
||||
color=red
|
||||
33 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
34 [label="Enter block"];
|
||||
35 [label="Postponed enter to lambda"];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
36 [label="Enter function <anonymous>" style="filled" fillcolor=red];
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
37 [label="Enter block"];
|
||||
38 [label="Access variable R|<local>/x|"];
|
||||
39 [label="Type operator: (R|<local>/x| as R|B|)"];
|
||||
40 [label="Exit block"];
|
||||
}
|
||||
41 [label="Exit function <anonymous>" style="filled" fillcolor=red];
|
||||
}
|
||||
42 [label="Postponed exit from lambda"];
|
||||
43 [label="Function call: R|kotlin/run|<R|B|>(...)" style="filled" fillcolor=yellow];
|
||||
44 [label="Access variable R|<local>/x|"];
|
||||
45 [label="Smart cast: R|<local>/x|"];
|
||||
46 [label="Function call: R|<local>/x|.R|/B.bar|()" style="filled" fillcolor=yellow];
|
||||
47 [label="Exit block"];
|
||||
}
|
||||
48 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
}
|
||||
32 -> {33};
|
||||
33 -> {34};
|
||||
34 -> {35};
|
||||
35 -> {36 43};
|
||||
35 -> {42} [style=dotted];
|
||||
35 -> {36} [style=dashed];
|
||||
|
||||
subgraph cluster_12 {
|
||||
color=red
|
||||
35 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
36 [label="Enter block"];
|
||||
37 [label="Postponed enter to lambda"];
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
38 [label="Enter function <anonymous>" style="filled" fillcolor=red];
|
||||
subgraph cluster_15 {
|
||||
color=blue
|
||||
39 [label="Enter block"];
|
||||
40 [label="Access variable R|<local>/x|"];
|
||||
41 [label="Type operator: (R|<local>/x| as R|B|)"];
|
||||
42 [label="Exit block"];
|
||||
}
|
||||
43 [label="Exit function <anonymous>" style="filled" fillcolor=red];
|
||||
}
|
||||
44 [label="Postponed exit from lambda"];
|
||||
45 [label="Function call: R|kotlin/run|<R|B|>(...)" style="filled" fillcolor=yellow];
|
||||
46 [label="Access variable R|<local>/x|"];
|
||||
47 [label="Smart cast: R|<local>/x|"];
|
||||
48 [label="Function call: R|<local>/x|.R|/B.bar|()" style="filled" fillcolor=yellow];
|
||||
49 [label="Exit block"];
|
||||
}
|
||||
50 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
}
|
||||
35 -> {36};
|
||||
36 -> {37};
|
||||
37 -> {38};
|
||||
37 -> {38 45};
|
||||
37 -> {44} [style=dotted];
|
||||
37 -> {38} [style=dashed];
|
||||
38 -> {39};
|
||||
39 -> {40};
|
||||
40 -> {41};
|
||||
@@ -149,74 +154,74 @@ digraph inPlaceLambdas_kt {
|
||||
45 -> {46};
|
||||
46 -> {47};
|
||||
47 -> {48};
|
||||
48 -> {49};
|
||||
49 -> {50};
|
||||
|
||||
subgraph cluster_15 {
|
||||
subgraph cluster_16 {
|
||||
color=red
|
||||
49 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_16 {
|
||||
51 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_17 {
|
||||
color=blue
|
||||
50 [label="Enter block"];
|
||||
subgraph cluster_17 {
|
||||
52 [label="Enter block"];
|
||||
subgraph cluster_18 {
|
||||
color=blue
|
||||
51 [label="Enter when"];
|
||||
subgraph cluster_18 {
|
||||
color=blue
|
||||
52 [label="Enter when branch condition "];
|
||||
53 [label="Access variable R|<local>/x|"];
|
||||
54 [label="Type operator: (R|<local>/x| is R|A|)"];
|
||||
55 [label="Exit when branch condition"];
|
||||
}
|
||||
56 [label="Synthetic else branch"];
|
||||
57 [label="Enter when branch result"];
|
||||
53 [label="Enter when"];
|
||||
subgraph cluster_19 {
|
||||
color=blue
|
||||
58 [label="Enter block"];
|
||||
59 [label="Postponed enter to lambda"];
|
||||
subgraph cluster_20 {
|
||||
color=blue
|
||||
60 [label="Enter function <anonymous>" style="filled" fillcolor=red];
|
||||
subgraph cluster_21 {
|
||||
color=blue
|
||||
61 [label="Enter block"];
|
||||
62 [label="Access variable R|<local>/x|"];
|
||||
63 [label="Smart cast: R|<local>/x|"];
|
||||
64 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
65 [label="Access variable R|<local>/x|"];
|
||||
66 [label="Smart cast: R|<local>/x|"];
|
||||
67 [label="Type operator: (R|<local>/x| as R|B|)"];
|
||||
68 [label="Exit block"];
|
||||
}
|
||||
69 [label="Exit function <anonymous>" style="filled" fillcolor=red];
|
||||
}
|
||||
70 [label="Postponed exit from lambda"];
|
||||
71 [label="Function call: R|kotlin/run|<R|B|>(...)" style="filled" fillcolor=yellow];
|
||||
72 [label="Access variable R|<local>/x|"];
|
||||
73 [label="Smart cast: R|<local>/x|"];
|
||||
74 [label="Function call: R|<local>/x|.R|/B.bar|()" style="filled" fillcolor=yellow];
|
||||
75 [label="Exit block"];
|
||||
54 [label="Enter when branch condition "];
|
||||
55 [label="Access variable R|<local>/x|"];
|
||||
56 [label="Type operator: (R|<local>/x| is R|A|)"];
|
||||
57 [label="Exit when branch condition"];
|
||||
}
|
||||
76 [label="Exit when branch result"];
|
||||
77 [label="Exit when"];
|
||||
58 [label="Synthetic else branch"];
|
||||
59 [label="Enter when branch result"];
|
||||
subgraph cluster_20 {
|
||||
color=blue
|
||||
60 [label="Enter block"];
|
||||
61 [label="Postponed enter to lambda"];
|
||||
subgraph cluster_21 {
|
||||
color=blue
|
||||
62 [label="Enter function <anonymous>" style="filled" fillcolor=red];
|
||||
subgraph cluster_22 {
|
||||
color=blue
|
||||
63 [label="Enter block"];
|
||||
64 [label="Access variable R|<local>/x|"];
|
||||
65 [label="Smart cast: R|<local>/x|"];
|
||||
66 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
67 [label="Access variable R|<local>/x|"];
|
||||
68 [label="Smart cast: R|<local>/x|"];
|
||||
69 [label="Type operator: (R|<local>/x| as R|B|)"];
|
||||
70 [label="Exit block"];
|
||||
}
|
||||
71 [label="Exit function <anonymous>" style="filled" fillcolor=red];
|
||||
}
|
||||
72 [label="Postponed exit from lambda"];
|
||||
73 [label="Function call: R|kotlin/run|<R|B|>(...)" style="filled" fillcolor=yellow];
|
||||
74 [label="Access variable R|<local>/x|"];
|
||||
75 [label="Smart cast: R|<local>/x|"];
|
||||
76 [label="Function call: R|<local>/x|.R|/B.bar|()" style="filled" fillcolor=yellow];
|
||||
77 [label="Exit block"];
|
||||
}
|
||||
78 [label="Exit when branch result"];
|
||||
79 [label="Exit when"];
|
||||
}
|
||||
78 [label="Exit block"];
|
||||
80 [label="Exit block"];
|
||||
}
|
||||
79 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
81 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
}
|
||||
49 -> {50};
|
||||
50 -> {51};
|
||||
51 -> {52};
|
||||
52 -> {53};
|
||||
53 -> {54};
|
||||
54 -> {55};
|
||||
55 -> {56 57};
|
||||
56 -> {77};
|
||||
57 -> {58};
|
||||
58 -> {59};
|
||||
59 -> {60 71};
|
||||
59 -> {70} [style=dotted];
|
||||
59 -> {60} [style=dashed];
|
||||
55 -> {56};
|
||||
56 -> {57};
|
||||
57 -> {58 59};
|
||||
58 -> {79};
|
||||
59 -> {60};
|
||||
60 -> {61};
|
||||
61 -> {62};
|
||||
61 -> {62 73};
|
||||
61 -> {72} [style=dotted];
|
||||
61 -> {62} [style=dashed];
|
||||
62 -> {63};
|
||||
63 -> {64};
|
||||
64 -> {65};
|
||||
@@ -234,5 +239,7 @@ digraph inPlaceLambdas_kt {
|
||||
76 -> {77};
|
||||
77 -> {78};
|
||||
78 -> {79};
|
||||
79 -> {80};
|
||||
80 -> {81};
|
||||
|
||||
}
|
||||
|
||||
+192
-185
@@ -5,235 +5,240 @@ digraph lambdaInWhenBranch_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter class Sealed" style="filled" fillcolor=red];
|
||||
subgraph cluster_1 {
|
||||
color=blue
|
||||
1 [label="Enter function <init>" style="filled" fillcolor=red];
|
||||
2 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
|
||||
3 [label="Exit function <init>" style="filled" fillcolor=red];
|
||||
}
|
||||
4 [label="Exit class Sealed" style="filled" fillcolor=red];
|
||||
0 [label="Enter file lambdaInWhenBranch.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file lambdaInWhenBranch.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1} [color=green];
|
||||
0 -> {4} [style=dotted];
|
||||
0 -> {1} [style=dashed];
|
||||
1 -> {2};
|
||||
2 -> {3};
|
||||
3 -> {4} [color=green];
|
||||
|
||||
subgraph cluster_2 {
|
||||
subgraph cluster_1 {
|
||||
color=red
|
||||
5 [label="Enter class SubClass1" style="filled" fillcolor=red];
|
||||
subgraph cluster_3 {
|
||||
2 [label="Enter class Sealed" style="filled" fillcolor=red];
|
||||
subgraph cluster_2 {
|
||||
color=blue
|
||||
6 [label="Enter property" style="filled" fillcolor=red];
|
||||
7 [label="Access variable R|<local>/t|"];
|
||||
8 [label="Exit property" style="filled" fillcolor=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];
|
||||
}
|
||||
6 [label="Exit class Sealed" style="filled" fillcolor=red];
|
||||
}
|
||||
2 -> {3} [color=green];
|
||||
2 -> {6} [style=dotted];
|
||||
2 -> {3} [style=dashed];
|
||||
3 -> {4};
|
||||
4 -> {5};
|
||||
5 -> {6} [color=green];
|
||||
|
||||
subgraph cluster_3 {
|
||||
color=red
|
||||
7 [label="Enter class SubClass1" style="filled" fillcolor=red];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
9 [label="Enter function <init>" style="filled" fillcolor=red];
|
||||
10 [label="Delegated constructor call: super<R|Sealed|>()" style="filled" fillcolor=yellow];
|
||||
11 [label="Exit function <init>" style="filled" fillcolor=red];
|
||||
8 [label="Enter property" style="filled" fillcolor=red];
|
||||
9 [label="Access variable R|<local>/t|"];
|
||||
10 [label="Exit property" style="filled" fillcolor=red];
|
||||
}
|
||||
12 [label="Exit class SubClass1" style="filled" fillcolor=red];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
11 [label="Enter function <init>" style="filled" fillcolor=red];
|
||||
12 [label="Delegated constructor call: super<R|Sealed|>()" style="filled" fillcolor=yellow];
|
||||
13 [label="Exit function <init>" style="filled" fillcolor=red];
|
||||
}
|
||||
14 [label="Exit class SubClass1" style="filled" fillcolor=red];
|
||||
}
|
||||
5 -> {6} [color=green];
|
||||
5 -> {12} [style=dotted];
|
||||
5 -> {6 9} [style=dashed];
|
||||
6 -> {7};
|
||||
7 -> {8};
|
||||
8 -> {9} [color=green];
|
||||
7 -> {8} [color=green];
|
||||
7 -> {14} [style=dotted];
|
||||
7 -> {8 11} [style=dashed];
|
||||
8 -> {9};
|
||||
9 -> {10};
|
||||
10 -> {11};
|
||||
11 -> {12} [color=green];
|
||||
|
||||
subgraph cluster_5 {
|
||||
color=red
|
||||
13 [label="Enter function component1" style="filled" fillcolor=red];
|
||||
14 [label="Exit function component1" style="filled" fillcolor=red];
|
||||
}
|
||||
13 -> {14};
|
||||
10 -> {11} [color=green];
|
||||
11 -> {12};
|
||||
12 -> {13};
|
||||
13 -> {14} [color=green];
|
||||
|
||||
subgraph cluster_6 {
|
||||
color=red
|
||||
15 [label="Enter function copy" style="filled" fillcolor=red];
|
||||
16 [label="Enter default value of t"];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
17 [label="Enter default value of t" style="filled" fillcolor=red];
|
||||
18 [label="Access variable R|/SubClass1.t|"];
|
||||
19 [label="Exit default value of t" style="filled" fillcolor=red];
|
||||
}
|
||||
20 [label="Exit default value of t"];
|
||||
21 [label="Exit function copy" style="filled" fillcolor=red];
|
||||
15 [label="Enter function component1" style="filled" fillcolor=red];
|
||||
16 [label="Exit function component1" style="filled" fillcolor=red];
|
||||
}
|
||||
15 -> {16};
|
||||
16 -> {17 20};
|
||||
16 -> {17} [style=dashed];
|
||||
|
||||
subgraph cluster_7 {
|
||||
color=red
|
||||
17 [label="Enter function copy" style="filled" fillcolor=red];
|
||||
18 [label="Enter default value of t"];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
19 [label="Enter default value of t" style="filled" fillcolor=red];
|
||||
20 [label="Access variable R|/SubClass1.t|"];
|
||||
21 [label="Exit default value of t" style="filled" fillcolor=red];
|
||||
}
|
||||
22 [label="Exit default value of t"];
|
||||
23 [label="Exit function copy" style="filled" fillcolor=red];
|
||||
}
|
||||
17 -> {18};
|
||||
18 -> {19};
|
||||
18 -> {19 22};
|
||||
18 -> {19} [style=dashed];
|
||||
19 -> {20};
|
||||
20 -> {21};
|
||||
21 -> {22};
|
||||
22 -> {23};
|
||||
|
||||
subgraph cluster_8 {
|
||||
subgraph cluster_9 {
|
||||
color=red
|
||||
22 [label="Enter class SubClass2" style="filled" fillcolor=red];
|
||||
subgraph cluster_9 {
|
||||
24 [label="Enter class SubClass2" style="filled" fillcolor=red];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
23 [label="Enter function <init>" style="filled" fillcolor=red];
|
||||
24 [label="Delegated constructor call: super<R|Sealed|>()" style="filled" fillcolor=yellow];
|
||||
25 [label="Exit function <init>" style="filled" fillcolor=red];
|
||||
25 [label="Enter function <init>" style="filled" fillcolor=red];
|
||||
26 [label="Delegated constructor call: super<R|Sealed|>()" style="filled" fillcolor=yellow];
|
||||
27 [label="Exit function <init>" style="filled" fillcolor=red];
|
||||
}
|
||||
26 [label="Exit class SubClass2" style="filled" fillcolor=red];
|
||||
28 [label="Exit class SubClass2" style="filled" fillcolor=red];
|
||||
}
|
||||
22 -> {23} [color=green];
|
||||
22 -> {26} [style=dotted];
|
||||
22 -> {23} [style=dashed];
|
||||
23 -> {24};
|
||||
24 -> {25};
|
||||
25 -> {26} [color=green];
|
||||
|
||||
subgraph cluster_10 {
|
||||
color=red
|
||||
27 [label="Enter function copy" style="filled" fillcolor=red];
|
||||
28 [label="Exit function copy" style="filled" fillcolor=red];
|
||||
}
|
||||
27 -> {28};
|
||||
24 -> {25} [color=green];
|
||||
24 -> {28} [style=dotted];
|
||||
24 -> {25} [style=dashed];
|
||||
25 -> {26};
|
||||
26 -> {27};
|
||||
27 -> {28} [color=green];
|
||||
|
||||
subgraph cluster_11 {
|
||||
color=red
|
||||
29 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
30 [label="Enter block"];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
31 [label="Enter when"];
|
||||
32 [label="Access variable R|<local>/p|"];
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
33 [label="Enter when branch condition "];
|
||||
34 [label="Exit $subj"];
|
||||
35 [label="Type operator: ($subj$ is R|SubClass1|)"];
|
||||
36 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_15 {
|
||||
color=blue
|
||||
37 [label="Enter when branch condition "];
|
||||
38 [label="Exit $subj"];
|
||||
39 [label="Type operator: ($subj$ is R|SubClass2|)"];
|
||||
40 [label="Exit when branch condition"];
|
||||
}
|
||||
41 [label="Enter when branch result"];
|
||||
subgraph cluster_16 {
|
||||
color=blue
|
||||
42 [label="Enter block"];
|
||||
43 [label="Const: String()"];
|
||||
44 [label="Exit block"];
|
||||
}
|
||||
45 [label="Exit when branch result"];
|
||||
46 [label="Enter when branch result"];
|
||||
subgraph cluster_17 {
|
||||
color=blue
|
||||
47 [label="Enter block"];
|
||||
48 [label="Const: String()"];
|
||||
49 [label="Postponed enter to lambda"];
|
||||
subgraph cluster_18 {
|
||||
color=blue
|
||||
50 [label="Enter function <anonymous>" style="filled" fillcolor=red];
|
||||
subgraph cluster_19 {
|
||||
color=blue
|
||||
51 [label="Enter block"];
|
||||
52 [label="Access variable R|<local>/it|"];
|
||||
53 [label="Exit block"];
|
||||
}
|
||||
54 [label="Exit function <anonymous>" style="filled" fillcolor=red];
|
||||
}
|
||||
55 [label="Postponed exit from lambda"];
|
||||
56 [label="Function call: String().R|kotlin/let|<R|kotlin/String|, R|kotlin/String|>(...)" style="filled" fillcolor=yellow];
|
||||
57 [label="Exit block"];
|
||||
}
|
||||
58 [label="Exit when branch result"];
|
||||
59 [label="Exit when"];
|
||||
}
|
||||
60 [label="Access variable R|<local>/p|"];
|
||||
61 [label="Access variable <Unresolved name: t>#"];
|
||||
subgraph cluster_20 {
|
||||
color=blue
|
||||
62 [label="Enter when"];
|
||||
63 [label="Access variable R|<local>/p|"];
|
||||
subgraph cluster_21 {
|
||||
color=blue
|
||||
64 [label="Enter when branch condition "];
|
||||
65 [label="Exit $subj"];
|
||||
66 [label="Type operator: ($subj$ is R|SubClass1|)"];
|
||||
67 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_22 {
|
||||
color=blue
|
||||
68 [label="Enter when branch condition "];
|
||||
69 [label="Exit $subj"];
|
||||
70 [label="Type operator: ($subj$ is R|SubClass2|)"];
|
||||
71 [label="Exit when branch condition"];
|
||||
}
|
||||
72 [label="Enter when branch result"];
|
||||
subgraph cluster_23 {
|
||||
color=blue
|
||||
73 [label="Enter block"];
|
||||
74 [label="Const: String(2)"];
|
||||
75 [label="Exit block"];
|
||||
}
|
||||
76 [label="Exit when branch result"];
|
||||
77 [label="Enter when branch result"];
|
||||
subgraph cluster_24 {
|
||||
color=blue
|
||||
78 [label="Enter block"];
|
||||
79 [label="Access variable R|<local>/p|"];
|
||||
80 [label="Smart cast: R|<local>/p|"];
|
||||
81 [label="Access variable R|/SubClass1.t|"];
|
||||
82 [label="Exit block"];
|
||||
}
|
||||
83 [label="Exit when branch result"];
|
||||
84 [label="Exit when"];
|
||||
}
|
||||
85 [label="Access variable R|kotlin/String.length|"];
|
||||
86 [label="Exit block"];
|
||||
}
|
||||
87 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
29 [label="Enter function copy" style="filled" fillcolor=red];
|
||||
30 [label="Exit function copy" style="filled" fillcolor=red];
|
||||
}
|
||||
29 -> {30};
|
||||
30 -> {31};
|
||||
|
||||
subgraph cluster_12 {
|
||||
color=red
|
||||
31 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
32 [label="Enter block"];
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
33 [label="Enter when"];
|
||||
34 [label="Access variable R|<local>/p|"];
|
||||
subgraph cluster_15 {
|
||||
color=blue
|
||||
35 [label="Enter when branch condition "];
|
||||
36 [label="Exit $subj"];
|
||||
37 [label="Type operator: ($subj$ is R|SubClass1|)"];
|
||||
38 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_16 {
|
||||
color=blue
|
||||
39 [label="Enter when branch condition "];
|
||||
40 [label="Exit $subj"];
|
||||
41 [label="Type operator: ($subj$ is R|SubClass2|)"];
|
||||
42 [label="Exit when branch condition"];
|
||||
}
|
||||
43 [label="Enter when branch result"];
|
||||
subgraph cluster_17 {
|
||||
color=blue
|
||||
44 [label="Enter block"];
|
||||
45 [label="Const: String()"];
|
||||
46 [label="Exit block"];
|
||||
}
|
||||
47 [label="Exit when branch result"];
|
||||
48 [label="Enter when branch result"];
|
||||
subgraph cluster_18 {
|
||||
color=blue
|
||||
49 [label="Enter block"];
|
||||
50 [label="Const: String()"];
|
||||
51 [label="Postponed enter to lambda"];
|
||||
subgraph cluster_19 {
|
||||
color=blue
|
||||
52 [label="Enter function <anonymous>" style="filled" fillcolor=red];
|
||||
subgraph cluster_20 {
|
||||
color=blue
|
||||
53 [label="Enter block"];
|
||||
54 [label="Access variable R|<local>/it|"];
|
||||
55 [label="Exit block"];
|
||||
}
|
||||
56 [label="Exit function <anonymous>" style="filled" fillcolor=red];
|
||||
}
|
||||
57 [label="Postponed exit from lambda"];
|
||||
58 [label="Function call: String().R|kotlin/let|<R|kotlin/String|, R|kotlin/String|>(...)" style="filled" fillcolor=yellow];
|
||||
59 [label="Exit block"];
|
||||
}
|
||||
60 [label="Exit when branch result"];
|
||||
61 [label="Exit when"];
|
||||
}
|
||||
62 [label="Access variable R|<local>/p|"];
|
||||
63 [label="Access variable <Unresolved name: t>#"];
|
||||
subgraph cluster_21 {
|
||||
color=blue
|
||||
64 [label="Enter when"];
|
||||
65 [label="Access variable R|<local>/p|"];
|
||||
subgraph cluster_22 {
|
||||
color=blue
|
||||
66 [label="Enter when branch condition "];
|
||||
67 [label="Exit $subj"];
|
||||
68 [label="Type operator: ($subj$ is R|SubClass1|)"];
|
||||
69 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_23 {
|
||||
color=blue
|
||||
70 [label="Enter when branch condition "];
|
||||
71 [label="Exit $subj"];
|
||||
72 [label="Type operator: ($subj$ is R|SubClass2|)"];
|
||||
73 [label="Exit when branch condition"];
|
||||
}
|
||||
74 [label="Enter when branch result"];
|
||||
subgraph cluster_24 {
|
||||
color=blue
|
||||
75 [label="Enter block"];
|
||||
76 [label="Const: String(2)"];
|
||||
77 [label="Exit block"];
|
||||
}
|
||||
78 [label="Exit when branch result"];
|
||||
79 [label="Enter when branch result"];
|
||||
subgraph cluster_25 {
|
||||
color=blue
|
||||
80 [label="Enter block"];
|
||||
81 [label="Access variable R|<local>/p|"];
|
||||
82 [label="Smart cast: R|<local>/p|"];
|
||||
83 [label="Access variable R|/SubClass1.t|"];
|
||||
84 [label="Exit block"];
|
||||
}
|
||||
85 [label="Exit when branch result"];
|
||||
86 [label="Exit when"];
|
||||
}
|
||||
87 [label="Access variable R|kotlin/String.length|"];
|
||||
88 [label="Exit block"];
|
||||
}
|
||||
89 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
}
|
||||
31 -> {32};
|
||||
32 -> {33};
|
||||
33 -> {34};
|
||||
34 -> {35};
|
||||
35 -> {36};
|
||||
36 -> {37 46};
|
||||
36 -> {37};
|
||||
37 -> {38};
|
||||
38 -> {39};
|
||||
38 -> {39 48};
|
||||
39 -> {40};
|
||||
40 -> {41};
|
||||
41 -> {42};
|
||||
42 -> {43};
|
||||
43 -> {44};
|
||||
44 -> {45};
|
||||
45 -> {59};
|
||||
45 -> {46};
|
||||
46 -> {47};
|
||||
47 -> {48};
|
||||
47 -> {61};
|
||||
48 -> {49};
|
||||
49 -> {50 56};
|
||||
49 -> {55} [style=dotted];
|
||||
49 -> {50} [style=dashed];
|
||||
49 -> {50};
|
||||
50 -> {51};
|
||||
51 -> {52};
|
||||
51 -> {52 58};
|
||||
51 -> {57} [style=dotted];
|
||||
51 -> {52} [style=dashed];
|
||||
52 -> {53};
|
||||
53 -> {54};
|
||||
54 -> {55};
|
||||
55 -> {56} [color=green];
|
||||
55 -> {59} [color=red];
|
||||
55 -> {56};
|
||||
56 -> {57};
|
||||
57 -> {58};
|
||||
57 -> {58} [color=green];
|
||||
57 -> {61} [color=red];
|
||||
58 -> {59};
|
||||
59 -> {60};
|
||||
60 -> {61};
|
||||
@@ -243,18 +248,18 @@ digraph lambdaInWhenBranch_kt {
|
||||
64 -> {65};
|
||||
65 -> {66};
|
||||
66 -> {67};
|
||||
67 -> {68 77};
|
||||
67 -> {68};
|
||||
68 -> {69};
|
||||
69 -> {70};
|
||||
69 -> {70 79};
|
||||
70 -> {71};
|
||||
71 -> {72};
|
||||
72 -> {73};
|
||||
73 -> {74};
|
||||
74 -> {75};
|
||||
75 -> {76};
|
||||
76 -> {84};
|
||||
76 -> {77};
|
||||
77 -> {78};
|
||||
78 -> {79};
|
||||
78 -> {86};
|
||||
79 -> {80};
|
||||
80 -> {81};
|
||||
81 -> {82};
|
||||
@@ -263,5 +268,7 @@ digraph lambdaInWhenBranch_kt {
|
||||
84 -> {85};
|
||||
85 -> {86};
|
||||
86 -> {87};
|
||||
87 -> {88};
|
||||
88 -> {89};
|
||||
|
||||
}
|
||||
|
||||
+35
-28
@@ -5,51 +5,58 @@ digraph smartcastOnLambda_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter function test" style="filled" fillcolor=red];
|
||||
subgraph cluster_1 {
|
||||
0 [label="Enter file smartcastOnLambda.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file smartcastOnLambda.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1} [color=green];
|
||||
|
||||
subgraph cluster_1 {
|
||||
color=red
|
||||
2 [label="Enter function test" style="filled" fillcolor=red];
|
||||
subgraph cluster_2 {
|
||||
color=blue
|
||||
1 [label="Enter block"];
|
||||
subgraph cluster_2 {
|
||||
3 [label="Enter block"];
|
||||
subgraph cluster_3 {
|
||||
color=blue
|
||||
2 [label="Enter when"];
|
||||
subgraph cluster_3 {
|
||||
color=blue
|
||||
3 [label="Enter when branch condition "];
|
||||
4 [label="Access variable R|<local>/func|"];
|
||||
5 [label="Const: Null(null)"];
|
||||
6 [label="Equality operator !="];
|
||||
7 [label="Exit when branch condition"];
|
||||
}
|
||||
8 [label="Synthetic else branch"];
|
||||
9 [label="Enter when branch result"];
|
||||
4 [label="Enter when"];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
10 [label="Enter block"];
|
||||
11 [label="Function call: R|<local>/func|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
|
||||
12 [label="Exit block"];
|
||||
5 [label="Enter when branch condition "];
|
||||
6 [label="Access variable R|<local>/func|"];
|
||||
7 [label="Const: Null(null)"];
|
||||
8 [label="Equality operator !="];
|
||||
9 [label="Exit when branch condition"];
|
||||
}
|
||||
13 [label="Exit when branch result"];
|
||||
14 [label="Exit when"];
|
||||
10 [label="Synthetic else branch"];
|
||||
11 [label="Enter when branch result"];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
12 [label="Enter block"];
|
||||
13 [label="Function call: R|<local>/func|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
|
||||
14 [label="Exit block"];
|
||||
}
|
||||
15 [label="Exit when branch result"];
|
||||
16 [label="Exit when"];
|
||||
}
|
||||
15 [label="Exit block"];
|
||||
17 [label="Exit block"];
|
||||
}
|
||||
16 [label="Exit function test" style="filled" fillcolor=red];
|
||||
18 [label="Exit function test" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1};
|
||||
1 -> {2};
|
||||
2 -> {3};
|
||||
3 -> {4};
|
||||
4 -> {5};
|
||||
5 -> {6};
|
||||
6 -> {7};
|
||||
7 -> {8 9};
|
||||
8 -> {14};
|
||||
9 -> {10};
|
||||
10 -> {11};
|
||||
7 -> {8};
|
||||
8 -> {9};
|
||||
9 -> {10 11};
|
||||
10 -> {16};
|
||||
11 -> {12};
|
||||
12 -> {13};
|
||||
13 -> {14};
|
||||
14 -> {15};
|
||||
15 -> {16};
|
||||
16 -> {17};
|
||||
17 -> {18};
|
||||
|
||||
}
|
||||
|
||||
Vendored
+68
-61
@@ -5,80 +5,85 @@ digraph dataFlowInfoFromWhileCondition_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter class A" style="filled" fillcolor=red];
|
||||
1 [label="Exit class A" style="filled" fillcolor=red];
|
||||
0 [label="Enter file dataFlowInfoFromWhileCondition.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file dataFlowInfoFromWhileCondition.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
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 [label="Enter class A" style="filled" fillcolor=red];
|
||||
3 [label="Exit class A" style="filled" fillcolor=red];
|
||||
}
|
||||
2 -> {3};
|
||||
2 -> {3} [color=green];
|
||||
|
||||
subgraph cluster_2 {
|
||||
color=red
|
||||
4 [label="Enter class B" style="filled" fillcolor=red];
|
||||
5 [label="Exit class B" style="filled" fillcolor=red];
|
||||
4 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
5 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
}
|
||||
4 -> {5} [color=green];
|
||||
4 -> {5};
|
||||
|
||||
subgraph cluster_3 {
|
||||
color=red
|
||||
6 [label="Enter class C" style="filled" fillcolor=red];
|
||||
7 [label="Exit class C" style="filled" fillcolor=red];
|
||||
6 [label="Enter class B" style="filled" fillcolor=red];
|
||||
7 [label="Exit class B" style="filled" fillcolor=red];
|
||||
}
|
||||
6 -> {7} [color=green];
|
||||
|
||||
subgraph cluster_4 {
|
||||
color=red
|
||||
8 [label="Enter function test" style="filled" fillcolor=red];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
9 [label="Enter block"];
|
||||
10 [label="Const: Null(null)"];
|
||||
11 [label="Variable declaration: lvar a: R|A?|"];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
12 [label="Enter while loop"];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
13 [label="Enter loop condition"];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
14 [label="Enter ||"];
|
||||
15 [label="Access variable R|<local>/a|"];
|
||||
16 [label="Type operator: (R|<local>/a| is R|B|)"];
|
||||
17 [label="Exit left part of ||"];
|
||||
18 [label="Enter right part of ||"];
|
||||
19 [label="Access variable R|<local>/a|"];
|
||||
20 [label="Type operator: (R|<local>/a| is R|C|)"];
|
||||
21 [label="Exit ||"];
|
||||
}
|
||||
22 [label="Exit loop condition"];
|
||||
}
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
23 [label="Enter loop block"];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
24 [label="Enter block"];
|
||||
25 [label="Access variable R|<local>/a|"];
|
||||
26 [label="Smart cast: R|<local>/a|"];
|
||||
27 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
28 [label="Exit block"];
|
||||
}
|
||||
29 [label="Exit loop block"];
|
||||
}
|
||||
30 [label="Exit while loop"];
|
||||
}
|
||||
31 [label="Exit block"];
|
||||
}
|
||||
32 [label="Exit function test" style="filled" fillcolor=red];
|
||||
8 [label="Enter class C" style="filled" fillcolor=red];
|
||||
9 [label="Exit class C" style="filled" fillcolor=red];
|
||||
}
|
||||
8 -> {9} [color=green];
|
||||
|
||||
subgraph cluster_5 {
|
||||
color=red
|
||||
10 [label="Enter function test" style="filled" fillcolor=red];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
11 [label="Enter block"];
|
||||
12 [label="Const: Null(null)"];
|
||||
13 [label="Variable declaration: lvar a: R|A?|"];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
14 [label="Enter while loop"];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
15 [label="Enter loop condition"];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
16 [label="Enter ||"];
|
||||
17 [label="Access variable R|<local>/a|"];
|
||||
18 [label="Type operator: (R|<local>/a| is R|B|)"];
|
||||
19 [label="Exit left part of ||"];
|
||||
20 [label="Enter right part of ||"];
|
||||
21 [label="Access variable R|<local>/a|"];
|
||||
22 [label="Type operator: (R|<local>/a| is R|C|)"];
|
||||
23 [label="Exit ||"];
|
||||
}
|
||||
24 [label="Exit loop condition"];
|
||||
}
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
25 [label="Enter loop block"];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
26 [label="Enter block"];
|
||||
27 [label="Access variable R|<local>/a|"];
|
||||
28 [label="Smart cast: R|<local>/a|"];
|
||||
29 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
30 [label="Exit block"];
|
||||
}
|
||||
31 [label="Exit loop block"];
|
||||
}
|
||||
32 [label="Exit while loop"];
|
||||
}
|
||||
33 [label="Exit block"];
|
||||
}
|
||||
34 [label="Exit function test" style="filled" fillcolor=red];
|
||||
}
|
||||
8 -> {9};
|
||||
9 -> {10};
|
||||
10 -> {11};
|
||||
11 -> {12};
|
||||
12 -> {13};
|
||||
@@ -86,20 +91,22 @@ digraph dataFlowInfoFromWhileCondition_kt {
|
||||
14 -> {15};
|
||||
15 -> {16};
|
||||
16 -> {17};
|
||||
17 -> {18 21};
|
||||
17 -> {18};
|
||||
18 -> {19};
|
||||
19 -> {20};
|
||||
19 -> {20 23};
|
||||
20 -> {21};
|
||||
21 -> {22};
|
||||
22 -> {23 30};
|
||||
22 -> {23};
|
||||
23 -> {24};
|
||||
24 -> {25};
|
||||
24 -> {25 32};
|
||||
25 -> {26};
|
||||
26 -> {27};
|
||||
27 -> {28};
|
||||
28 -> {29};
|
||||
29 -> {13} [color=green style=dashed];
|
||||
29 -> {30};
|
||||
30 -> {31};
|
||||
31 -> {32};
|
||||
31 -> {15} [color=green style=dashed];
|
||||
32 -> {33};
|
||||
33 -> {34};
|
||||
|
||||
}
|
||||
|
||||
+421
-414
File diff suppressed because it is too large
Load Diff
+113
-106
@@ -5,79 +5,84 @@ digraph multipleCasts_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter class A" style="filled" fillcolor=red];
|
||||
1 [label="Exit class A" style="filled" fillcolor=red];
|
||||
0 [label="Enter file multipleCasts.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file multipleCasts.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
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 [label="Enter class A" style="filled" fillcolor=red];
|
||||
3 [label="Exit class A" style="filled" fillcolor=red];
|
||||
}
|
||||
2 -> {3};
|
||||
2 -> {3} [color=green];
|
||||
|
||||
subgraph cluster_2 {
|
||||
color=red
|
||||
4 [label="Enter class B" style="filled" fillcolor=red];
|
||||
5 [label="Exit class B" style="filled" fillcolor=red];
|
||||
4 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
5 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
}
|
||||
4 -> {5} [color=green];
|
||||
4 -> {5};
|
||||
|
||||
subgraph cluster_3 {
|
||||
color=red
|
||||
6 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
7 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
6 [label="Enter class B" style="filled" fillcolor=red];
|
||||
7 [label="Exit class B" style="filled" fillcolor=red];
|
||||
}
|
||||
6 -> {7};
|
||||
6 -> {7} [color=green];
|
||||
|
||||
subgraph cluster_4 {
|
||||
color=red
|
||||
8 [label="Enter function getAny" style="filled" fillcolor=red];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
9 [label="Enter block"];
|
||||
10 [label="Const: Null(null)"];
|
||||
11 [label="Jump: ^getAny Null(null)"];
|
||||
12 [label="Stub" style="filled" fillcolor=gray];
|
||||
13 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
14 [label="Exit function getAny" style="filled" fillcolor=red];
|
||||
8 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
9 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
}
|
||||
8 -> {9};
|
||||
9 -> {10};
|
||||
10 -> {11};
|
||||
11 -> {14};
|
||||
11 -> {12} [style=dotted];
|
||||
12 -> {13} [style=dotted];
|
||||
13 -> {14} [style=dotted];
|
||||
|
||||
subgraph cluster_6 {
|
||||
subgraph cluster_5 {
|
||||
color=red
|
||||
15 [label="Enter function test_0" style="filled" fillcolor=red];
|
||||
subgraph cluster_7 {
|
||||
10 [label="Enter function getAny" style="filled" fillcolor=red];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
16 [label="Enter block"];
|
||||
17 [label="Function call: R|/getAny|()" style="filled" fillcolor=yellow];
|
||||
18 [label="Variable declaration: lval a: R|kotlin/Any?|"];
|
||||
19 [label="Function call: R|/getAny|()" style="filled" fillcolor=yellow];
|
||||
20 [label="Variable declaration: lval b: R|kotlin/Any?|"];
|
||||
21 [label="Access variable R|<local>/a|"];
|
||||
22 [label="Type operator: (R|<local>/a| as R|A|)"];
|
||||
23 [label="Access variable R|<local>/a|"];
|
||||
24 [label="Smart cast: R|<local>/a|"];
|
||||
25 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
26 [label="Access variable R|<local>/b|"];
|
||||
27 [label="Type operator: (R|<local>/b| as R|B|)"];
|
||||
28 [label="Access variable R|<local>/b|"];
|
||||
29 [label="Smart cast: R|<local>/b|"];
|
||||
30 [label="Function call: R|<local>/b|.R|/B.foo|()" style="filled" fillcolor=yellow];
|
||||
31 [label="Exit block"];
|
||||
11 [label="Enter block"];
|
||||
12 [label="Const: Null(null)"];
|
||||
13 [label="Jump: ^getAny Null(null)"];
|
||||
14 [label="Stub" style="filled" fillcolor=gray];
|
||||
15 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
32 [label="Exit function test_0" style="filled" fillcolor=red];
|
||||
16 [label="Exit function getAny" style="filled" fillcolor=red];
|
||||
}
|
||||
10 -> {11};
|
||||
11 -> {12};
|
||||
12 -> {13};
|
||||
13 -> {16};
|
||||
13 -> {14} [style=dotted];
|
||||
14 -> {15} [style=dotted];
|
||||
15 -> {16} [style=dotted];
|
||||
|
||||
subgraph cluster_7 {
|
||||
color=red
|
||||
17 [label="Enter function test_0" style="filled" fillcolor=red];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
18 [label="Enter block"];
|
||||
19 [label="Function call: R|/getAny|()" style="filled" fillcolor=yellow];
|
||||
20 [label="Variable declaration: lval a: R|kotlin/Any?|"];
|
||||
21 [label="Function call: R|/getAny|()" style="filled" fillcolor=yellow];
|
||||
22 [label="Variable declaration: lval b: R|kotlin/Any?|"];
|
||||
23 [label="Access variable R|<local>/a|"];
|
||||
24 [label="Type operator: (R|<local>/a| as R|A|)"];
|
||||
25 [label="Access variable R|<local>/a|"];
|
||||
26 [label="Smart cast: R|<local>/a|"];
|
||||
27 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
28 [label="Access variable R|<local>/b|"];
|
||||
29 [label="Type operator: (R|<local>/b| as R|B|)"];
|
||||
30 [label="Access variable R|<local>/b|"];
|
||||
31 [label="Smart cast: R|<local>/b|"];
|
||||
32 [label="Function call: R|<local>/b|.R|/B.foo|()" style="filled" fillcolor=yellow];
|
||||
33 [label="Exit block"];
|
||||
}
|
||||
34 [label="Exit function test_0" style="filled" fillcolor=red];
|
||||
}
|
||||
15 -> {16};
|
||||
16 -> {17};
|
||||
17 -> {18};
|
||||
18 -> {19};
|
||||
19 -> {20};
|
||||
@@ -93,58 +98,58 @@ digraph multipleCasts_kt {
|
||||
29 -> {30};
|
||||
30 -> {31};
|
||||
31 -> {32};
|
||||
|
||||
subgraph cluster_8 {
|
||||
color=red
|
||||
33 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
34 [label="Enter block"];
|
||||
35 [label="Function call: R|/getAny|()" style="filled" fillcolor=yellow];
|
||||
36 [label="Variable declaration: lval a: R|kotlin/Any?|"];
|
||||
37 [label="Function call: R|/getAny|()" style="filled" fillcolor=yellow];
|
||||
38 [label="Variable declaration: lval b: R|kotlin/Any?|"];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
39 [label="Enter when"];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
40 [label="Enter when branch condition "];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
41 [label="Enter &&"];
|
||||
42 [label="Access variable R|<local>/a|"];
|
||||
43 [label="Type operator: (R|<local>/a| is R|A|)"];
|
||||
44 [label="Exit left part of &&"];
|
||||
45 [label="Enter right part of &&"];
|
||||
46 [label="Access variable R|<local>/b|"];
|
||||
47 [label="Type operator: (R|<local>/b| is R|B|)"];
|
||||
48 [label="Exit &&"];
|
||||
}
|
||||
49 [label="Exit when branch condition"];
|
||||
}
|
||||
50 [label="Synthetic else branch"];
|
||||
51 [label="Enter when branch result"];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
52 [label="Enter block"];
|
||||
53 [label="Access variable R|<local>/a|"];
|
||||
54 [label="Smart cast: R|<local>/a|"];
|
||||
55 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
56 [label="Access variable R|<local>/b|"];
|
||||
57 [label="Smart cast: R|<local>/b|"];
|
||||
58 [label="Function call: R|<local>/b|.R|/B.foo|()" style="filled" fillcolor=yellow];
|
||||
59 [label="Exit block"];
|
||||
}
|
||||
60 [label="Exit when branch result"];
|
||||
61 [label="Exit when"];
|
||||
}
|
||||
62 [label="Exit block"];
|
||||
}
|
||||
63 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
}
|
||||
32 -> {33};
|
||||
33 -> {34};
|
||||
34 -> {35};
|
||||
|
||||
subgraph cluster_9 {
|
||||
color=red
|
||||
35 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
36 [label="Enter block"];
|
||||
37 [label="Function call: R|/getAny|()" style="filled" fillcolor=yellow];
|
||||
38 [label="Variable declaration: lval a: R|kotlin/Any?|"];
|
||||
39 [label="Function call: R|/getAny|()" style="filled" fillcolor=yellow];
|
||||
40 [label="Variable declaration: lval b: R|kotlin/Any?|"];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
41 [label="Enter when"];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
42 [label="Enter when branch condition "];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
43 [label="Enter &&"];
|
||||
44 [label="Access variable R|<local>/a|"];
|
||||
45 [label="Type operator: (R|<local>/a| is R|A|)"];
|
||||
46 [label="Exit left part of &&"];
|
||||
47 [label="Enter right part of &&"];
|
||||
48 [label="Access variable R|<local>/b|"];
|
||||
49 [label="Type operator: (R|<local>/b| is R|B|)"];
|
||||
50 [label="Exit &&"];
|
||||
}
|
||||
51 [label="Exit when branch condition"];
|
||||
}
|
||||
52 [label="Synthetic else branch"];
|
||||
53 [label="Enter when branch result"];
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
54 [label="Enter block"];
|
||||
55 [label="Access variable R|<local>/a|"];
|
||||
56 [label="Smart cast: R|<local>/a|"];
|
||||
57 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
58 [label="Access variable R|<local>/b|"];
|
||||
59 [label="Smart cast: R|<local>/b|"];
|
||||
60 [label="Function call: R|<local>/b|.R|/B.foo|()" style="filled" fillcolor=yellow];
|
||||
61 [label="Exit block"];
|
||||
}
|
||||
62 [label="Exit when branch result"];
|
||||
63 [label="Exit when"];
|
||||
}
|
||||
64 [label="Exit block"];
|
||||
}
|
||||
65 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
}
|
||||
35 -> {36};
|
||||
36 -> {37};
|
||||
37 -> {38};
|
||||
@@ -154,15 +159,15 @@ digraph multipleCasts_kt {
|
||||
41 -> {42};
|
||||
42 -> {43};
|
||||
43 -> {44};
|
||||
44 -> {45 48};
|
||||
44 -> {45};
|
||||
45 -> {46};
|
||||
46 -> {47};
|
||||
46 -> {47 50};
|
||||
47 -> {48};
|
||||
48 -> {49};
|
||||
49 -> {50 51};
|
||||
50 -> {61};
|
||||
51 -> {52};
|
||||
52 -> {53};
|
||||
49 -> {50};
|
||||
50 -> {51};
|
||||
51 -> {52 53};
|
||||
52 -> {63};
|
||||
53 -> {54};
|
||||
54 -> {55};
|
||||
55 -> {56};
|
||||
@@ -173,5 +178,7 @@ digraph multipleCasts_kt {
|
||||
60 -> {61};
|
||||
61 -> {62};
|
||||
62 -> {63};
|
||||
63 -> {64};
|
||||
64 -> {65};
|
||||
|
||||
}
|
||||
|
||||
+936
-929
File diff suppressed because it is too large
Load Diff
Vendored
+121
-114
@@ -5,62 +5,69 @@ digraph implicitReceiverAsWhenSubject_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_1 {
|
||||
0 [label="Enter file implicitReceiverAsWhenSubject.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file implicitReceiverAsWhenSubject.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1} [color=green];
|
||||
|
||||
subgraph cluster_1 {
|
||||
color=red
|
||||
2 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_2 {
|
||||
color=blue
|
||||
1 [label="Enter block"];
|
||||
subgraph cluster_2 {
|
||||
3 [label="Enter block"];
|
||||
subgraph cluster_3 {
|
||||
color=blue
|
||||
2 [label="Enter when"];
|
||||
3 [label="Access variable this@R|/test_1|"];
|
||||
subgraph cluster_3 {
|
||||
color=blue
|
||||
4 [label="Enter when branch condition "];
|
||||
5 [label="Exit $subj"];
|
||||
6 [label="Type operator: ($subj$ is R|kotlin/collections/List<*>|)"];
|
||||
7 [label="Exit when branch condition"];
|
||||
}
|
||||
4 [label="Enter when"];
|
||||
5 [label="Access variable this@R|/test_1|"];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
8 [label="Enter when branch condition "];
|
||||
9 [label="Exit $subj"];
|
||||
10 [label="Type operator: ($subj$ is R|kotlin/String|)"];
|
||||
11 [label="Exit when branch condition"];
|
||||
6 [label="Enter when branch condition "];
|
||||
7 [label="Exit $subj"];
|
||||
8 [label="Type operator: ($subj$ is R|kotlin/collections/List<*>|)"];
|
||||
9 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
12 [label="Enter when branch condition else"];
|
||||
10 [label="Enter when branch condition "];
|
||||
11 [label="Exit $subj"];
|
||||
12 [label="Type operator: ($subj$ is R|kotlin/String|)"];
|
||||
13 [label="Exit when branch condition"];
|
||||
}
|
||||
14 [label="Enter when branch result"];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
15 [label="Enter block"];
|
||||
16 [label="Const: Int(0)"];
|
||||
17 [label="Exit block"];
|
||||
14 [label="Enter when branch condition else"];
|
||||
15 [label="Exit when branch condition"];
|
||||
}
|
||||
18 [label="Exit when branch result"];
|
||||
19 [label="Enter when branch result"];
|
||||
16 [label="Enter when branch result"];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
20 [label="Enter block"];
|
||||
21 [label="Access variable R|kotlin/String.length|"];
|
||||
22 [label="Exit block"];
|
||||
17 [label="Enter block"];
|
||||
18 [label="Const: Int(0)"];
|
||||
19 [label="Exit block"];
|
||||
}
|
||||
23 [label="Exit when branch result"];
|
||||
24 [label="Enter when branch result"];
|
||||
20 [label="Exit when branch result"];
|
||||
21 [label="Enter when branch result"];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
25 [label="Enter block"];
|
||||
26 [label="Access variable this@R|/test_1|"];
|
||||
27 [label="Smart cast: this@R|/test_1|"];
|
||||
28 [label="Access variable R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|"];
|
||||
29 [label="Exit block"];
|
||||
22 [label="Enter block"];
|
||||
23 [label="Access variable R|kotlin/String.length|"];
|
||||
24 [label="Exit block"];
|
||||
}
|
||||
30 [label="Exit when branch result"];
|
||||
31 [label="Exit when"];
|
||||
25 [label="Exit when branch result"];
|
||||
26 [label="Enter when branch result"];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
27 [label="Enter block"];
|
||||
28 [label="Access variable this@R|/test_1|"];
|
||||
29 [label="Smart cast: this@R|/test_1|"];
|
||||
30 [label="Access variable R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|"];
|
||||
31 [label="Exit block"];
|
||||
}
|
||||
32 [label="Exit when branch result"];
|
||||
33 [label="Exit when"];
|
||||
}
|
||||
32 [label="Jump: ^test_1 when (this@R|/test_1|) {
|
||||
34 [label="Jump: ^test_1 when (this@R|/test_1|) {
|
||||
($subj$ is R|kotlin/collections/List<*>|) -> {
|
||||
this@R|/test_1|.R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|
|
||||
}
|
||||
@@ -72,113 +79,113 @@ digraph implicitReceiverAsWhenSubject_kt {
|
||||
}
|
||||
}
|
||||
"];
|
||||
33 [label="Stub" style="filled" fillcolor=gray];
|
||||
34 [label="Exit block" style="filled" fillcolor=gray];
|
||||
35 [label="Stub" style="filled" fillcolor=gray];
|
||||
36 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
35 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
37 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1};
|
||||
1 -> {2};
|
||||
2 -> {3};
|
||||
3 -> {4};
|
||||
4 -> {5};
|
||||
5 -> {6};
|
||||
6 -> {7};
|
||||
7 -> {8 24};
|
||||
7 -> {8};
|
||||
8 -> {9};
|
||||
9 -> {10};
|
||||
9 -> {10 26};
|
||||
10 -> {11};
|
||||
11 -> {12 19};
|
||||
11 -> {12};
|
||||
12 -> {13};
|
||||
13 -> {14};
|
||||
13 -> {14 21};
|
||||
14 -> {15};
|
||||
15 -> {16};
|
||||
16 -> {17};
|
||||
17 -> {18};
|
||||
18 -> {31};
|
||||
18 -> {19};
|
||||
19 -> {20};
|
||||
20 -> {21};
|
||||
20 -> {33};
|
||||
21 -> {22};
|
||||
22 -> {23};
|
||||
23 -> {31};
|
||||
23 -> {24};
|
||||
24 -> {25};
|
||||
25 -> {26};
|
||||
25 -> {33};
|
||||
26 -> {27};
|
||||
27 -> {28};
|
||||
28 -> {29};
|
||||
29 -> {30};
|
||||
30 -> {31};
|
||||
31 -> {32};
|
||||
32 -> {35};
|
||||
32 -> {33} [style=dotted];
|
||||
33 -> {34} [style=dotted];
|
||||
32 -> {33};
|
||||
33 -> {34};
|
||||
34 -> {37};
|
||||
34 -> {35} [style=dotted];
|
||||
35 -> {36} [style=dotted];
|
||||
36 -> {37} [style=dotted];
|
||||
|
||||
subgraph cluster_9 {
|
||||
subgraph cluster_10 {
|
||||
color=red
|
||||
36 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_10 {
|
||||
38 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
37 [label="Enter block"];
|
||||
subgraph cluster_11 {
|
||||
39 [label="Enter block"];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
38 [label="Enter when"];
|
||||
39 [label="Access variable this@R|/test_2|"];
|
||||
40 [label="Variable declaration: lval x: R|kotlin/Any|"];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
41 [label="Enter when branch condition "];
|
||||
42 [label="Exit $subj"];
|
||||
43 [label="Type operator: ($subj$ is R|kotlin/collections/List<*>|)"];
|
||||
44 [label="Exit when branch condition"];
|
||||
}
|
||||
40 [label="Enter when"];
|
||||
41 [label="Access variable this@R|/test_2|"];
|
||||
42 [label="Variable declaration: lval x: R|kotlin/Any|"];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
45 [label="Enter when branch condition "];
|
||||
46 [label="Exit $subj"];
|
||||
47 [label="Type operator: ($subj$ is R|kotlin/String|)"];
|
||||
48 [label="Exit when branch condition"];
|
||||
43 [label="Enter when branch condition "];
|
||||
44 [label="Exit $subj"];
|
||||
45 [label="Type operator: ($subj$ is R|kotlin/collections/List<*>|)"];
|
||||
46 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
49 [label="Enter when branch condition else"];
|
||||
47 [label="Enter when branch condition "];
|
||||
48 [label="Exit $subj"];
|
||||
49 [label="Type operator: ($subj$ is R|kotlin/String|)"];
|
||||
50 [label="Exit when branch condition"];
|
||||
}
|
||||
51 [label="Enter when branch result"];
|
||||
subgraph cluster_15 {
|
||||
color=blue
|
||||
52 [label="Enter block"];
|
||||
53 [label="Const: Int(0)"];
|
||||
54 [label="Exit block"];
|
||||
51 [label="Enter when branch condition else"];
|
||||
52 [label="Exit when branch condition"];
|
||||
}
|
||||
55 [label="Exit when branch result"];
|
||||
56 [label="Enter when branch result"];
|
||||
53 [label="Enter when branch result"];
|
||||
subgraph cluster_16 {
|
||||
color=blue
|
||||
57 [label="Enter block"];
|
||||
58 [label="Access variable R|<local>/x|"];
|
||||
59 [label="Smart cast: R|<local>/x|"];
|
||||
60 [label="Access variable R|kotlin/String.length|"];
|
||||
61 [label="Access variable R|kotlin/String.length|"];
|
||||
62 [label="Exit block"];
|
||||
54 [label="Enter block"];
|
||||
55 [label="Const: Int(0)"];
|
||||
56 [label="Exit block"];
|
||||
}
|
||||
63 [label="Exit when branch result"];
|
||||
64 [label="Enter when branch result"];
|
||||
57 [label="Exit when branch result"];
|
||||
58 [label="Enter when branch result"];
|
||||
subgraph cluster_17 {
|
||||
color=blue
|
||||
65 [label="Enter block"];
|
||||
66 [label="Access variable R|<local>/x|"];
|
||||
67 [label="Smart cast: R|<local>/x|"];
|
||||
68 [label="Access variable R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|"];
|
||||
69 [label="Access variable this@R|/test_2|"];
|
||||
70 [label="Smart cast: this@R|/test_2|"];
|
||||
71 [label="Access variable R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|"];
|
||||
72 [label="Exit block"];
|
||||
59 [label="Enter block"];
|
||||
60 [label="Access variable R|<local>/x|"];
|
||||
61 [label="Smart cast: R|<local>/x|"];
|
||||
62 [label="Access variable R|kotlin/String.length|"];
|
||||
63 [label="Access variable R|kotlin/String.length|"];
|
||||
64 [label="Exit block"];
|
||||
}
|
||||
73 [label="Exit when branch result"];
|
||||
74 [label="Exit when"];
|
||||
65 [label="Exit when branch result"];
|
||||
66 [label="Enter when branch result"];
|
||||
subgraph cluster_18 {
|
||||
color=blue
|
||||
67 [label="Enter block"];
|
||||
68 [label="Access variable R|<local>/x|"];
|
||||
69 [label="Smart cast: R|<local>/x|"];
|
||||
70 [label="Access variable R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|"];
|
||||
71 [label="Access variable this@R|/test_2|"];
|
||||
72 [label="Smart cast: this@R|/test_2|"];
|
||||
73 [label="Access variable R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|"];
|
||||
74 [label="Exit block"];
|
||||
}
|
||||
75 [label="Exit when branch result"];
|
||||
76 [label="Exit when"];
|
||||
}
|
||||
75 [label="Jump: ^test_2 when (lval x: R|kotlin/Any| = this@R|/test_2|) {
|
||||
77 [label="Jump: ^test_2 when (lval x: R|kotlin/Any| = this@R|/test_2|) {
|
||||
($subj$ is R|kotlin/collections/List<*>|) -> {
|
||||
R|<local>/x|.R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|
|
||||
this@R|/test_2|.R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|
|
||||
@@ -192,41 +199,39 @@ digraph implicitReceiverAsWhenSubject_kt {
|
||||
}
|
||||
}
|
||||
"];
|
||||
76 [label="Stub" style="filled" fillcolor=gray];
|
||||
77 [label="Exit block" style="filled" fillcolor=gray];
|
||||
78 [label="Stub" style="filled" fillcolor=gray];
|
||||
79 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
78 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
80 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
}
|
||||
36 -> {37};
|
||||
37 -> {38};
|
||||
38 -> {39};
|
||||
39 -> {40};
|
||||
40 -> {41};
|
||||
41 -> {42};
|
||||
42 -> {43};
|
||||
43 -> {44};
|
||||
44 -> {45 64};
|
||||
44 -> {45};
|
||||
45 -> {46};
|
||||
46 -> {47};
|
||||
46 -> {47 66};
|
||||
47 -> {48};
|
||||
48 -> {49 56};
|
||||
48 -> {49};
|
||||
49 -> {50};
|
||||
50 -> {51};
|
||||
50 -> {51 58};
|
||||
51 -> {52};
|
||||
52 -> {53};
|
||||
53 -> {54};
|
||||
54 -> {55};
|
||||
55 -> {74};
|
||||
55 -> {56};
|
||||
56 -> {57};
|
||||
57 -> {58};
|
||||
57 -> {76};
|
||||
58 -> {59};
|
||||
59 -> {60};
|
||||
60 -> {61};
|
||||
61 -> {62};
|
||||
62 -> {63};
|
||||
63 -> {74};
|
||||
63 -> {64};
|
||||
64 -> {65};
|
||||
65 -> {66};
|
||||
65 -> {76};
|
||||
66 -> {67};
|
||||
67 -> {68};
|
||||
68 -> {69};
|
||||
@@ -236,9 +241,11 @@ digraph implicitReceiverAsWhenSubject_kt {
|
||||
72 -> {73};
|
||||
73 -> {74};
|
||||
74 -> {75};
|
||||
75 -> {78};
|
||||
75 -> {76} [style=dotted];
|
||||
76 -> {77} [style=dotted];
|
||||
75 -> {76};
|
||||
76 -> {77};
|
||||
77 -> {80};
|
||||
77 -> {78} [style=dotted];
|
||||
78 -> {79} [style=dotted];
|
||||
79 -> {80} [style=dotted];
|
||||
|
||||
}
|
||||
|
||||
+361
-354
@@ -5,151 +5,156 @@ digraph implicitReceivers_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter class A" style="filled" fillcolor=red];
|
||||
subgraph cluster_1 {
|
||||
color=blue
|
||||
1 [label="Enter function <init>" style="filled" fillcolor=red];
|
||||
2 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
|
||||
3 [label="Exit function <init>" style="filled" fillcolor=red];
|
||||
}
|
||||
4 [label="Exit class A" style="filled" fillcolor=red];
|
||||
0 [label="Enter file implicitReceivers.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file implicitReceivers.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1} [color=green];
|
||||
0 -> {4} [style=dotted];
|
||||
0 -> {1} [style=dashed];
|
||||
1 -> {2};
|
||||
2 -> {3};
|
||||
3 -> {4} [color=green];
|
||||
|
||||
subgraph cluster_2 {
|
||||
subgraph cluster_1 {
|
||||
color=red
|
||||
5 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
subgraph cluster_3 {
|
||||
2 [label="Enter class A" style="filled" fillcolor=red];
|
||||
subgraph cluster_2 {
|
||||
color=blue
|
||||
6 [label="Enter block"];
|
||||
7 [label="Exit block"];
|
||||
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];
|
||||
}
|
||||
8 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
6 [label="Exit class A" style="filled" fillcolor=red];
|
||||
}
|
||||
2 -> {3} [color=green];
|
||||
2 -> {6} [style=dotted];
|
||||
2 -> {3} [style=dashed];
|
||||
3 -> {4};
|
||||
4 -> {5};
|
||||
5 -> {6} [color=green];
|
||||
|
||||
subgraph cluster_3 {
|
||||
color=red
|
||||
7 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
8 [label="Enter block"];
|
||||
9 [label="Exit block"];
|
||||
}
|
||||
10 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
}
|
||||
5 -> {6};
|
||||
6 -> {7};
|
||||
7 -> {8};
|
||||
8 -> {9};
|
||||
9 -> {10};
|
||||
|
||||
subgraph cluster_4 {
|
||||
subgraph cluster_5 {
|
||||
color=red
|
||||
9 [label="Enter class B" style="filled" fillcolor=red];
|
||||
subgraph cluster_5 {
|
||||
11 [label="Enter class B" style="filled" fillcolor=red];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
10 [label="Enter function <init>" style="filled" fillcolor=red];
|
||||
11 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
|
||||
12 [label="Exit function <init>" style="filled" fillcolor=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];
|
||||
}
|
||||
13 [label="Exit class B" style="filled" fillcolor=red];
|
||||
15 [label="Exit class B" style="filled" fillcolor=red];
|
||||
}
|
||||
9 -> {10} [color=green];
|
||||
9 -> {13} [style=dotted];
|
||||
9 -> {10} [style=dashed];
|
||||
10 -> {11};
|
||||
11 -> {12};
|
||||
12 -> {13} [color=green];
|
||||
11 -> {12} [color=green];
|
||||
11 -> {15} [style=dotted];
|
||||
11 -> {12} [style=dashed];
|
||||
12 -> {13};
|
||||
13 -> {14};
|
||||
14 -> {15} [color=green];
|
||||
|
||||
subgraph cluster_6 {
|
||||
subgraph cluster_7 {
|
||||
color=red
|
||||
14 [label="Enter function bar" style="filled" fillcolor=red];
|
||||
subgraph cluster_7 {
|
||||
16 [label="Enter function bar" style="filled" fillcolor=red];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
15 [label="Enter block"];
|
||||
16 [label="Exit block"];
|
||||
17 [label="Enter block"];
|
||||
18 [label="Exit block"];
|
||||
}
|
||||
17 [label="Exit function bar" style="filled" fillcolor=red];
|
||||
19 [label="Exit function bar" style="filled" fillcolor=red];
|
||||
}
|
||||
14 -> {15};
|
||||
15 -> {16};
|
||||
16 -> {17};
|
||||
|
||||
subgraph cluster_8 {
|
||||
color=red
|
||||
18 [label="Enter function with" style="filled" fillcolor=red];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
19 [label="Enter block"];
|
||||
20 [label="Exit block"];
|
||||
}
|
||||
21 [label="Exit function with" style="filled" fillcolor=red];
|
||||
}
|
||||
17 -> {18};
|
||||
18 -> {19};
|
||||
19 -> {20};
|
||||
20 -> {21};
|
||||
|
||||
subgraph cluster_10 {
|
||||
subgraph cluster_9 {
|
||||
color=red
|
||||
22 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_11 {
|
||||
20 [label="Enter function with" style="filled" fillcolor=red];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
23 [label="Enter block"];
|
||||
subgraph cluster_12 {
|
||||
21 [label="Enter block"];
|
||||
22 [label="Exit block"];
|
||||
}
|
||||
23 [label="Exit function with" style="filled" fillcolor=red];
|
||||
}
|
||||
20 -> {21};
|
||||
21 -> {22};
|
||||
22 -> {23};
|
||||
|
||||
subgraph cluster_11 {
|
||||
color=red
|
||||
24 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
25 [label="Enter block"];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
24 [label="Enter when"];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
25 [label="Enter when branch condition "];
|
||||
26 [label="Access variable this@R|/test_1|"];
|
||||
27 [label="Type operator: (this@R|/test_1| is R|A|)"];
|
||||
28 [label="Exit when branch condition"];
|
||||
}
|
||||
26 [label="Enter when"];
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
29 [label="Enter when branch condition else"];
|
||||
27 [label="Enter when branch condition "];
|
||||
28 [label="Access variable this@R|/test_1|"];
|
||||
29 [label="Type operator: (this@R|/test_1| is R|A|)"];
|
||||
30 [label="Exit when branch condition"];
|
||||
}
|
||||
31 [label="Enter when branch result"];
|
||||
subgraph cluster_15 {
|
||||
color=blue
|
||||
32 [label="Enter block"];
|
||||
33 [label="Access variable this@R|/test_1|"];
|
||||
34 [label="Function call: this@R|/test_1|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
35 [label="Function call: <Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
36 [label="Exit block"];
|
||||
31 [label="Enter when branch condition else"];
|
||||
32 [label="Exit when branch condition"];
|
||||
}
|
||||
37 [label="Exit when branch result"];
|
||||
38 [label="Enter when branch result"];
|
||||
33 [label="Enter when branch result"];
|
||||
subgraph cluster_16 {
|
||||
color=blue
|
||||
39 [label="Enter block"];
|
||||
40 [label="Access variable this@R|/test_1|"];
|
||||
41 [label="Smart cast: this@R|/test_1|"];
|
||||
42 [label="Function call: this@R|/test_1|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
43 [label="Function call: this@R|/test_1|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
44 [label="Exit block"];
|
||||
34 [label="Enter block"];
|
||||
35 [label="Access variable this@R|/test_1|"];
|
||||
36 [label="Function call: this@R|/test_1|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
37 [label="Function call: <Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
38 [label="Exit block"];
|
||||
}
|
||||
45 [label="Exit when branch result"];
|
||||
46 [label="Exit when"];
|
||||
39 [label="Exit when branch result"];
|
||||
40 [label="Enter when branch result"];
|
||||
subgraph cluster_17 {
|
||||
color=blue
|
||||
41 [label="Enter block"];
|
||||
42 [label="Access variable this@R|/test_1|"];
|
||||
43 [label="Smart cast: this@R|/test_1|"];
|
||||
44 [label="Function call: this@R|/test_1|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
45 [label="Function call: this@R|/test_1|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
46 [label="Exit block"];
|
||||
}
|
||||
47 [label="Exit when branch result"];
|
||||
48 [label="Exit when"];
|
||||
}
|
||||
47 [label="Access variable this@R|/test_1|"];
|
||||
48 [label="Function call: this@R|/test_1|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
49 [label="Function call: <Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
50 [label="Exit block"];
|
||||
49 [label="Access variable this@R|/test_1|"];
|
||||
50 [label="Function call: this@R|/test_1|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
51 [label="Function call: <Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
52 [label="Exit block"];
|
||||
}
|
||||
51 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
53 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
}
|
||||
22 -> {23};
|
||||
23 -> {24};
|
||||
24 -> {25};
|
||||
25 -> {26};
|
||||
26 -> {27};
|
||||
27 -> {28};
|
||||
28 -> {29 38};
|
||||
28 -> {29};
|
||||
29 -> {30};
|
||||
30 -> {31};
|
||||
30 -> {31 40};
|
||||
31 -> {32};
|
||||
32 -> {33};
|
||||
33 -> {34};
|
||||
34 -> {35};
|
||||
35 -> {36};
|
||||
36 -> {37};
|
||||
37 -> {46};
|
||||
37 -> {38};
|
||||
38 -> {39};
|
||||
39 -> {40};
|
||||
39 -> {48};
|
||||
40 -> {41};
|
||||
41 -> {42};
|
||||
42 -> {43};
|
||||
@@ -161,67 +166,67 @@ digraph implicitReceivers_kt {
|
||||
48 -> {49};
|
||||
49 -> {50};
|
||||
50 -> {51};
|
||||
51 -> {52};
|
||||
52 -> {53};
|
||||
|
||||
subgraph cluster_17 {
|
||||
subgraph cluster_18 {
|
||||
color=red
|
||||
52 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_18 {
|
||||
54 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_19 {
|
||||
color=blue
|
||||
53 [label="Enter block"];
|
||||
subgraph cluster_19 {
|
||||
55 [label="Enter block"];
|
||||
subgraph cluster_20 {
|
||||
color=blue
|
||||
54 [label="Enter when"];
|
||||
subgraph cluster_20 {
|
||||
color=blue
|
||||
55 [label="Enter when branch condition "];
|
||||
56 [label="Access variable this@R|/test_2|"];
|
||||
57 [label="Type operator: (this@R|/test_2| !is R|A|)"];
|
||||
58 [label="Exit when branch condition"];
|
||||
}
|
||||
56 [label="Enter when"];
|
||||
subgraph cluster_21 {
|
||||
color=blue
|
||||
59 [label="Enter when branch condition else"];
|
||||
57 [label="Enter when branch condition "];
|
||||
58 [label="Access variable this@R|/test_2|"];
|
||||
59 [label="Type operator: (this@R|/test_2| !is R|A|)"];
|
||||
60 [label="Exit when branch condition"];
|
||||
}
|
||||
61 [label="Enter when branch result"];
|
||||
subgraph cluster_22 {
|
||||
color=blue
|
||||
62 [label="Enter block"];
|
||||
63 [label="Access variable this@R|/test_2|"];
|
||||
64 [label="Smart cast: this@R|/test_2|"];
|
||||
65 [label="Function call: this@R|/test_2|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
66 [label="Function call: this@R|/test_2|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
67 [label="Exit block"];
|
||||
61 [label="Enter when branch condition else"];
|
||||
62 [label="Exit when branch condition"];
|
||||
}
|
||||
68 [label="Exit when branch result"];
|
||||
69 [label="Enter when branch result"];
|
||||
63 [label="Enter when branch result"];
|
||||
subgraph cluster_23 {
|
||||
color=blue
|
||||
70 [label="Enter block"];
|
||||
71 [label="Access variable this@R|/test_2|"];
|
||||
72 [label="Function call: this@R|/test_2|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
73 [label="Function call: <Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
74 [label="Exit block"];
|
||||
64 [label="Enter block"];
|
||||
65 [label="Access variable this@R|/test_2|"];
|
||||
66 [label="Smart cast: this@R|/test_2|"];
|
||||
67 [label="Function call: this@R|/test_2|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
68 [label="Function call: this@R|/test_2|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
69 [label="Exit block"];
|
||||
}
|
||||
75 [label="Exit when branch result"];
|
||||
76 [label="Exit when"];
|
||||
70 [label="Exit when branch result"];
|
||||
71 [label="Enter when branch result"];
|
||||
subgraph cluster_24 {
|
||||
color=blue
|
||||
72 [label="Enter block"];
|
||||
73 [label="Access variable this@R|/test_2|"];
|
||||
74 [label="Function call: this@R|/test_2|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
75 [label="Function call: <Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
76 [label="Exit block"];
|
||||
}
|
||||
77 [label="Exit when branch result"];
|
||||
78 [label="Exit when"];
|
||||
}
|
||||
77 [label="Access variable this@R|/test_2|"];
|
||||
78 [label="Function call: this@R|/test_2|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
79 [label="Function call: <Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
80 [label="Exit block"];
|
||||
79 [label="Access variable this@R|/test_2|"];
|
||||
80 [label="Function call: this@R|/test_2|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
81 [label="Function call: <Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
82 [label="Exit block"];
|
||||
}
|
||||
81 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
83 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
}
|
||||
52 -> {53};
|
||||
53 -> {54};
|
||||
54 -> {55};
|
||||
55 -> {56};
|
||||
56 -> {57};
|
||||
57 -> {58};
|
||||
58 -> {59 69};
|
||||
58 -> {59};
|
||||
59 -> {60};
|
||||
60 -> {61};
|
||||
60 -> {61 71};
|
||||
61 -> {62};
|
||||
62 -> {63};
|
||||
63 -> {64};
|
||||
@@ -229,9 +234,9 @@ digraph implicitReceivers_kt {
|
||||
65 -> {66};
|
||||
66 -> {67};
|
||||
67 -> {68};
|
||||
68 -> {76};
|
||||
68 -> {69};
|
||||
69 -> {70};
|
||||
70 -> {71};
|
||||
70 -> {78};
|
||||
71 -> {72};
|
||||
72 -> {73};
|
||||
73 -> {74};
|
||||
@@ -242,89 +247,89 @@ digraph implicitReceivers_kt {
|
||||
78 -> {79};
|
||||
79 -> {80};
|
||||
80 -> {81};
|
||||
|
||||
subgraph cluster_24 {
|
||||
color=red
|
||||
82 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_25 {
|
||||
color=blue
|
||||
83 [label="Enter block"];
|
||||
84 [label="Access variable R|<local>/a|"];
|
||||
85 [label="Postponed enter to lambda"];
|
||||
subgraph cluster_26 {
|
||||
color=blue
|
||||
86 [label="Enter function <anonymous>" style="filled" fillcolor=red];
|
||||
subgraph cluster_27 {
|
||||
color=blue
|
||||
87 [label="Enter block"];
|
||||
88 [label="Access variable R|<local>/b|"];
|
||||
89 [label="Postponed enter to lambda"];
|
||||
subgraph cluster_28 {
|
||||
color=blue
|
||||
90 [label="Enter function <anonymous>" style="filled" fillcolor=red];
|
||||
subgraph cluster_29 {
|
||||
color=blue
|
||||
91 [label="Enter block"];
|
||||
92 [label="Access variable R|<local>/c|"];
|
||||
93 [label="Postponed enter to lambda"];
|
||||
subgraph cluster_30 {
|
||||
color=blue
|
||||
94 [label="Enter function <anonymous>" style="filled" fillcolor=red];
|
||||
subgraph cluster_31 {
|
||||
color=blue
|
||||
95 [label="Enter block"];
|
||||
96 [label="Access variable this@R|special/anonymous|"];
|
||||
97 [label="Type operator: (this@R|special/anonymous| as R|A|)"];
|
||||
98 [label="Access variable this@R|special/anonymous|"];
|
||||
99 [label="Smart cast: this@R|special/anonymous|"];
|
||||
100 [label="Function call: this@R|special/anonymous|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
101 [label="Function call: this@R|special/anonymous|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
102 [label="Exit block"];
|
||||
}
|
||||
103 [label="Exit function <anonymous>" style="filled" fillcolor=red];
|
||||
}
|
||||
104 [label="Postponed exit from lambda"];
|
||||
105 [label="Function call: R|kotlin/with|<R|kotlin/Any|, R|kotlin/Unit|>(...)" style="filled" fillcolor=yellow];
|
||||
106 [label="Access variable this@R|special/anonymous|"];
|
||||
107 [label="Smart cast: this@R|special/anonymous|"];
|
||||
108 [label="Function call: this@R|special/anonymous|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
109 [label="Function call: this@R|special/anonymous|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
110 [label="Exit block"];
|
||||
}
|
||||
111 [label="Exit function <anonymous>" style="filled" fillcolor=red];
|
||||
}
|
||||
112 [label="Postponed exit from lambda"];
|
||||
113 [label="Function call: R|kotlin/with|<R|kotlin/Any|, R|kotlin/Unit|>(...)" style="filled" fillcolor=yellow];
|
||||
114 [label="Exit block"];
|
||||
}
|
||||
115 [label="Exit function <anonymous>" style="filled" fillcolor=red];
|
||||
}
|
||||
116 [label="Postponed exit from lambda"];
|
||||
117 [label="Function call: R|kotlin/with|<R|kotlin/Any|, R|kotlin/Unit|>(...)" style="filled" fillcolor=yellow];
|
||||
118 [label="Exit block"];
|
||||
}
|
||||
119 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
}
|
||||
81 -> {82};
|
||||
82 -> {83};
|
||||
83 -> {84};
|
||||
|
||||
subgraph cluster_25 {
|
||||
color=red
|
||||
84 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_26 {
|
||||
color=blue
|
||||
85 [label="Enter block"];
|
||||
86 [label="Access variable R|<local>/a|"];
|
||||
87 [label="Postponed enter to lambda"];
|
||||
subgraph cluster_27 {
|
||||
color=blue
|
||||
88 [label="Enter function <anonymous>" style="filled" fillcolor=red];
|
||||
subgraph cluster_28 {
|
||||
color=blue
|
||||
89 [label="Enter block"];
|
||||
90 [label="Access variable R|<local>/b|"];
|
||||
91 [label="Postponed enter to lambda"];
|
||||
subgraph cluster_29 {
|
||||
color=blue
|
||||
92 [label="Enter function <anonymous>" style="filled" fillcolor=red];
|
||||
subgraph cluster_30 {
|
||||
color=blue
|
||||
93 [label="Enter block"];
|
||||
94 [label="Access variable R|<local>/c|"];
|
||||
95 [label="Postponed enter to lambda"];
|
||||
subgraph cluster_31 {
|
||||
color=blue
|
||||
96 [label="Enter function <anonymous>" style="filled" fillcolor=red];
|
||||
subgraph cluster_32 {
|
||||
color=blue
|
||||
97 [label="Enter block"];
|
||||
98 [label="Access variable this@R|special/anonymous|"];
|
||||
99 [label="Type operator: (this@R|special/anonymous| as R|A|)"];
|
||||
100 [label="Access variable this@R|special/anonymous|"];
|
||||
101 [label="Smart cast: this@R|special/anonymous|"];
|
||||
102 [label="Function call: this@R|special/anonymous|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
103 [label="Function call: this@R|special/anonymous|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
104 [label="Exit block"];
|
||||
}
|
||||
105 [label="Exit function <anonymous>" style="filled" fillcolor=red];
|
||||
}
|
||||
106 [label="Postponed exit from lambda"];
|
||||
107 [label="Function call: R|kotlin/with|<R|kotlin/Any|, R|kotlin/Unit|>(...)" style="filled" fillcolor=yellow];
|
||||
108 [label="Access variable this@R|special/anonymous|"];
|
||||
109 [label="Smart cast: this@R|special/anonymous|"];
|
||||
110 [label="Function call: this@R|special/anonymous|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
111 [label="Function call: this@R|special/anonymous|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
112 [label="Exit block"];
|
||||
}
|
||||
113 [label="Exit function <anonymous>" style="filled" fillcolor=red];
|
||||
}
|
||||
114 [label="Postponed exit from lambda"];
|
||||
115 [label="Function call: R|kotlin/with|<R|kotlin/Any|, R|kotlin/Unit|>(...)" style="filled" fillcolor=yellow];
|
||||
116 [label="Exit block"];
|
||||
}
|
||||
117 [label="Exit function <anonymous>" style="filled" fillcolor=red];
|
||||
}
|
||||
118 [label="Postponed exit from lambda"];
|
||||
119 [label="Function call: R|kotlin/with|<R|kotlin/Any|, R|kotlin/Unit|>(...)" style="filled" fillcolor=yellow];
|
||||
120 [label="Exit block"];
|
||||
}
|
||||
121 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
}
|
||||
84 -> {85};
|
||||
85 -> {86 117};
|
||||
85 -> {116} [style=dotted];
|
||||
85 -> {86} [style=dashed];
|
||||
85 -> {86};
|
||||
86 -> {87};
|
||||
87 -> {88};
|
||||
87 -> {88 119};
|
||||
87 -> {118} [style=dotted];
|
||||
87 -> {88} [style=dashed];
|
||||
88 -> {89};
|
||||
89 -> {90 113};
|
||||
89 -> {112} [style=dotted];
|
||||
89 -> {90} [style=dashed];
|
||||
89 -> {90};
|
||||
90 -> {91};
|
||||
91 -> {92};
|
||||
91 -> {92 115};
|
||||
91 -> {114} [style=dotted];
|
||||
91 -> {92} [style=dashed];
|
||||
92 -> {93};
|
||||
93 -> {94 105};
|
||||
93 -> {104} [style=dotted];
|
||||
93 -> {94} [style=dashed];
|
||||
93 -> {94};
|
||||
94 -> {95};
|
||||
95 -> {96};
|
||||
95 -> {96 107};
|
||||
95 -> {106} [style=dotted];
|
||||
95 -> {96} [style=dashed];
|
||||
96 -> {97};
|
||||
97 -> {98};
|
||||
98 -> {99};
|
||||
@@ -341,113 +346,113 @@ digraph implicitReceivers_kt {
|
||||
109 -> {110};
|
||||
110 -> {111};
|
||||
111 -> {112};
|
||||
112 -> {113} [color=green];
|
||||
112 -> {117} [color=red];
|
||||
112 -> {113};
|
||||
113 -> {114};
|
||||
114 -> {115};
|
||||
114 -> {115} [color=green];
|
||||
114 -> {119} [color=red];
|
||||
115 -> {116};
|
||||
116 -> {117};
|
||||
117 -> {118};
|
||||
118 -> {119};
|
||||
119 -> {120};
|
||||
120 -> {121};
|
||||
|
||||
subgraph cluster_32 {
|
||||
subgraph cluster_33 {
|
||||
color=red
|
||||
120 [label="Enter function test_4" style="filled" fillcolor=red];
|
||||
subgraph cluster_33 {
|
||||
122 [label="Enter function test_4" style="filled" fillcolor=red];
|
||||
subgraph cluster_34 {
|
||||
color=blue
|
||||
121 [label="Enter block"];
|
||||
subgraph cluster_34 {
|
||||
123 [label="Enter block"];
|
||||
subgraph cluster_35 {
|
||||
color=blue
|
||||
122 [label="Enter when"];
|
||||
subgraph cluster_35 {
|
||||
color=blue
|
||||
123 [label="Enter when branch condition "];
|
||||
124 [label="Access variable this@R|/test_4|"];
|
||||
125 [label="Type operator: (this@R|/test_4| !is R|A|)"];
|
||||
126 [label="Exit when branch condition"];
|
||||
}
|
||||
124 [label="Enter when"];
|
||||
subgraph cluster_36 {
|
||||
color=blue
|
||||
127 [label="Enter when branch condition "];
|
||||
128 [label="Access variable this@R|/test_4|"];
|
||||
129 [label="Smart cast: this@R|/test_4|"];
|
||||
130 [label="Type operator: (this@R|/test_4| !is R|B|)"];
|
||||
131 [label="Exit when branch condition"];
|
||||
125 [label="Enter when branch condition "];
|
||||
126 [label="Access variable this@R|/test_4|"];
|
||||
127 [label="Type operator: (this@R|/test_4| !is R|A|)"];
|
||||
128 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_37 {
|
||||
color=blue
|
||||
132 [label="Enter when branch condition else"];
|
||||
129 [label="Enter when branch condition "];
|
||||
130 [label="Access variable this@R|/test_4|"];
|
||||
131 [label="Smart cast: this@R|/test_4|"];
|
||||
132 [label="Type operator: (this@R|/test_4| !is R|B|)"];
|
||||
133 [label="Exit when branch condition"];
|
||||
}
|
||||
134 [label="Enter when branch result"];
|
||||
subgraph cluster_38 {
|
||||
color=blue
|
||||
135 [label="Enter block"];
|
||||
136 [label="Access variable this@R|/test_4|"];
|
||||
137 [label="Smart cast: this@R|/test_4|"];
|
||||
138 [label="Function call: this@R|/test_4|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
139 [label="Function call: this@R|/test_4|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
140 [label="Access variable this@R|/test_4|"];
|
||||
141 [label="Smart cast: this@R|/test_4|"];
|
||||
142 [label="Function call: this@R|/test_4|.R|/B.bar|()" style="filled" fillcolor=yellow];
|
||||
143 [label="Function call: this@R|/test_4|.R|/B.bar|()" style="filled" fillcolor=yellow];
|
||||
144 [label="Exit block"];
|
||||
134 [label="Enter when branch condition else"];
|
||||
135 [label="Exit when branch condition"];
|
||||
}
|
||||
145 [label="Exit when branch result"];
|
||||
146 [label="Enter when branch result"];
|
||||
136 [label="Enter when branch result"];
|
||||
subgraph cluster_39 {
|
||||
color=blue
|
||||
147 [label="Enter block"];
|
||||
148 [label="Access variable this@R|/test_4|"];
|
||||
149 [label="Smart cast: this@R|/test_4|"];
|
||||
150 [label="Function call: this@R|/test_4|.<Unresolved name: bar>#()" style="filled" fillcolor=yellow];
|
||||
151 [label="Function call: <Unresolved name: bar>#()" style="filled" fillcolor=yellow];
|
||||
152 [label="Access variable this@R|/test_4|"];
|
||||
153 [label="Smart cast: this@R|/test_4|"];
|
||||
154 [label="Function call: this@R|/test_4|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
155 [label="Function call: this@R|/test_4|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
156 [label="Exit block"];
|
||||
137 [label="Enter block"];
|
||||
138 [label="Access variable this@R|/test_4|"];
|
||||
139 [label="Smart cast: this@R|/test_4|"];
|
||||
140 [label="Function call: this@R|/test_4|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
141 [label="Function call: this@R|/test_4|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
142 [label="Access variable this@R|/test_4|"];
|
||||
143 [label="Smart cast: this@R|/test_4|"];
|
||||
144 [label="Function call: this@R|/test_4|.R|/B.bar|()" style="filled" fillcolor=yellow];
|
||||
145 [label="Function call: this@R|/test_4|.R|/B.bar|()" style="filled" fillcolor=yellow];
|
||||
146 [label="Exit block"];
|
||||
}
|
||||
157 [label="Exit when branch result"];
|
||||
158 [label="Enter when branch result"];
|
||||
147 [label="Exit when branch result"];
|
||||
148 [label="Enter when branch result"];
|
||||
subgraph cluster_40 {
|
||||
color=blue
|
||||
159 [label="Enter block"];
|
||||
160 [label="Access variable this@R|/test_4|"];
|
||||
161 [label="Function call: this@R|/test_4|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
162 [label="Function call: <Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
163 [label="Access variable this@R|/test_4|"];
|
||||
164 [label="Function call: this@R|/test_4|.<Unresolved name: bar>#()" style="filled" fillcolor=yellow];
|
||||
165 [label="Function call: <Unresolved name: bar>#()" style="filled" fillcolor=yellow];
|
||||
166 [label="Exit block"];
|
||||
149 [label="Enter block"];
|
||||
150 [label="Access variable this@R|/test_4|"];
|
||||
151 [label="Smart cast: this@R|/test_4|"];
|
||||
152 [label="Function call: this@R|/test_4|.<Unresolved name: bar>#()" style="filled" fillcolor=yellow];
|
||||
153 [label="Function call: <Unresolved name: bar>#()" style="filled" fillcolor=yellow];
|
||||
154 [label="Access variable this@R|/test_4|"];
|
||||
155 [label="Smart cast: this@R|/test_4|"];
|
||||
156 [label="Function call: this@R|/test_4|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
157 [label="Function call: this@R|/test_4|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
158 [label="Exit block"];
|
||||
}
|
||||
167 [label="Exit when branch result"];
|
||||
168 [label="Exit when"];
|
||||
159 [label="Exit when branch result"];
|
||||
160 [label="Enter when branch result"];
|
||||
subgraph cluster_41 {
|
||||
color=blue
|
||||
161 [label="Enter block"];
|
||||
162 [label="Access variable this@R|/test_4|"];
|
||||
163 [label="Function call: this@R|/test_4|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
164 [label="Function call: <Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
165 [label="Access variable this@R|/test_4|"];
|
||||
166 [label="Function call: this@R|/test_4|.<Unresolved name: bar>#()" style="filled" fillcolor=yellow];
|
||||
167 [label="Function call: <Unresolved name: bar>#()" style="filled" fillcolor=yellow];
|
||||
168 [label="Exit block"];
|
||||
}
|
||||
169 [label="Exit when branch result"];
|
||||
170 [label="Exit when"];
|
||||
}
|
||||
169 [label="Access variable this@R|/test_4|"];
|
||||
170 [label="Function call: this@R|/test_4|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
171 [label="Function call: <Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
172 [label="Access variable this@R|/test_4|"];
|
||||
173 [label="Function call: this@R|/test_4|.<Unresolved name: bar>#()" style="filled" fillcolor=yellow];
|
||||
174 [label="Function call: <Unresolved name: bar>#()" style="filled" fillcolor=yellow];
|
||||
175 [label="Exit block"];
|
||||
171 [label="Access variable this@R|/test_4|"];
|
||||
172 [label="Function call: this@R|/test_4|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
173 [label="Function call: <Unresolved name: foo>#()" style="filled" fillcolor=yellow];
|
||||
174 [label="Access variable this@R|/test_4|"];
|
||||
175 [label="Function call: this@R|/test_4|.<Unresolved name: bar>#()" style="filled" fillcolor=yellow];
|
||||
176 [label="Function call: <Unresolved name: bar>#()" style="filled" fillcolor=yellow];
|
||||
177 [label="Exit block"];
|
||||
}
|
||||
176 [label="Exit function test_4" style="filled" fillcolor=red];
|
||||
178 [label="Exit function test_4" style="filled" fillcolor=red];
|
||||
}
|
||||
120 -> {121};
|
||||
121 -> {122};
|
||||
122 -> {123};
|
||||
123 -> {124};
|
||||
124 -> {125};
|
||||
125 -> {126};
|
||||
126 -> {127 158};
|
||||
126 -> {127};
|
||||
127 -> {128};
|
||||
128 -> {129};
|
||||
128 -> {129 160};
|
||||
129 -> {130};
|
||||
130 -> {131};
|
||||
131 -> {132 146};
|
||||
131 -> {132};
|
||||
132 -> {133};
|
||||
133 -> {134};
|
||||
133 -> {134 148};
|
||||
134 -> {135};
|
||||
135 -> {136};
|
||||
136 -> {137};
|
||||
@@ -459,9 +464,9 @@ digraph implicitReceivers_kt {
|
||||
142 -> {143};
|
||||
143 -> {144};
|
||||
144 -> {145};
|
||||
145 -> {168};
|
||||
145 -> {146};
|
||||
146 -> {147};
|
||||
147 -> {148};
|
||||
147 -> {170};
|
||||
148 -> {149};
|
||||
149 -> {150};
|
||||
150 -> {151};
|
||||
@@ -471,9 +476,9 @@ digraph implicitReceivers_kt {
|
||||
154 -> {155};
|
||||
155 -> {156};
|
||||
156 -> {157};
|
||||
157 -> {168};
|
||||
157 -> {158};
|
||||
158 -> {159};
|
||||
159 -> {160};
|
||||
159 -> {170};
|
||||
160 -> {161};
|
||||
161 -> {162};
|
||||
162 -> {163};
|
||||
@@ -490,62 +495,64 @@ digraph implicitReceivers_kt {
|
||||
173 -> {174};
|
||||
174 -> {175};
|
||||
175 -> {176};
|
||||
176 -> {177};
|
||||
177 -> {178};
|
||||
|
||||
subgraph cluster_41 {
|
||||
subgraph cluster_42 {
|
||||
color=red
|
||||
177 [label="Enter function test_5" style="filled" fillcolor=red];
|
||||
subgraph cluster_42 {
|
||||
179 [label="Enter function test_5" style="filled" fillcolor=red];
|
||||
subgraph cluster_43 {
|
||||
color=blue
|
||||
178 [label="Enter block"];
|
||||
subgraph cluster_43 {
|
||||
180 [label="Enter block"];
|
||||
subgraph cluster_44 {
|
||||
color=blue
|
||||
179 [label="Enter when"];
|
||||
subgraph cluster_44 {
|
||||
color=blue
|
||||
180 [label="Enter when branch condition "];
|
||||
181 [label="Access variable this@R|/test_5|"];
|
||||
182 [label="Type operator: (this@R|/test_5| is R|kotlin/collections/List<*>|)"];
|
||||
183 [label="Exit when branch condition"];
|
||||
}
|
||||
181 [label="Enter when"];
|
||||
subgraph cluster_45 {
|
||||
color=blue
|
||||
184 [label="Enter when branch condition "];
|
||||
185 [label="Access variable this@R|/test_5|"];
|
||||
186 [label="Type operator: (this@R|/test_5| is R|kotlin/String|)"];
|
||||
187 [label="Exit when branch condition"];
|
||||
182 [label="Enter when branch condition "];
|
||||
183 [label="Access variable this@R|/test_5|"];
|
||||
184 [label="Type operator: (this@R|/test_5| is R|kotlin/collections/List<*>|)"];
|
||||
185 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_46 {
|
||||
color=blue
|
||||
188 [label="Enter when branch condition else"];
|
||||
186 [label="Enter when branch condition "];
|
||||
187 [label="Access variable this@R|/test_5|"];
|
||||
188 [label="Type operator: (this@R|/test_5| is R|kotlin/String|)"];
|
||||
189 [label="Exit when branch condition"];
|
||||
}
|
||||
190 [label="Enter when branch result"];
|
||||
subgraph cluster_47 {
|
||||
color=blue
|
||||
191 [label="Enter block"];
|
||||
192 [label="Const: Int(0)"];
|
||||
193 [label="Exit block"];
|
||||
190 [label="Enter when branch condition else"];
|
||||
191 [label="Exit when branch condition"];
|
||||
}
|
||||
194 [label="Exit when branch result"];
|
||||
195 [label="Enter when branch result"];
|
||||
192 [label="Enter when branch result"];
|
||||
subgraph cluster_48 {
|
||||
color=blue
|
||||
196 [label="Enter block"];
|
||||
197 [label="Access variable R|kotlin/String.length|"];
|
||||
198 [label="Exit block"];
|
||||
193 [label="Enter block"];
|
||||
194 [label="Const: Int(0)"];
|
||||
195 [label="Exit block"];
|
||||
}
|
||||
199 [label="Exit when branch result"];
|
||||
200 [label="Enter when branch result"];
|
||||
196 [label="Exit when branch result"];
|
||||
197 [label="Enter when branch result"];
|
||||
subgraph cluster_49 {
|
||||
color=blue
|
||||
201 [label="Enter block"];
|
||||
202 [label="Access variable R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|"];
|
||||
203 [label="Exit block"];
|
||||
198 [label="Enter block"];
|
||||
199 [label="Access variable R|kotlin/String.length|"];
|
||||
200 [label="Exit block"];
|
||||
}
|
||||
204 [label="Exit when branch result"];
|
||||
205 [label="Exit when"];
|
||||
201 [label="Exit when branch result"];
|
||||
202 [label="Enter when branch result"];
|
||||
subgraph cluster_50 {
|
||||
color=blue
|
||||
203 [label="Enter block"];
|
||||
204 [label="Access variable R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|"];
|
||||
205 [label="Exit block"];
|
||||
}
|
||||
206 [label="Exit when branch result"];
|
||||
207 [label="Exit when"];
|
||||
}
|
||||
206 [label="Jump: ^test_5 when () {
|
||||
208 [label="Jump: ^test_5 when () {
|
||||
(this@R|/test_5| is R|kotlin/collections/List<*>|) -> {
|
||||
this@R|/test_5|.R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|
|
||||
}
|
||||
@@ -557,64 +564,62 @@ digraph implicitReceivers_kt {
|
||||
}
|
||||
}
|
||||
"];
|
||||
207 [label="Stub" style="filled" fillcolor=gray];
|
||||
208 [label="Exit block" style="filled" fillcolor=gray];
|
||||
209 [label="Stub" style="filled" fillcolor=gray];
|
||||
210 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
209 [label="Exit function test_5" style="filled" fillcolor=red];
|
||||
211 [label="Exit function test_5" style="filled" fillcolor=red];
|
||||
}
|
||||
177 -> {178};
|
||||
178 -> {179};
|
||||
179 -> {180};
|
||||
180 -> {181};
|
||||
181 -> {182};
|
||||
182 -> {183};
|
||||
183 -> {184 200};
|
||||
183 -> {184};
|
||||
184 -> {185};
|
||||
185 -> {186};
|
||||
185 -> {186 202};
|
||||
186 -> {187};
|
||||
187 -> {188 195};
|
||||
187 -> {188};
|
||||
188 -> {189};
|
||||
189 -> {190};
|
||||
189 -> {190 197};
|
||||
190 -> {191};
|
||||
191 -> {192};
|
||||
192 -> {193};
|
||||
193 -> {194};
|
||||
194 -> {205};
|
||||
194 -> {195};
|
||||
195 -> {196};
|
||||
196 -> {197};
|
||||
196 -> {207};
|
||||
197 -> {198};
|
||||
198 -> {199};
|
||||
199 -> {205};
|
||||
199 -> {200};
|
||||
200 -> {201};
|
||||
201 -> {202};
|
||||
201 -> {207};
|
||||
202 -> {203};
|
||||
203 -> {204};
|
||||
204 -> {205};
|
||||
205 -> {206};
|
||||
206 -> {209};
|
||||
206 -> {207} [style=dotted];
|
||||
207 -> {208} [style=dotted];
|
||||
206 -> {207};
|
||||
207 -> {208};
|
||||
208 -> {211};
|
||||
208 -> {209} [style=dotted];
|
||||
209 -> {210} [style=dotted];
|
||||
210 -> {211} [style=dotted];
|
||||
|
||||
subgraph cluster_50 {
|
||||
subgraph cluster_51 {
|
||||
color=red
|
||||
210 [label="Enter function test_6" style="filled" fillcolor=red];
|
||||
subgraph cluster_51 {
|
||||
212 [label="Enter function test_6" style="filled" fillcolor=red];
|
||||
subgraph cluster_52 {
|
||||
color=blue
|
||||
211 [label="Enter block"];
|
||||
212 [label="Access variable this@R|/test_6|"];
|
||||
213 [label="Type operator: (this@R|/test_6| as R|kotlin/collections/List<*>|)"];
|
||||
214 [label="Access variable R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|"];
|
||||
215 [label="Access variable this@R|/test_6|"];
|
||||
216 [label="Smart cast: this@R|/test_6|"];
|
||||
217 [label="Type operator: (this@R|/test_6| as R|kotlin/String|)"];
|
||||
218 [label="Access variable R|kotlin/String.length|"];
|
||||
219 [label="Exit block"];
|
||||
213 [label="Enter block"];
|
||||
214 [label="Access variable this@R|/test_6|"];
|
||||
215 [label="Type operator: (this@R|/test_6| as R|kotlin/collections/List<*>|)"];
|
||||
216 [label="Access variable R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|"];
|
||||
217 [label="Access variable this@R|/test_6|"];
|
||||
218 [label="Smart cast: this@R|/test_6|"];
|
||||
219 [label="Type operator: (this@R|/test_6| as R|kotlin/String|)"];
|
||||
220 [label="Access variable R|kotlin/String.length|"];
|
||||
221 [label="Exit block"];
|
||||
}
|
||||
220 [label="Exit function test_6" style="filled" fillcolor=red];
|
||||
222 [label="Exit function test_6" style="filled" fillcolor=red];
|
||||
}
|
||||
210 -> {211};
|
||||
211 -> {212};
|
||||
212 -> {213};
|
||||
213 -> {214};
|
||||
214 -> {215};
|
||||
@@ -623,5 +628,7 @@ digraph implicitReceivers_kt {
|
||||
217 -> {218};
|
||||
218 -> {219};
|
||||
219 -> {220};
|
||||
220 -> {221};
|
||||
221 -> {222};
|
||||
|
||||
}
|
||||
|
||||
Vendored
+62
-55
@@ -5,92 +5,99 @@ digraph thisOfExtensionProperty_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter class A" style="filled" fillcolor=red];
|
||||
1 [label="Exit class A" style="filled" fillcolor=red];
|
||||
0 [label="Enter file thisOfExtensionProperty.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file thisOfExtensionProperty.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1} [color=green];
|
||||
|
||||
subgraph cluster_1 {
|
||||
color=red
|
||||
2 [label="Enter class B" style="filled" fillcolor=red];
|
||||
3 [label="Exit class B" style="filled" fillcolor=red];
|
||||
2 [label="Enter class A" style="filled" fillcolor=red];
|
||||
3 [label="Exit class A" style="filled" fillcolor=red];
|
||||
}
|
||||
2 -> {3} [color=green];
|
||||
|
||||
subgraph cluster_2 {
|
||||
color=red
|
||||
4 [label="Enter function <getter>" style="filled" fillcolor=red];
|
||||
subgraph cluster_3 {
|
||||
color=blue
|
||||
5 [label="Enter block"];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
6 [label="Enter &&"];
|
||||
7 [label="Access variable this@R|/check_1|"];
|
||||
8 [label="Type operator: (this@R|/check_1| is R|B|)"];
|
||||
9 [label="Exit left part of &&"];
|
||||
10 [label="Enter right part of &&"];
|
||||
11 [label="Access variable R|/B.b|"];
|
||||
12 [label="Exit &&"];
|
||||
}
|
||||
13 [label="Jump: ^ (this@R|/check_1| is R|B|) && this@R|/check_1|.R|/B.b|"];
|
||||
14 [label="Stub" style="filled" fillcolor=gray];
|
||||
15 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
16 [label="Exit function <getter>" style="filled" fillcolor=red];
|
||||
4 [label="Enter class B" style="filled" fillcolor=red];
|
||||
5 [label="Exit class B" style="filled" fillcolor=red];
|
||||
}
|
||||
4 -> {5} [color=green];
|
||||
|
||||
subgraph cluster_3 {
|
||||
color=red
|
||||
6 [label="Enter function <getter>" style="filled" fillcolor=red];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
7 [label="Enter block"];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
8 [label="Enter &&"];
|
||||
9 [label="Access variable this@R|/check_1|"];
|
||||
10 [label="Type operator: (this@R|/check_1| is R|B|)"];
|
||||
11 [label="Exit left part of &&"];
|
||||
12 [label="Enter right part of &&"];
|
||||
13 [label="Access variable R|/B.b|"];
|
||||
14 [label="Exit &&"];
|
||||
}
|
||||
15 [label="Jump: ^ (this@R|/check_1| is R|B|) && this@R|/check_1|.R|/B.b|"];
|
||||
16 [label="Stub" style="filled" fillcolor=gray];
|
||||
17 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
18 [label="Exit function <getter>" style="filled" fillcolor=red];
|
||||
}
|
||||
4 -> {5};
|
||||
5 -> {6};
|
||||
6 -> {7};
|
||||
7 -> {8};
|
||||
8 -> {9};
|
||||
9 -> {10 12};
|
||||
9 -> {10};
|
||||
10 -> {11};
|
||||
11 -> {12};
|
||||
11 -> {12 14};
|
||||
12 -> {13};
|
||||
13 -> {16};
|
||||
13 -> {14} [style=dotted];
|
||||
14 -> {15} [style=dotted];
|
||||
13 -> {14};
|
||||
14 -> {15};
|
||||
15 -> {18};
|
||||
15 -> {16} [style=dotted];
|
||||
16 -> {17} [style=dotted];
|
||||
17 -> {18} [style=dotted];
|
||||
|
||||
subgraph cluster_5 {
|
||||
subgraph cluster_6 {
|
||||
color=red
|
||||
17 [label="Enter function <getter>" style="filled" fillcolor=red];
|
||||
subgraph cluster_6 {
|
||||
19 [label="Enter function <getter>" style="filled" fillcolor=red];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
18 [label="Enter block"];
|
||||
subgraph cluster_7 {
|
||||
20 [label="Enter block"];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
19 [label="Enter &&"];
|
||||
20 [label="Access variable this@R|/check_2|"];
|
||||
21 [label="Type operator: (this@R|/check_2| is R|B|)"];
|
||||
22 [label="Exit left part of &&"];
|
||||
23 [label="Enter right part of &&"];
|
||||
24 [label="Access variable this@R|/check_2|"];
|
||||
25 [label="Smart cast: this@R|/check_2|"];
|
||||
26 [label="Access variable R|/B.b|"];
|
||||
27 [label="Exit &&"];
|
||||
21 [label="Enter &&"];
|
||||
22 [label="Access variable this@R|/check_2|"];
|
||||
23 [label="Type operator: (this@R|/check_2| is R|B|)"];
|
||||
24 [label="Exit left part of &&"];
|
||||
25 [label="Enter right part of &&"];
|
||||
26 [label="Access variable this@R|/check_2|"];
|
||||
27 [label="Smart cast: this@R|/check_2|"];
|
||||
28 [label="Access variable R|/B.b|"];
|
||||
29 [label="Exit &&"];
|
||||
}
|
||||
28 [label="Jump: ^ (this@R|/check_2| is R|B|) && this@R|/check_2|.R|/B.b|"];
|
||||
29 [label="Stub" style="filled" fillcolor=gray];
|
||||
30 [label="Exit block" style="filled" fillcolor=gray];
|
||||
30 [label="Jump: ^ (this@R|/check_2| is R|B|) && this@R|/check_2|.R|/B.b|"];
|
||||
31 [label="Stub" style="filled" fillcolor=gray];
|
||||
32 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
31 [label="Exit function <getter>" style="filled" fillcolor=red];
|
||||
33 [label="Exit function <getter>" style="filled" fillcolor=red];
|
||||
}
|
||||
17 -> {18};
|
||||
18 -> {19};
|
||||
19 -> {20};
|
||||
20 -> {21};
|
||||
21 -> {22};
|
||||
22 -> {23 27};
|
||||
22 -> {23};
|
||||
23 -> {24};
|
||||
24 -> {25};
|
||||
24 -> {25 29};
|
||||
25 -> {26};
|
||||
26 -> {27};
|
||||
27 -> {28};
|
||||
28 -> {31};
|
||||
28 -> {29} [style=dotted];
|
||||
29 -> {30} [style=dotted];
|
||||
28 -> {29};
|
||||
29 -> {30};
|
||||
30 -> {33};
|
||||
30 -> {31} [style=dotted];
|
||||
31 -> {32} [style=dotted];
|
||||
32 -> {33} [style=dotted];
|
||||
|
||||
}
|
||||
|
||||
+283
-276
@@ -5,110 +5,115 @@ digraph assignSafeCall_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter class A" style="filled" fillcolor=red];
|
||||
subgraph cluster_1 {
|
||||
color=blue
|
||||
1 [label="Enter property" style="filled" fillcolor=red];
|
||||
2 [label="Const: Int(1)"];
|
||||
3 [label="Exit property" style="filled" fillcolor=red];
|
||||
}
|
||||
subgraph cluster_2 {
|
||||
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];
|
||||
}
|
||||
7 [label="Exit class A" style="filled" fillcolor=red];
|
||||
0 [label="Enter file assignSafeCall.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file assignSafeCall.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1} [color=green];
|
||||
0 -> {7} [style=dotted];
|
||||
0 -> {1 4} [style=dashed];
|
||||
1 -> {2};
|
||||
2 -> {3};
|
||||
3 -> {4} [color=green];
|
||||
|
||||
subgraph cluster_1 {
|
||||
color=red
|
||||
2 [label="Enter class A" style="filled" fillcolor=red];
|
||||
subgraph cluster_2 {
|
||||
color=blue
|
||||
3 [label="Enter property" style="filled" fillcolor=red];
|
||||
4 [label="Const: Int(1)"];
|
||||
5 [label="Exit property" style="filled" fillcolor=red];
|
||||
}
|
||||
subgraph cluster_3 {
|
||||
color=blue
|
||||
6 [label="Enter function <init>" style="filled" fillcolor=red];
|
||||
7 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
|
||||
8 [label="Exit function <init>" style="filled" fillcolor=red];
|
||||
}
|
||||
9 [label="Exit class A" style="filled" fillcolor=red];
|
||||
}
|
||||
2 -> {3} [color=green];
|
||||
2 -> {9} [style=dotted];
|
||||
2 -> {3 6} [style=dashed];
|
||||
3 -> {4};
|
||||
4 -> {5};
|
||||
5 -> {6};
|
||||
6 -> {7} [color=green];
|
||||
5 -> {6} [color=green];
|
||||
6 -> {7};
|
||||
7 -> {8};
|
||||
8 -> {9} [color=green];
|
||||
|
||||
subgraph cluster_3 {
|
||||
subgraph cluster_4 {
|
||||
color=red
|
||||
8 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
subgraph cluster_4 {
|
||||
10 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
9 [label="Enter block"];
|
||||
10 [label="Const: Int(1)"];
|
||||
11 [label="Jump: ^foo Int(1)"];
|
||||
12 [label="Stub" style="filled" fillcolor=gray];
|
||||
13 [label="Exit block" style="filled" fillcolor=gray];
|
||||
11 [label="Enter block"];
|
||||
12 [label="Const: Int(1)"];
|
||||
13 [label="Jump: ^foo Int(1)"];
|
||||
14 [label="Stub" style="filled" fillcolor=gray];
|
||||
15 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
14 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
16 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
}
|
||||
8 -> {9};
|
||||
9 -> {10};
|
||||
10 -> {11};
|
||||
11 -> {14};
|
||||
11 -> {12} [style=dotted];
|
||||
12 -> {13} [style=dotted];
|
||||
11 -> {12};
|
||||
12 -> {13};
|
||||
13 -> {16};
|
||||
13 -> {14} [style=dotted];
|
||||
14 -> {15} [style=dotted];
|
||||
15 -> {16} [style=dotted];
|
||||
|
||||
subgraph cluster_5 {
|
||||
subgraph cluster_6 {
|
||||
color=red
|
||||
15 [label="Enter function bar" style="filled" fillcolor=red];
|
||||
subgraph cluster_6 {
|
||||
17 [label="Enter function bar" style="filled" fillcolor=red];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
16 [label="Enter block"];
|
||||
17 [label="Exit block"];
|
||||
18 [label="Enter block"];
|
||||
19 [label="Exit block"];
|
||||
}
|
||||
18 [label="Exit function bar" style="filled" fillcolor=red];
|
||||
20 [label="Exit function bar" style="filled" fillcolor=red];
|
||||
}
|
||||
15 -> {16};
|
||||
16 -> {17};
|
||||
17 -> {18};
|
||||
18 -> {19};
|
||||
19 -> {20};
|
||||
|
||||
subgraph cluster_7 {
|
||||
subgraph cluster_8 {
|
||||
color=red
|
||||
19 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_8 {
|
||||
21 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
20 [label="Enter block"];
|
||||
21 [label="Access variable R|<local>/a|"];
|
||||
22 [label="Enter safe call"];
|
||||
23 [label="Access variable R|/A.x|"];
|
||||
24 [label="Exit safe call"];
|
||||
25 [label="Variable declaration: lval x: R|kotlin/Int?|"];
|
||||
subgraph cluster_9 {
|
||||
22 [label="Enter block"];
|
||||
23 [label="Access variable R|<local>/a|"];
|
||||
24 [label="Enter safe call"];
|
||||
25 [label="Access variable R|/A.x|"];
|
||||
26 [label="Exit safe call"];
|
||||
27 [label="Variable declaration: lval x: R|kotlin/Int?|"];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
26 [label="Enter when"];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
27 [label="Enter when branch condition "];
|
||||
28 [label="Access variable R|<local>/x|"];
|
||||
29 [label="Const: Null(null)"];
|
||||
30 [label="Equality operator !="];
|
||||
31 [label="Exit when branch condition"];
|
||||
}
|
||||
32 [label="Synthetic else branch"];
|
||||
33 [label="Enter when branch result"];
|
||||
28 [label="Enter when"];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
34 [label="Enter block"];
|
||||
35 [label="Access variable R|<local>/a|"];
|
||||
36 [label="Smart cast: R|<local>/a|"];
|
||||
37 [label="Function call: R|<local>/a|.R|/A.bar|()" style="filled" fillcolor=yellow];
|
||||
38 [label="Exit block"];
|
||||
29 [label="Enter when branch condition "];
|
||||
30 [label="Access variable R|<local>/x|"];
|
||||
31 [label="Const: Null(null)"];
|
||||
32 [label="Equality operator !="];
|
||||
33 [label="Exit when branch condition"];
|
||||
}
|
||||
39 [label="Exit when branch result"];
|
||||
40 [label="Exit when"];
|
||||
34 [label="Synthetic else branch"];
|
||||
35 [label="Enter when branch result"];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
36 [label="Enter block"];
|
||||
37 [label="Access variable R|<local>/a|"];
|
||||
38 [label="Smart cast: R|<local>/a|"];
|
||||
39 [label="Function call: R|<local>/a|.R|/A.bar|()" style="filled" fillcolor=yellow];
|
||||
40 [label="Exit block"];
|
||||
}
|
||||
41 [label="Exit when branch result"];
|
||||
42 [label="Exit when"];
|
||||
}
|
||||
41 [label="Exit block"];
|
||||
43 [label="Exit block"];
|
||||
}
|
||||
42 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
44 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
}
|
||||
19 -> {20};
|
||||
20 -> {21};
|
||||
21 -> {22 24};
|
||||
21 -> {22};
|
||||
22 -> {23};
|
||||
23 -> {24};
|
||||
23 -> {24 26};
|
||||
24 -> {25};
|
||||
25 -> {26};
|
||||
26 -> {27};
|
||||
@@ -116,10 +121,10 @@ digraph assignSafeCall_kt {
|
||||
28 -> {29};
|
||||
29 -> {30};
|
||||
30 -> {31};
|
||||
31 -> {32 33};
|
||||
32 -> {40};
|
||||
33 -> {34};
|
||||
34 -> {35};
|
||||
31 -> {32};
|
||||
32 -> {33};
|
||||
33 -> {34 35};
|
||||
34 -> {42};
|
||||
35 -> {36};
|
||||
36 -> {37};
|
||||
37 -> {38};
|
||||
@@ -127,51 +132,51 @@ digraph assignSafeCall_kt {
|
||||
39 -> {40};
|
||||
40 -> {41};
|
||||
41 -> {42};
|
||||
42 -> {43};
|
||||
43 -> {44};
|
||||
|
||||
subgraph cluster_12 {
|
||||
subgraph cluster_13 {
|
||||
color=red
|
||||
43 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_13 {
|
||||
45 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
44 [label="Enter block"];
|
||||
45 [label="Access variable R|<local>/a|"];
|
||||
46 [label="Enter safe call"];
|
||||
47 [label="Function call: $subj$.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
48 [label="Exit safe call"];
|
||||
49 [label="Variable declaration: lval x: R|kotlin/Int?|"];
|
||||
subgraph cluster_14 {
|
||||
46 [label="Enter block"];
|
||||
47 [label="Access variable R|<local>/a|"];
|
||||
48 [label="Enter safe call"];
|
||||
49 [label="Function call: $subj$.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
50 [label="Exit safe call"];
|
||||
51 [label="Variable declaration: lval x: R|kotlin/Int?|"];
|
||||
subgraph cluster_15 {
|
||||
color=blue
|
||||
50 [label="Enter when"];
|
||||
subgraph cluster_15 {
|
||||
color=blue
|
||||
51 [label="Enter when branch condition "];
|
||||
52 [label="Access variable R|<local>/x|"];
|
||||
53 [label="Const: Null(null)"];
|
||||
54 [label="Equality operator !="];
|
||||
55 [label="Exit when branch condition"];
|
||||
}
|
||||
56 [label="Synthetic else branch"];
|
||||
57 [label="Enter when branch result"];
|
||||
52 [label="Enter when"];
|
||||
subgraph cluster_16 {
|
||||
color=blue
|
||||
58 [label="Enter block"];
|
||||
59 [label="Access variable R|<local>/a|"];
|
||||
60 [label="Smart cast: R|<local>/a|"];
|
||||
61 [label="Function call: R|<local>/a|.R|/A.bar|()" style="filled" fillcolor=yellow];
|
||||
62 [label="Exit block"];
|
||||
53 [label="Enter when branch condition "];
|
||||
54 [label="Access variable R|<local>/x|"];
|
||||
55 [label="Const: Null(null)"];
|
||||
56 [label="Equality operator !="];
|
||||
57 [label="Exit when branch condition"];
|
||||
}
|
||||
63 [label="Exit when branch result"];
|
||||
64 [label="Exit when"];
|
||||
58 [label="Synthetic else branch"];
|
||||
59 [label="Enter when branch result"];
|
||||
subgraph cluster_17 {
|
||||
color=blue
|
||||
60 [label="Enter block"];
|
||||
61 [label="Access variable R|<local>/a|"];
|
||||
62 [label="Smart cast: R|<local>/a|"];
|
||||
63 [label="Function call: R|<local>/a|.R|/A.bar|()" style="filled" fillcolor=yellow];
|
||||
64 [label="Exit block"];
|
||||
}
|
||||
65 [label="Exit when branch result"];
|
||||
66 [label="Exit when"];
|
||||
}
|
||||
65 [label="Exit block"];
|
||||
67 [label="Exit block"];
|
||||
}
|
||||
66 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
68 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
}
|
||||
43 -> {44};
|
||||
44 -> {45};
|
||||
45 -> {46 48};
|
||||
45 -> {46};
|
||||
46 -> {47};
|
||||
47 -> {48};
|
||||
47 -> {48 50};
|
||||
48 -> {49};
|
||||
49 -> {50};
|
||||
50 -> {51};
|
||||
@@ -179,10 +184,10 @@ digraph assignSafeCall_kt {
|
||||
52 -> {53};
|
||||
53 -> {54};
|
||||
54 -> {55};
|
||||
55 -> {56 57};
|
||||
56 -> {64};
|
||||
57 -> {58};
|
||||
58 -> {59};
|
||||
55 -> {56};
|
||||
56 -> {57};
|
||||
57 -> {58 59};
|
||||
58 -> {66};
|
||||
59 -> {60};
|
||||
60 -> {61};
|
||||
61 -> {62};
|
||||
@@ -190,42 +195,42 @@ digraph assignSafeCall_kt {
|
||||
63 -> {64};
|
||||
64 -> {65};
|
||||
65 -> {66};
|
||||
|
||||
subgraph cluster_17 {
|
||||
color=red
|
||||
67 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_18 {
|
||||
color=blue
|
||||
68 [label="Enter block"];
|
||||
69 [label="Access variable R|<local>/x|"];
|
||||
70 [label="Type operator: (R|<local>/x| as? R|A|)"];
|
||||
71 [label="Exit lhs of ?:"];
|
||||
72 [label="Enter rhs of ?:"];
|
||||
73 [label="Jump: ^test_3 Unit"];
|
||||
74 [label="Stub" style="filled" fillcolor=gray];
|
||||
75 [label="Lhs of ?: is not null"];
|
||||
76 [label="Exit ?:"];
|
||||
77 [label="Variable declaration: lval a: R|A|"];
|
||||
78 [label="Access variable R|<local>/a|"];
|
||||
79 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
80 [label="Access variable R|<local>/x|"];
|
||||
81 [label="Smart cast: R|<local>/x|"];
|
||||
82 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
83 [label="Exit block"];
|
||||
}
|
||||
84 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
}
|
||||
66 -> {67};
|
||||
67 -> {68};
|
||||
68 -> {69};
|
||||
|
||||
subgraph cluster_18 {
|
||||
color=red
|
||||
69 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_19 {
|
||||
color=blue
|
||||
70 [label="Enter block"];
|
||||
71 [label="Access variable R|<local>/x|"];
|
||||
72 [label="Type operator: (R|<local>/x| as? R|A|)"];
|
||||
73 [label="Exit lhs of ?:"];
|
||||
74 [label="Enter rhs of ?:"];
|
||||
75 [label="Jump: ^test_3 Unit"];
|
||||
76 [label="Stub" style="filled" fillcolor=gray];
|
||||
77 [label="Lhs of ?: is not null"];
|
||||
78 [label="Exit ?:"];
|
||||
79 [label="Variable declaration: lval a: R|A|"];
|
||||
80 [label="Access variable R|<local>/a|"];
|
||||
81 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
82 [label="Access variable R|<local>/x|"];
|
||||
83 [label="Smart cast: R|<local>/x|"];
|
||||
84 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
85 [label="Exit block"];
|
||||
}
|
||||
86 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
}
|
||||
69 -> {70};
|
||||
70 -> {71};
|
||||
71 -> {72 75};
|
||||
71 -> {72};
|
||||
72 -> {73};
|
||||
73 -> {84};
|
||||
73 -> {74} [style=dotted];
|
||||
74 -> {76} [style=dotted];
|
||||
75 -> {76};
|
||||
76 -> {77};
|
||||
73 -> {74 77};
|
||||
74 -> {75};
|
||||
75 -> {86};
|
||||
75 -> {76} [style=dotted];
|
||||
76 -> {78} [style=dotted];
|
||||
77 -> {78};
|
||||
78 -> {79};
|
||||
79 -> {80};
|
||||
@@ -233,72 +238,72 @@ digraph assignSafeCall_kt {
|
||||
81 -> {82};
|
||||
82 -> {83};
|
||||
83 -> {84};
|
||||
|
||||
subgraph cluster_19 {
|
||||
color=red
|
||||
85 [label="Enter class B" style="filled" fillcolor=red];
|
||||
86 [label="Exit class B" style="filled" fillcolor=red];
|
||||
}
|
||||
85 -> {86} [color=green];
|
||||
84 -> {85};
|
||||
85 -> {86};
|
||||
|
||||
subgraph cluster_20 {
|
||||
color=red
|
||||
87 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
88 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
87 [label="Enter class B" style="filled" fillcolor=red];
|
||||
88 [label="Exit class B" style="filled" fillcolor=red];
|
||||
}
|
||||
87 -> {88};
|
||||
87 -> {88} [color=green];
|
||||
|
||||
subgraph cluster_21 {
|
||||
color=red
|
||||
89 [label="Enter function bar" style="filled" fillcolor=red];
|
||||
90 [label="Exit function bar" style="filled" fillcolor=red];
|
||||
89 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
90 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
}
|
||||
89 -> {90};
|
||||
|
||||
subgraph cluster_22 {
|
||||
color=red
|
||||
91 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_23 {
|
||||
color=blue
|
||||
92 [label="Enter block"];
|
||||
93 [label="Access variable R|<local>/a|"];
|
||||
94 [label="Enter safe call"];
|
||||
95 [label="Access variable R|/B.x|"];
|
||||
96 [label="Exit safe call"];
|
||||
97 [label="Variable declaration: lval x: R|kotlin/Int?|"];
|
||||
subgraph cluster_24 {
|
||||
color=blue
|
||||
98 [label="Enter when"];
|
||||
subgraph cluster_25 {
|
||||
color=blue
|
||||
99 [label="Enter when branch condition "];
|
||||
100 [label="Access variable R|<local>/x|"];
|
||||
101 [label="Const: Null(null)"];
|
||||
102 [label="Equality operator !="];
|
||||
103 [label="Exit when branch condition"];
|
||||
}
|
||||
104 [label="Synthetic else branch"];
|
||||
105 [label="Enter when branch result"];
|
||||
subgraph cluster_26 {
|
||||
color=blue
|
||||
106 [label="Enter block"];
|
||||
107 [label="Access variable R|<local>/a|"];
|
||||
108 [label="Smart cast: R|<local>/a|"];
|
||||
109 [label="Function call: R|<local>/a|.R|/B.bar|()" style="filled" fillcolor=yellow];
|
||||
110 [label="Exit block"];
|
||||
}
|
||||
111 [label="Exit when branch result"];
|
||||
112 [label="Exit when"];
|
||||
}
|
||||
113 [label="Exit block"];
|
||||
}
|
||||
114 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
91 [label="Enter function bar" style="filled" fillcolor=red];
|
||||
92 [label="Exit function bar" style="filled" fillcolor=red];
|
||||
}
|
||||
91 -> {92};
|
||||
92 -> {93};
|
||||
93 -> {94 96};
|
||||
|
||||
subgraph cluster_23 {
|
||||
color=red
|
||||
93 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_24 {
|
||||
color=blue
|
||||
94 [label="Enter block"];
|
||||
95 [label="Access variable R|<local>/a|"];
|
||||
96 [label="Enter safe call"];
|
||||
97 [label="Access variable R|/B.x|"];
|
||||
98 [label="Exit safe call"];
|
||||
99 [label="Variable declaration: lval x: R|kotlin/Int?|"];
|
||||
subgraph cluster_25 {
|
||||
color=blue
|
||||
100 [label="Enter when"];
|
||||
subgraph cluster_26 {
|
||||
color=blue
|
||||
101 [label="Enter when branch condition "];
|
||||
102 [label="Access variable R|<local>/x|"];
|
||||
103 [label="Const: Null(null)"];
|
||||
104 [label="Equality operator !="];
|
||||
105 [label="Exit when branch condition"];
|
||||
}
|
||||
106 [label="Synthetic else branch"];
|
||||
107 [label="Enter when branch result"];
|
||||
subgraph cluster_27 {
|
||||
color=blue
|
||||
108 [label="Enter block"];
|
||||
109 [label="Access variable R|<local>/a|"];
|
||||
110 [label="Smart cast: R|<local>/a|"];
|
||||
111 [label="Function call: R|<local>/a|.R|/B.bar|()" style="filled" fillcolor=yellow];
|
||||
112 [label="Exit block"];
|
||||
}
|
||||
113 [label="Exit when branch result"];
|
||||
114 [label="Exit when"];
|
||||
}
|
||||
115 [label="Exit block"];
|
||||
}
|
||||
116 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
}
|
||||
93 -> {94};
|
||||
94 -> {95};
|
||||
95 -> {96};
|
||||
95 -> {96 98};
|
||||
96 -> {97};
|
||||
97 -> {98};
|
||||
98 -> {99};
|
||||
@@ -306,10 +311,10 @@ digraph assignSafeCall_kt {
|
||||
100 -> {101};
|
||||
101 -> {102};
|
||||
102 -> {103};
|
||||
103 -> {104 105};
|
||||
104 -> {112};
|
||||
105 -> {106};
|
||||
106 -> {107};
|
||||
103 -> {104};
|
||||
104 -> {105};
|
||||
105 -> {106 107};
|
||||
106 -> {114};
|
||||
107 -> {108};
|
||||
108 -> {109};
|
||||
109 -> {110};
|
||||
@@ -317,51 +322,51 @@ digraph assignSafeCall_kt {
|
||||
111 -> {112};
|
||||
112 -> {113};
|
||||
113 -> {114};
|
||||
114 -> {115};
|
||||
115 -> {116};
|
||||
|
||||
subgraph cluster_27 {
|
||||
subgraph cluster_28 {
|
||||
color=red
|
||||
115 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_28 {
|
||||
117 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_29 {
|
||||
color=blue
|
||||
116 [label="Enter block"];
|
||||
117 [label="Access variable R|<local>/a|"];
|
||||
118 [label="Enter safe call"];
|
||||
119 [label="Function call: $subj$.R|/B.foo|()" style="filled" fillcolor=yellow];
|
||||
120 [label="Exit safe call"];
|
||||
121 [label="Variable declaration: lval x: R|kotlin/Int?|"];
|
||||
subgraph cluster_29 {
|
||||
118 [label="Enter block"];
|
||||
119 [label="Access variable R|<local>/a|"];
|
||||
120 [label="Enter safe call"];
|
||||
121 [label="Function call: $subj$.R|/B.foo|()" style="filled" fillcolor=yellow];
|
||||
122 [label="Exit safe call"];
|
||||
123 [label="Variable declaration: lval x: R|kotlin/Int?|"];
|
||||
subgraph cluster_30 {
|
||||
color=blue
|
||||
122 [label="Enter when"];
|
||||
subgraph cluster_30 {
|
||||
color=blue
|
||||
123 [label="Enter when branch condition "];
|
||||
124 [label="Access variable R|<local>/x|"];
|
||||
125 [label="Const: Null(null)"];
|
||||
126 [label="Equality operator !="];
|
||||
127 [label="Exit when branch condition"];
|
||||
}
|
||||
128 [label="Synthetic else branch"];
|
||||
129 [label="Enter when branch result"];
|
||||
124 [label="Enter when"];
|
||||
subgraph cluster_31 {
|
||||
color=blue
|
||||
130 [label="Enter block"];
|
||||
131 [label="Access variable R|<local>/a|"];
|
||||
132 [label="Smart cast: R|<local>/a|"];
|
||||
133 [label="Function call: R|<local>/a|.R|/B.bar|()" style="filled" fillcolor=yellow];
|
||||
134 [label="Exit block"];
|
||||
125 [label="Enter when branch condition "];
|
||||
126 [label="Access variable R|<local>/x|"];
|
||||
127 [label="Const: Null(null)"];
|
||||
128 [label="Equality operator !="];
|
||||
129 [label="Exit when branch condition"];
|
||||
}
|
||||
135 [label="Exit when branch result"];
|
||||
136 [label="Exit when"];
|
||||
130 [label="Synthetic else branch"];
|
||||
131 [label="Enter when branch result"];
|
||||
subgraph cluster_32 {
|
||||
color=blue
|
||||
132 [label="Enter block"];
|
||||
133 [label="Access variable R|<local>/a|"];
|
||||
134 [label="Smart cast: R|<local>/a|"];
|
||||
135 [label="Function call: R|<local>/a|.R|/B.bar|()" style="filled" fillcolor=yellow];
|
||||
136 [label="Exit block"];
|
||||
}
|
||||
137 [label="Exit when branch result"];
|
||||
138 [label="Exit when"];
|
||||
}
|
||||
137 [label="Exit block"];
|
||||
139 [label="Exit block"];
|
||||
}
|
||||
138 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
140 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
}
|
||||
115 -> {116};
|
||||
116 -> {117};
|
||||
117 -> {118 120};
|
||||
117 -> {118};
|
||||
118 -> {119};
|
||||
119 -> {120};
|
||||
119 -> {120 122};
|
||||
120 -> {121};
|
||||
121 -> {122};
|
||||
122 -> {123};
|
||||
@@ -369,10 +374,10 @@ digraph assignSafeCall_kt {
|
||||
124 -> {125};
|
||||
125 -> {126};
|
||||
126 -> {127};
|
||||
127 -> {128 129};
|
||||
128 -> {136};
|
||||
129 -> {130};
|
||||
130 -> {131};
|
||||
127 -> {128};
|
||||
128 -> {129};
|
||||
129 -> {130 131};
|
||||
130 -> {138};
|
||||
131 -> {132};
|
||||
132 -> {133};
|
||||
133 -> {134};
|
||||
@@ -380,42 +385,42 @@ digraph assignSafeCall_kt {
|
||||
135 -> {136};
|
||||
136 -> {137};
|
||||
137 -> {138};
|
||||
|
||||
subgraph cluster_32 {
|
||||
color=red
|
||||
139 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_33 {
|
||||
color=blue
|
||||
140 [label="Enter block"];
|
||||
141 [label="Access variable R|<local>/x|"];
|
||||
142 [label="Type operator: (R|<local>/x| as? R|B|)"];
|
||||
143 [label="Exit lhs of ?:"];
|
||||
144 [label="Enter rhs of ?:"];
|
||||
145 [label="Jump: ^test_3 Unit"];
|
||||
146 [label="Stub" style="filled" fillcolor=gray];
|
||||
147 [label="Lhs of ?: is not null"];
|
||||
148 [label="Exit ?:"];
|
||||
149 [label="Variable declaration: lval a: R|B|"];
|
||||
150 [label="Access variable R|<local>/a|"];
|
||||
151 [label="Function call: R|<local>/a|.R|/B.foo|()" style="filled" fillcolor=yellow];
|
||||
152 [label="Access variable R|<local>/x|"];
|
||||
153 [label="Smart cast: R|<local>/x|"];
|
||||
154 [label="Function call: R|<local>/x|.R|/B.foo|()" style="filled" fillcolor=yellow];
|
||||
155 [label="Exit block"];
|
||||
}
|
||||
156 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
}
|
||||
138 -> {139};
|
||||
139 -> {140};
|
||||
140 -> {141};
|
||||
|
||||
subgraph cluster_33 {
|
||||
color=red
|
||||
141 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_34 {
|
||||
color=blue
|
||||
142 [label="Enter block"];
|
||||
143 [label="Access variable R|<local>/x|"];
|
||||
144 [label="Type operator: (R|<local>/x| as? R|B|)"];
|
||||
145 [label="Exit lhs of ?:"];
|
||||
146 [label="Enter rhs of ?:"];
|
||||
147 [label="Jump: ^test_3 Unit"];
|
||||
148 [label="Stub" style="filled" fillcolor=gray];
|
||||
149 [label="Lhs of ?: is not null"];
|
||||
150 [label="Exit ?:"];
|
||||
151 [label="Variable declaration: lval a: R|B|"];
|
||||
152 [label="Access variable R|<local>/a|"];
|
||||
153 [label="Function call: R|<local>/a|.R|/B.foo|()" style="filled" fillcolor=yellow];
|
||||
154 [label="Access variable R|<local>/x|"];
|
||||
155 [label="Smart cast: R|<local>/x|"];
|
||||
156 [label="Function call: R|<local>/x|.R|/B.foo|()" style="filled" fillcolor=yellow];
|
||||
157 [label="Exit block"];
|
||||
}
|
||||
158 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
}
|
||||
141 -> {142};
|
||||
142 -> {143};
|
||||
143 -> {144 147};
|
||||
143 -> {144};
|
||||
144 -> {145};
|
||||
145 -> {156};
|
||||
145 -> {146} [style=dotted];
|
||||
146 -> {148} [style=dotted];
|
||||
147 -> {148};
|
||||
148 -> {149};
|
||||
145 -> {146 149};
|
||||
146 -> {147};
|
||||
147 -> {158};
|
||||
147 -> {148} [style=dotted];
|
||||
148 -> {150} [style=dotted];
|
||||
149 -> {150};
|
||||
150 -> {151};
|
||||
151 -> {152};
|
||||
@@ -423,5 +428,7 @@ digraph assignSafeCall_kt {
|
||||
153 -> {154};
|
||||
154 -> {155};
|
||||
155 -> {156};
|
||||
156 -> {157};
|
||||
157 -> {158};
|
||||
|
||||
}
|
||||
|
||||
Vendored
+192
-185
@@ -5,96 +5,101 @@ digraph safeCallAndEqualityToBool_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter function check" style="filled" fillcolor=red];
|
||||
subgraph cluster_1 {
|
||||
color=blue
|
||||
1 [label="Enter block"];
|
||||
2 [label="Const: Boolean(true)"];
|
||||
3 [label="Jump: ^check Boolean(true)"];
|
||||
4 [label="Stub" style="filled" fillcolor=gray];
|
||||
5 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
6 [label="Exit function check" style="filled" fillcolor=red];
|
||||
0 [label="Enter file safeCallAndEqualityToBool.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file safeCallAndEqualityToBool.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1};
|
||||
1 -> {2};
|
||||
2 -> {3};
|
||||
3 -> {6};
|
||||
3 -> {4} [style=dotted];
|
||||
4 -> {5} [style=dotted];
|
||||
5 -> {6} [style=dotted];
|
||||
0 -> {1} [color=green];
|
||||
|
||||
subgraph cluster_2 {
|
||||
subgraph cluster_1 {
|
||||
color=red
|
||||
7 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_3 {
|
||||
2 [label="Enter function check" style="filled" fillcolor=red];
|
||||
subgraph cluster_2 {
|
||||
color=blue
|
||||
8 [label="Enter block"];
|
||||
subgraph cluster_4 {
|
||||
3 [label="Enter block"];
|
||||
4 [label="Const: Boolean(true)"];
|
||||
5 [label="Jump: ^check Boolean(true)"];
|
||||
6 [label="Stub" style="filled" fillcolor=gray];
|
||||
7 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
8 [label="Exit function check" style="filled" fillcolor=red];
|
||||
}
|
||||
2 -> {3};
|
||||
3 -> {4};
|
||||
4 -> {5};
|
||||
5 -> {8};
|
||||
5 -> {6} [style=dotted];
|
||||
6 -> {7} [style=dotted];
|
||||
7 -> {8} [style=dotted];
|
||||
|
||||
subgraph cluster_3 {
|
||||
color=red
|
||||
9 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
10 [label="Enter block"];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
9 [label="Enter when"];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
10 [label="Enter when branch condition "];
|
||||
11 [label="Access variable R|<local>/s|"];
|
||||
12 [label="Enter safe call"];
|
||||
13 [label="Function call: $subj$.R|/check|()" style="filled" fillcolor=yellow];
|
||||
14 [label="Exit safe call"];
|
||||
15 [label="Const: Boolean(true)"];
|
||||
16 [label="Equality operator =="];
|
||||
17 [label="Exit when branch condition"];
|
||||
}
|
||||
11 [label="Enter when"];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
18 [label="Enter when branch condition else"];
|
||||
12 [label="Enter when branch condition "];
|
||||
13 [label="Access variable R|<local>/s|"];
|
||||
14 [label="Enter safe call"];
|
||||
15 [label="Function call: $subj$.R|/check|()" style="filled" fillcolor=yellow];
|
||||
16 [label="Exit safe call"];
|
||||
17 [label="Const: Boolean(true)"];
|
||||
18 [label="Equality operator =="];
|
||||
19 [label="Exit when branch condition"];
|
||||
}
|
||||
20 [label="Enter when branch result"];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
21 [label="Enter block"];
|
||||
22 [label="Access variable R|<local>/s|"];
|
||||
23 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
|
||||
24 [label="Exit block"];
|
||||
20 [label="Enter when branch condition else"];
|
||||
21 [label="Exit when branch condition"];
|
||||
}
|
||||
25 [label="Exit when branch result"];
|
||||
26 [label="Enter when branch result"];
|
||||
22 [label="Enter when branch result"];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
27 [label="Enter block"];
|
||||
28 [label="Access variable R|<local>/s|"];
|
||||
29 [label="Smart cast: R|<local>/s|"];
|
||||
30 [label="Access variable R|kotlin/String.length|"];
|
||||
31 [label="Exit block"];
|
||||
23 [label="Enter block"];
|
||||
24 [label="Access variable R|<local>/s|"];
|
||||
25 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
|
||||
26 [label="Exit block"];
|
||||
}
|
||||
32 [label="Exit when branch result"];
|
||||
33 [label="Exit when"];
|
||||
27 [label="Exit when branch result"];
|
||||
28 [label="Enter when branch result"];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
29 [label="Enter block"];
|
||||
30 [label="Access variable R|<local>/s|"];
|
||||
31 [label="Smart cast: R|<local>/s|"];
|
||||
32 [label="Access variable R|kotlin/String.length|"];
|
||||
33 [label="Exit block"];
|
||||
}
|
||||
34 [label="Exit when branch result"];
|
||||
35 [label="Exit when"];
|
||||
}
|
||||
34 [label="Exit block"];
|
||||
36 [label="Exit block"];
|
||||
}
|
||||
35 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
37 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
}
|
||||
7 -> {8};
|
||||
8 -> {9};
|
||||
9 -> {10};
|
||||
10 -> {11};
|
||||
11 -> {12 14};
|
||||
11 -> {12};
|
||||
12 -> {13};
|
||||
13 -> {14};
|
||||
13 -> {14 16};
|
||||
14 -> {15};
|
||||
15 -> {16};
|
||||
16 -> {17};
|
||||
17 -> {18 26};
|
||||
17 -> {18};
|
||||
18 -> {19};
|
||||
19 -> {20};
|
||||
19 -> {20 28};
|
||||
20 -> {21};
|
||||
21 -> {22};
|
||||
22 -> {23};
|
||||
23 -> {24};
|
||||
24 -> {25};
|
||||
25 -> {33};
|
||||
25 -> {26};
|
||||
26 -> {27};
|
||||
27 -> {28};
|
||||
27 -> {35};
|
||||
28 -> {29};
|
||||
29 -> {30};
|
||||
30 -> {31};
|
||||
@@ -102,78 +107,78 @@ digraph safeCallAndEqualityToBool_kt {
|
||||
32 -> {33};
|
||||
33 -> {34};
|
||||
34 -> {35};
|
||||
35 -> {36};
|
||||
36 -> {37};
|
||||
|
||||
subgraph cluster_9 {
|
||||
subgraph cluster_10 {
|
||||
color=red
|
||||
36 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_10 {
|
||||
38 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
37 [label="Enter block"];
|
||||
subgraph cluster_11 {
|
||||
39 [label="Enter block"];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
38 [label="Enter when"];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
39 [label="Enter when branch condition "];
|
||||
40 [label="Access variable R|<local>/s|"];
|
||||
41 [label="Enter safe call"];
|
||||
42 [label="Function call: $subj$.R|/check|()" style="filled" fillcolor=yellow];
|
||||
43 [label="Exit safe call"];
|
||||
44 [label="Const: Boolean(false)"];
|
||||
45 [label="Equality operator =="];
|
||||
46 [label="Exit when branch condition"];
|
||||
}
|
||||
40 [label="Enter when"];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
47 [label="Enter when branch condition else"];
|
||||
41 [label="Enter when branch condition "];
|
||||
42 [label="Access variable R|<local>/s|"];
|
||||
43 [label="Enter safe call"];
|
||||
44 [label="Function call: $subj$.R|/check|()" style="filled" fillcolor=yellow];
|
||||
45 [label="Exit safe call"];
|
||||
46 [label="Const: Boolean(false)"];
|
||||
47 [label="Equality operator =="];
|
||||
48 [label="Exit when branch condition"];
|
||||
}
|
||||
49 [label="Enter when branch result"];
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
50 [label="Enter block"];
|
||||
51 [label="Access variable R|<local>/s|"];
|
||||
52 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
|
||||
53 [label="Exit block"];
|
||||
49 [label="Enter when branch condition else"];
|
||||
50 [label="Exit when branch condition"];
|
||||
}
|
||||
54 [label="Exit when branch result"];
|
||||
55 [label="Enter when branch result"];
|
||||
51 [label="Enter when branch result"];
|
||||
subgraph cluster_15 {
|
||||
color=blue
|
||||
56 [label="Enter block"];
|
||||
57 [label="Access variable R|<local>/s|"];
|
||||
58 [label="Smart cast: R|<local>/s|"];
|
||||
59 [label="Access variable R|kotlin/String.length|"];
|
||||
60 [label="Exit block"];
|
||||
52 [label="Enter block"];
|
||||
53 [label="Access variable R|<local>/s|"];
|
||||
54 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
|
||||
55 [label="Exit block"];
|
||||
}
|
||||
61 [label="Exit when branch result"];
|
||||
62 [label="Exit when"];
|
||||
56 [label="Exit when branch result"];
|
||||
57 [label="Enter when branch result"];
|
||||
subgraph cluster_16 {
|
||||
color=blue
|
||||
58 [label="Enter block"];
|
||||
59 [label="Access variable R|<local>/s|"];
|
||||
60 [label="Smart cast: R|<local>/s|"];
|
||||
61 [label="Access variable R|kotlin/String.length|"];
|
||||
62 [label="Exit block"];
|
||||
}
|
||||
63 [label="Exit when branch result"];
|
||||
64 [label="Exit when"];
|
||||
}
|
||||
63 [label="Exit block"];
|
||||
65 [label="Exit block"];
|
||||
}
|
||||
64 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
66 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
}
|
||||
36 -> {37};
|
||||
37 -> {38};
|
||||
38 -> {39};
|
||||
39 -> {40};
|
||||
40 -> {41 43};
|
||||
40 -> {41};
|
||||
41 -> {42};
|
||||
42 -> {43};
|
||||
42 -> {43 45};
|
||||
43 -> {44};
|
||||
44 -> {45};
|
||||
45 -> {46};
|
||||
46 -> {47 55};
|
||||
46 -> {47};
|
||||
47 -> {48};
|
||||
48 -> {49};
|
||||
48 -> {49 57};
|
||||
49 -> {50};
|
||||
50 -> {51};
|
||||
51 -> {52};
|
||||
52 -> {53};
|
||||
53 -> {54};
|
||||
54 -> {62};
|
||||
54 -> {55};
|
||||
55 -> {56};
|
||||
56 -> {57};
|
||||
56 -> {64};
|
||||
57 -> {58};
|
||||
58 -> {59};
|
||||
59 -> {60};
|
||||
@@ -181,163 +186,165 @@ digraph safeCallAndEqualityToBool_kt {
|
||||
61 -> {62};
|
||||
62 -> {63};
|
||||
63 -> {64};
|
||||
64 -> {65};
|
||||
65 -> {66};
|
||||
|
||||
subgraph cluster_16 {
|
||||
subgraph cluster_17 {
|
||||
color=red
|
||||
65 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_17 {
|
||||
67 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_18 {
|
||||
color=blue
|
||||
66 [label="Enter block"];
|
||||
subgraph cluster_18 {
|
||||
68 [label="Enter block"];
|
||||
subgraph cluster_19 {
|
||||
color=blue
|
||||
67 [label="Enter when"];
|
||||
subgraph cluster_19 {
|
||||
color=blue
|
||||
68 [label="Enter when branch condition "];
|
||||
69 [label="Access variable R|<local>/s|"];
|
||||
70 [label="Enter safe call"];
|
||||
71 [label="Function call: $subj$.R|/check|()" style="filled" fillcolor=yellow];
|
||||
72 [label="Exit safe call"];
|
||||
73 [label="Const: Boolean(true)"];
|
||||
74 [label="Equality operator !="];
|
||||
75 [label="Exit when branch condition"];
|
||||
}
|
||||
69 [label="Enter when"];
|
||||
subgraph cluster_20 {
|
||||
color=blue
|
||||
76 [label="Enter when branch condition else"];
|
||||
70 [label="Enter when branch condition "];
|
||||
71 [label="Access variable R|<local>/s|"];
|
||||
72 [label="Enter safe call"];
|
||||
73 [label="Function call: $subj$.R|/check|()" style="filled" fillcolor=yellow];
|
||||
74 [label="Exit safe call"];
|
||||
75 [label="Const: Boolean(true)"];
|
||||
76 [label="Equality operator !="];
|
||||
77 [label="Exit when branch condition"];
|
||||
}
|
||||
78 [label="Enter when branch result"];
|
||||
subgraph cluster_21 {
|
||||
color=blue
|
||||
79 [label="Enter block"];
|
||||
80 [label="Access variable R|<local>/s|"];
|
||||
81 [label="Smart cast: R|<local>/s|"];
|
||||
82 [label="Access variable R|kotlin/String.length|"];
|
||||
83 [label="Exit block"];
|
||||
78 [label="Enter when branch condition else"];
|
||||
79 [label="Exit when branch condition"];
|
||||
}
|
||||
84 [label="Exit when branch result"];
|
||||
85 [label="Enter when branch result"];
|
||||
80 [label="Enter when branch result"];
|
||||
subgraph cluster_22 {
|
||||
color=blue
|
||||
86 [label="Enter block"];
|
||||
87 [label="Access variable R|<local>/s|"];
|
||||
88 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
|
||||
89 [label="Exit block"];
|
||||
81 [label="Enter block"];
|
||||
82 [label="Access variable R|<local>/s|"];
|
||||
83 [label="Smart cast: R|<local>/s|"];
|
||||
84 [label="Access variable R|kotlin/String.length|"];
|
||||
85 [label="Exit block"];
|
||||
}
|
||||
90 [label="Exit when branch result"];
|
||||
91 [label="Exit when"];
|
||||
86 [label="Exit when branch result"];
|
||||
87 [label="Enter when branch result"];
|
||||
subgraph cluster_23 {
|
||||
color=blue
|
||||
88 [label="Enter block"];
|
||||
89 [label="Access variable R|<local>/s|"];
|
||||
90 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
|
||||
91 [label="Exit block"];
|
||||
}
|
||||
92 [label="Exit when branch result"];
|
||||
93 [label="Exit when"];
|
||||
}
|
||||
92 [label="Exit block"];
|
||||
94 [label="Exit block"];
|
||||
}
|
||||
93 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
95 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
}
|
||||
65 -> {66};
|
||||
66 -> {67};
|
||||
67 -> {68};
|
||||
68 -> {69};
|
||||
69 -> {70 72};
|
||||
69 -> {70};
|
||||
70 -> {71};
|
||||
71 -> {72};
|
||||
71 -> {72 74};
|
||||
72 -> {73};
|
||||
73 -> {74};
|
||||
74 -> {75};
|
||||
75 -> {76 85};
|
||||
75 -> {76};
|
||||
76 -> {77};
|
||||
77 -> {78};
|
||||
77 -> {78 87};
|
||||
78 -> {79};
|
||||
79 -> {80};
|
||||
80 -> {81};
|
||||
81 -> {82};
|
||||
82 -> {83};
|
||||
83 -> {84};
|
||||
84 -> {91};
|
||||
84 -> {85};
|
||||
85 -> {86};
|
||||
86 -> {87};
|
||||
86 -> {93};
|
||||
87 -> {88};
|
||||
88 -> {89};
|
||||
89 -> {90};
|
||||
90 -> {91};
|
||||
91 -> {92};
|
||||
92 -> {93};
|
||||
93 -> {94};
|
||||
94 -> {95};
|
||||
|
||||
subgraph cluster_23 {
|
||||
subgraph cluster_24 {
|
||||
color=red
|
||||
94 [label="Enter function test_4" style="filled" fillcolor=red];
|
||||
subgraph cluster_24 {
|
||||
96 [label="Enter function test_4" style="filled" fillcolor=red];
|
||||
subgraph cluster_25 {
|
||||
color=blue
|
||||
95 [label="Enter block"];
|
||||
subgraph cluster_25 {
|
||||
97 [label="Enter block"];
|
||||
subgraph cluster_26 {
|
||||
color=blue
|
||||
96 [label="Enter when"];
|
||||
subgraph cluster_26 {
|
||||
color=blue
|
||||
97 [label="Enter when branch condition "];
|
||||
98 [label="Access variable R|<local>/s|"];
|
||||
99 [label="Enter safe call"];
|
||||
100 [label="Function call: $subj$.R|/check|()" style="filled" fillcolor=yellow];
|
||||
101 [label="Exit safe call"];
|
||||
102 [label="Const: Boolean(false)"];
|
||||
103 [label="Equality operator !="];
|
||||
104 [label="Exit when branch condition"];
|
||||
}
|
||||
98 [label="Enter when"];
|
||||
subgraph cluster_27 {
|
||||
color=blue
|
||||
105 [label="Enter when branch condition else"];
|
||||
99 [label="Enter when branch condition "];
|
||||
100 [label="Access variable R|<local>/s|"];
|
||||
101 [label="Enter safe call"];
|
||||
102 [label="Function call: $subj$.R|/check|()" style="filled" fillcolor=yellow];
|
||||
103 [label="Exit safe call"];
|
||||
104 [label="Const: Boolean(false)"];
|
||||
105 [label="Equality operator !="];
|
||||
106 [label="Exit when branch condition"];
|
||||
}
|
||||
107 [label="Enter when branch result"];
|
||||
subgraph cluster_28 {
|
||||
color=blue
|
||||
108 [label="Enter block"];
|
||||
109 [label="Access variable R|<local>/s|"];
|
||||
110 [label="Smart cast: R|<local>/s|"];
|
||||
111 [label="Access variable R|kotlin/String.length|"];
|
||||
112 [label="Exit block"];
|
||||
107 [label="Enter when branch condition else"];
|
||||
108 [label="Exit when branch condition"];
|
||||
}
|
||||
113 [label="Exit when branch result"];
|
||||
114 [label="Enter when branch result"];
|
||||
109 [label="Enter when branch result"];
|
||||
subgraph cluster_29 {
|
||||
color=blue
|
||||
115 [label="Enter block"];
|
||||
116 [label="Access variable R|<local>/s|"];
|
||||
117 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
|
||||
118 [label="Exit block"];
|
||||
110 [label="Enter block"];
|
||||
111 [label="Access variable R|<local>/s|"];
|
||||
112 [label="Smart cast: R|<local>/s|"];
|
||||
113 [label="Access variable R|kotlin/String.length|"];
|
||||
114 [label="Exit block"];
|
||||
}
|
||||
119 [label="Exit when branch result"];
|
||||
120 [label="Exit when"];
|
||||
115 [label="Exit when branch result"];
|
||||
116 [label="Enter when branch result"];
|
||||
subgraph cluster_30 {
|
||||
color=blue
|
||||
117 [label="Enter block"];
|
||||
118 [label="Access variable R|<local>/s|"];
|
||||
119 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
|
||||
120 [label="Exit block"];
|
||||
}
|
||||
121 [label="Exit when branch result"];
|
||||
122 [label="Exit when"];
|
||||
}
|
||||
121 [label="Exit block"];
|
||||
123 [label="Exit block"];
|
||||
}
|
||||
122 [label="Exit function test_4" style="filled" fillcolor=red];
|
||||
124 [label="Exit function test_4" style="filled" fillcolor=red];
|
||||
}
|
||||
94 -> {95};
|
||||
95 -> {96};
|
||||
96 -> {97};
|
||||
97 -> {98};
|
||||
98 -> {99 101};
|
||||
98 -> {99};
|
||||
99 -> {100};
|
||||
100 -> {101};
|
||||
100 -> {101 103};
|
||||
101 -> {102};
|
||||
102 -> {103};
|
||||
103 -> {104};
|
||||
104 -> {105 114};
|
||||
104 -> {105};
|
||||
105 -> {106};
|
||||
106 -> {107};
|
||||
106 -> {107 116};
|
||||
107 -> {108};
|
||||
108 -> {109};
|
||||
109 -> {110};
|
||||
110 -> {111};
|
||||
111 -> {112};
|
||||
112 -> {113};
|
||||
113 -> {120};
|
||||
113 -> {114};
|
||||
114 -> {115};
|
||||
115 -> {116};
|
||||
115 -> {122};
|
||||
116 -> {117};
|
||||
117 -> {118};
|
||||
118 -> {119};
|
||||
119 -> {120};
|
||||
120 -> {121};
|
||||
121 -> {122};
|
||||
122 -> {123};
|
||||
123 -> {124};
|
||||
|
||||
}
|
||||
|
||||
+225
-218
@@ -5,65 +5,70 @@ digraph safeCalls_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
subgraph cluster_1 {
|
||||
color=blue
|
||||
1 [label="Enter block"];
|
||||
2 [label="Const: String()"];
|
||||
3 [label="Jump: ^foo String()"];
|
||||
4 [label="Stub" style="filled" fillcolor=gray];
|
||||
5 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
6 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
0 [label="Enter file safeCalls.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file safeCalls.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1} [color=green];
|
||||
|
||||
subgraph cluster_1 {
|
||||
color=red
|
||||
2 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
subgraph cluster_2 {
|
||||
color=blue
|
||||
3 [label="Enter block"];
|
||||
4 [label="Const: String()"];
|
||||
5 [label="Jump: ^foo String()"];
|
||||
6 [label="Stub" style="filled" fillcolor=gray];
|
||||
7 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
8 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1};
|
||||
1 -> {2};
|
||||
2 -> {3};
|
||||
3 -> {6};
|
||||
3 -> {4} [style=dotted];
|
||||
4 -> {5} [style=dotted];
|
||||
3 -> {4};
|
||||
4 -> {5};
|
||||
5 -> {8};
|
||||
5 -> {6} [style=dotted];
|
||||
6 -> {7} [style=dotted];
|
||||
7 -> {8} [style=dotted];
|
||||
|
||||
subgraph cluster_2 {
|
||||
subgraph cluster_3 {
|
||||
color=red
|
||||
7 [label="Enter function let" style="filled" fillcolor=red];
|
||||
subgraph cluster_3 {
|
||||
9 [label="Enter function let" style="filled" fillcolor=red];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
8 [label="Enter block"];
|
||||
9 [label="Exit block"];
|
||||
10 [label="Enter block"];
|
||||
11 [label="Exit block"];
|
||||
}
|
||||
10 [label="Exit function let" style="filled" fillcolor=red];
|
||||
12 [label="Exit function let" style="filled" fillcolor=red];
|
||||
}
|
||||
7 -> {8};
|
||||
8 -> {9};
|
||||
9 -> {10};
|
||||
|
||||
subgraph cluster_4 {
|
||||
color=red
|
||||
11 [label="Enter function test" style="filled" fillcolor=red];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
12 [label="Enter block"];
|
||||
13 [label="Access variable R|<local>/x|"];
|
||||
14 [label="Enter safe call"];
|
||||
15 [label="Access variable R|<local>/x|"];
|
||||
16 [label="Smart cast: R|<local>/x|"];
|
||||
17 [label="Access variable R|kotlin/String.length|"];
|
||||
18 [label="Const: Int(1)"];
|
||||
19 [label="Equality operator =="];
|
||||
20 [label="Function call: $subj$.R|/foo|(...)" style="filled" fillcolor=yellow];
|
||||
21 [label="Exit safe call"];
|
||||
22 [label="Access variable R|<local>/x|"];
|
||||
23 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
|
||||
24 [label="Exit block"];
|
||||
}
|
||||
25 [label="Exit function test" style="filled" fillcolor=red];
|
||||
}
|
||||
10 -> {11};
|
||||
11 -> {12};
|
||||
12 -> {13};
|
||||
13 -> {14 21};
|
||||
|
||||
subgraph cluster_5 {
|
||||
color=red
|
||||
13 [label="Enter function test" style="filled" fillcolor=red];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
14 [label="Enter block"];
|
||||
15 [label="Access variable R|<local>/x|"];
|
||||
16 [label="Enter safe call"];
|
||||
17 [label="Access variable R|<local>/x|"];
|
||||
18 [label="Smart cast: R|<local>/x|"];
|
||||
19 [label="Access variable R|kotlin/String.length|"];
|
||||
20 [label="Const: Int(1)"];
|
||||
21 [label="Equality operator =="];
|
||||
22 [label="Function call: $subj$.R|/foo|(...)" style="filled" fillcolor=yellow];
|
||||
23 [label="Exit safe call"];
|
||||
24 [label="Access variable R|<local>/x|"];
|
||||
25 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
|
||||
26 [label="Exit block"];
|
||||
}
|
||||
27 [label="Exit function test" style="filled" fillcolor=red];
|
||||
}
|
||||
13 -> {14};
|
||||
14 -> {15};
|
||||
15 -> {16};
|
||||
15 -> {16 23};
|
||||
16 -> {17};
|
||||
17 -> {18};
|
||||
18 -> {19};
|
||||
@@ -73,246 +78,248 @@ digraph safeCalls_kt {
|
||||
22 -> {23};
|
||||
23 -> {24};
|
||||
24 -> {25};
|
||||
|
||||
subgraph cluster_6 {
|
||||
color=red
|
||||
26 [label="Enter class A" style="filled" fillcolor=red];
|
||||
27 [label="Exit class A" style="filled" fillcolor=red];
|
||||
}
|
||||
26 -> {27} [color=green];
|
||||
25 -> {26};
|
||||
26 -> {27};
|
||||
|
||||
subgraph cluster_7 {
|
||||
color=red
|
||||
28 [label="Enter function bar" style="filled" fillcolor=red];
|
||||
29 [label="Exit function bar" style="filled" fillcolor=red];
|
||||
28 [label="Enter class A" style="filled" fillcolor=red];
|
||||
29 [label="Exit class A" style="filled" fillcolor=red];
|
||||
}
|
||||
28 -> {29};
|
||||
28 -> {29} [color=green];
|
||||
|
||||
subgraph cluster_8 {
|
||||
color=red
|
||||
30 [label="Enter function bool" style="filled" fillcolor=red];
|
||||
31 [label="Exit function bool" style="filled" fillcolor=red];
|
||||
30 [label="Enter function bar" style="filled" fillcolor=red];
|
||||
31 [label="Exit function bar" style="filled" fillcolor=red];
|
||||
}
|
||||
30 -> {31};
|
||||
|
||||
subgraph cluster_9 {
|
||||
color=red
|
||||
32 [label="Enter function id" style="filled" fillcolor=red];
|
||||
33 [label="Exit function id" style="filled" fillcolor=red];
|
||||
32 [label="Enter function bool" style="filled" fillcolor=red];
|
||||
33 [label="Exit function bool" style="filled" fillcolor=red];
|
||||
}
|
||||
32 -> {33};
|
||||
|
||||
subgraph cluster_10 {
|
||||
color=red
|
||||
34 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
35 [label="Enter block"];
|
||||
36 [label="Access variable R|<local>/x|"];
|
||||
37 [label="Type operator: (R|<local>/x| as? R|A|)"];
|
||||
38 [label="Enter safe call"];
|
||||
39 [label="Access variable R|<local>/x|"];
|
||||
40 [label="Smart cast: R|<local>/x|"];
|
||||
41 [label="Function call: $subj$.R|/A.bar|(...)" style="filled" fillcolor=yellow];
|
||||
42 [label="Exit safe call"];
|
||||
43 [label="Exit block"];
|
||||
}
|
||||
44 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
34 [label="Enter function id" style="filled" fillcolor=red];
|
||||
35 [label="Exit function id" style="filled" fillcolor=red];
|
||||
}
|
||||
34 -> {35};
|
||||
35 -> {36};
|
||||
|
||||
subgraph cluster_11 {
|
||||
color=red
|
||||
36 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
37 [label="Enter block"];
|
||||
38 [label="Access variable R|<local>/x|"];
|
||||
39 [label="Type operator: (R|<local>/x| as? R|A|)"];
|
||||
40 [label="Enter safe call"];
|
||||
41 [label="Access variable R|<local>/x|"];
|
||||
42 [label="Smart cast: R|<local>/x|"];
|
||||
43 [label="Function call: $subj$.R|/A.bar|(...)" style="filled" fillcolor=yellow];
|
||||
44 [label="Exit safe call"];
|
||||
45 [label="Exit block"];
|
||||
}
|
||||
46 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
}
|
||||
36 -> {37};
|
||||
37 -> {38 42};
|
||||
37 -> {38};
|
||||
38 -> {39};
|
||||
39 -> {40};
|
||||
39 -> {40 44};
|
||||
40 -> {41};
|
||||
41 -> {42};
|
||||
42 -> {43};
|
||||
43 -> {44};
|
||||
|
||||
subgraph cluster_12 {
|
||||
color=red
|
||||
45 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
46 [label="Enter block"];
|
||||
47 [label="Access variable R|<local>/x|"];
|
||||
48 [label="Type operator: (R|<local>/x| as? R|A|)"];
|
||||
49 [label="Enter safe call"];
|
||||
50 [label="Access variable R|<local>/x|"];
|
||||
51 [label="Smart cast: R|<local>/x|"];
|
||||
52 [label="Function call: $subj$.R|/A.bar|(...)" style="filled" fillcolor=yellow];
|
||||
53 [label="Enter safe call"];
|
||||
54 [label="Access variable R|<local>/x|"];
|
||||
55 [label="Smart cast: R|<local>/x|"];
|
||||
56 [label="Function call: R|<local>/x|.R|/A.bool|()" style="filled" fillcolor=yellow];
|
||||
57 [label="Function call: $subj$.R|/foo|(...)" style="filled" fillcolor=yellow];
|
||||
58 [label="Enter safe call"];
|
||||
59 [label="Postponed enter to lambda"];
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
60 [label="Enter function <anonymous>" style="filled" fillcolor=red];
|
||||
subgraph cluster_15 {
|
||||
color=blue
|
||||
61 [label="Enter block"];
|
||||
62 [label="Access variable R|<local>/x|"];
|
||||
63 [label="Smart cast: R|<local>/x|"];
|
||||
64 [label="Function call: R|<local>/x|.R|/A.bool|()" style="filled" fillcolor=yellow];
|
||||
65 [label="Exit block"];
|
||||
}
|
||||
66 [label="Exit function <anonymous>" style="filled" fillcolor=red];
|
||||
}
|
||||
67 [label="Postponed exit from lambda"];
|
||||
68 [label="Function call: $subj$.R|/let|(...)" style="filled" fillcolor=yellow];
|
||||
69 [label="Exit safe call"];
|
||||
70 [label="Exit safe call"];
|
||||
71 [label="Exit safe call"];
|
||||
72 [label="Access variable R|<local>/x|"];
|
||||
73 [label="Function call: R|<local>/x|.<Unresolved name: bool>#()" style="filled" fillcolor=yellow];
|
||||
74 [label="Exit block"];
|
||||
}
|
||||
75 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
}
|
||||
44 -> {45};
|
||||
45 -> {46};
|
||||
46 -> {47};
|
||||
|
||||
subgraph cluster_13 {
|
||||
color=red
|
||||
47 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
48 [label="Enter block"];
|
||||
49 [label="Access variable R|<local>/x|"];
|
||||
50 [label="Type operator: (R|<local>/x| as? R|A|)"];
|
||||
51 [label="Enter safe call"];
|
||||
52 [label="Access variable R|<local>/x|"];
|
||||
53 [label="Smart cast: R|<local>/x|"];
|
||||
54 [label="Function call: $subj$.R|/A.bar|(...)" style="filled" fillcolor=yellow];
|
||||
55 [label="Enter safe call"];
|
||||
56 [label="Access variable R|<local>/x|"];
|
||||
57 [label="Smart cast: R|<local>/x|"];
|
||||
58 [label="Function call: R|<local>/x|.R|/A.bool|()" style="filled" fillcolor=yellow];
|
||||
59 [label="Function call: $subj$.R|/foo|(...)" style="filled" fillcolor=yellow];
|
||||
60 [label="Enter safe call"];
|
||||
61 [label="Postponed enter to lambda"];
|
||||
subgraph cluster_15 {
|
||||
color=blue
|
||||
62 [label="Enter function <anonymous>" style="filled" fillcolor=red];
|
||||
subgraph cluster_16 {
|
||||
color=blue
|
||||
63 [label="Enter block"];
|
||||
64 [label="Access variable R|<local>/x|"];
|
||||
65 [label="Smart cast: R|<local>/x|"];
|
||||
66 [label="Function call: R|<local>/x|.R|/A.bool|()" style="filled" fillcolor=yellow];
|
||||
67 [label="Exit block"];
|
||||
}
|
||||
68 [label="Exit function <anonymous>" style="filled" fillcolor=red];
|
||||
}
|
||||
69 [label="Postponed exit from lambda"];
|
||||
70 [label="Function call: $subj$.R|/let|(...)" style="filled" fillcolor=yellow];
|
||||
71 [label="Exit safe call"];
|
||||
72 [label="Exit safe call"];
|
||||
73 [label="Exit safe call"];
|
||||
74 [label="Access variable R|<local>/x|"];
|
||||
75 [label="Function call: R|<local>/x|.<Unresolved name: bool>#()" style="filled" fillcolor=yellow];
|
||||
76 [label="Exit block"];
|
||||
}
|
||||
77 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
}
|
||||
47 -> {48};
|
||||
48 -> {49 69};
|
||||
48 -> {49};
|
||||
49 -> {50};
|
||||
50 -> {51};
|
||||
50 -> {51 71};
|
||||
51 -> {52};
|
||||
52 -> {53 69};
|
||||
52 -> {53};
|
||||
53 -> {54};
|
||||
54 -> {55};
|
||||
54 -> {55 71};
|
||||
55 -> {56};
|
||||
56 -> {57};
|
||||
57 -> {58 70};
|
||||
57 -> {58};
|
||||
58 -> {59};
|
||||
59 -> {60 67 68};
|
||||
59 -> {60} [style=dashed];
|
||||
59 -> {60 72};
|
||||
60 -> {61};
|
||||
61 -> {62};
|
||||
61 -> {62 69 70};
|
||||
61 -> {62} [style=dashed];
|
||||
62 -> {63};
|
||||
63 -> {64};
|
||||
64 -> {65};
|
||||
65 -> {66};
|
||||
66 -> {67};
|
||||
67 -> {68};
|
||||
68 -> {71};
|
||||
69 -> {70};
|
||||
70 -> {71};
|
||||
70 -> {73};
|
||||
71 -> {72};
|
||||
72 -> {73};
|
||||
73 -> {74};
|
||||
74 -> {75};
|
||||
|
||||
subgraph cluster_16 {
|
||||
color=red
|
||||
76 [label="Enter function test_4" style="filled" fillcolor=red];
|
||||
subgraph cluster_17 {
|
||||
color=blue
|
||||
77 [label="Enter block"];
|
||||
78 [label="Access variable R|<local>/x|"];
|
||||
79 [label="Enter safe call"];
|
||||
80 [label="Function call: $subj$.R|/A.id|()" style="filled" fillcolor=yellow];
|
||||
81 [label="Enter safe call"];
|
||||
82 [label="Function call: $subj$.R|/A.bool|()" style="filled" fillcolor=yellow];
|
||||
83 [label="Exit safe call"];
|
||||
84 [label="Exit safe call"];
|
||||
85 [label="Access variable R|<local>/x|"];
|
||||
86 [label="Function call: R|<local>/x|.R|/A.id<Inapplicable(UNSAFE_CALL): /A.id>#|()" style="filled" fillcolor=yellow];
|
||||
87 [label="Exit block"];
|
||||
}
|
||||
88 [label="Exit function test_4" style="filled" fillcolor=red];
|
||||
}
|
||||
75 -> {76};
|
||||
76 -> {77};
|
||||
77 -> {78};
|
||||
78 -> {79 83};
|
||||
|
||||
subgraph cluster_17 {
|
||||
color=red
|
||||
78 [label="Enter function test_4" style="filled" fillcolor=red];
|
||||
subgraph cluster_18 {
|
||||
color=blue
|
||||
79 [label="Enter block"];
|
||||
80 [label="Access variable R|<local>/x|"];
|
||||
81 [label="Enter safe call"];
|
||||
82 [label="Function call: $subj$.R|/A.id|()" style="filled" fillcolor=yellow];
|
||||
83 [label="Enter safe call"];
|
||||
84 [label="Function call: $subj$.R|/A.bool|()" style="filled" fillcolor=yellow];
|
||||
85 [label="Exit safe call"];
|
||||
86 [label="Exit safe call"];
|
||||
87 [label="Access variable R|<local>/x|"];
|
||||
88 [label="Function call: R|<local>/x|.R|/A.id<Inapplicable(UNSAFE_CALL): /A.id>#|()" style="filled" fillcolor=yellow];
|
||||
89 [label="Exit block"];
|
||||
}
|
||||
90 [label="Exit function test_4" style="filled" fillcolor=red];
|
||||
}
|
||||
78 -> {79};
|
||||
79 -> {80};
|
||||
80 -> {81 83};
|
||||
80 -> {81 85};
|
||||
81 -> {82};
|
||||
82 -> {84};
|
||||
82 -> {83 85};
|
||||
83 -> {84};
|
||||
84 -> {85};
|
||||
84 -> {86};
|
||||
85 -> {86};
|
||||
86 -> {87};
|
||||
87 -> {88};
|
||||
|
||||
subgraph cluster_18 {
|
||||
color=red
|
||||
89 [label="Enter function boo" style="filled" fillcolor=red];
|
||||
subgraph cluster_19 {
|
||||
color=blue
|
||||
90 [label="Enter block"];
|
||||
91 [label="Exit block"];
|
||||
}
|
||||
92 [label="Exit function boo" style="filled" fillcolor=red];
|
||||
}
|
||||
88 -> {89};
|
||||
89 -> {90};
|
||||
90 -> {91};
|
||||
91 -> {92};
|
||||
|
||||
subgraph cluster_20 {
|
||||
subgraph cluster_19 {
|
||||
color=red
|
||||
93 [label="Enter function test_5" style="filled" fillcolor=red];
|
||||
subgraph cluster_21 {
|
||||
91 [label="Enter function boo" style="filled" fillcolor=red];
|
||||
subgraph cluster_20 {
|
||||
color=blue
|
||||
94 [label="Enter block"];
|
||||
95 [label="Access variable R|<local>/x|"];
|
||||
96 [label="Enter safe call"];
|
||||
97 [label="Postponed enter to lambda"];
|
||||
subgraph cluster_22 {
|
||||
color=blue
|
||||
98 [label="Enter function <anonymous>" style="filled" fillcolor=red];
|
||||
subgraph cluster_23 {
|
||||
color=blue
|
||||
99 [label="Enter block"];
|
||||
100 [label="Jump: ^test_5 Unit"];
|
||||
101 [label="Stub" style="filled" fillcolor=gray];
|
||||
102 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
103 [label="Exit function <anonymous>" style="filled" fillcolor=gray];
|
||||
}
|
||||
104 [label="Postponed exit from lambda" style="filled" fillcolor=gray];
|
||||
105 [label="Function call: $subj$.R|kotlin/let|<R|A|, R|kotlin/Nothing|>(...)" style="filled" fillcolor=gray];
|
||||
106 [label="Stub" style="filled" fillcolor=gray];
|
||||
107 [label="Enter safe call" style="filled" fillcolor=gray];
|
||||
108 [label="Access variable R|<local>/x|" style="filled" fillcolor=gray];
|
||||
109 [label="Smart cast: R|<local>/x|" style="filled" fillcolor=gray];
|
||||
110 [label="Function call: R|<local>/x|.R|/A.bool|()" style="filled" fillcolor=gray];
|
||||
111 [label="Function call: $subj$.R|/boo|(...)" style="filled" fillcolor=gray];
|
||||
112 [label="Exit safe call"];
|
||||
113 [label="Exit safe call"];
|
||||
114 [label="Access variable R|<local>/x|"];
|
||||
115 [label="Function call: R|<local>/x|.R|/A.id<Inapplicable(UNSAFE_CALL): /A.id>#|()" style="filled" fillcolor=yellow];
|
||||
116 [label="Exit block"];
|
||||
92 [label="Enter block"];
|
||||
93 [label="Exit block"];
|
||||
}
|
||||
117 [label="Exit function test_5" style="filled" fillcolor=red];
|
||||
94 [label="Exit function boo" style="filled" fillcolor=red];
|
||||
}
|
||||
91 -> {92};
|
||||
92 -> {93};
|
||||
93 -> {94};
|
||||
94 -> {95};
|
||||
95 -> {96 112};
|
||||
|
||||
subgraph cluster_21 {
|
||||
color=red
|
||||
95 [label="Enter function test_5" style="filled" fillcolor=red];
|
||||
subgraph cluster_22 {
|
||||
color=blue
|
||||
96 [label="Enter block"];
|
||||
97 [label="Access variable R|<local>/x|"];
|
||||
98 [label="Enter safe call"];
|
||||
99 [label="Postponed enter to lambda"];
|
||||
subgraph cluster_23 {
|
||||
color=blue
|
||||
100 [label="Enter function <anonymous>" style="filled" fillcolor=red];
|
||||
subgraph cluster_24 {
|
||||
color=blue
|
||||
101 [label="Enter block"];
|
||||
102 [label="Jump: ^test_5 Unit"];
|
||||
103 [label="Stub" style="filled" fillcolor=gray];
|
||||
104 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
105 [label="Exit function <anonymous>" style="filled" fillcolor=gray];
|
||||
}
|
||||
106 [label="Postponed exit from lambda" style="filled" fillcolor=gray];
|
||||
107 [label="Function call: $subj$.R|kotlin/let|<R|A|, R|kotlin/Nothing|>(...)" style="filled" fillcolor=gray];
|
||||
108 [label="Stub" style="filled" fillcolor=gray];
|
||||
109 [label="Enter safe call" style="filled" fillcolor=gray];
|
||||
110 [label="Access variable R|<local>/x|" style="filled" fillcolor=gray];
|
||||
111 [label="Smart cast: R|<local>/x|" style="filled" fillcolor=gray];
|
||||
112 [label="Function call: R|<local>/x|.R|/A.bool|()" style="filled" fillcolor=gray];
|
||||
113 [label="Function call: $subj$.R|/boo|(...)" style="filled" fillcolor=gray];
|
||||
114 [label="Exit safe call"];
|
||||
115 [label="Exit safe call"];
|
||||
116 [label="Access variable R|<local>/x|"];
|
||||
117 [label="Function call: R|<local>/x|.R|/A.id<Inapplicable(UNSAFE_CALL): /A.id>#|()" style="filled" fillcolor=yellow];
|
||||
118 [label="Exit block"];
|
||||
}
|
||||
119 [label="Exit function test_5" style="filled" fillcolor=red];
|
||||
}
|
||||
95 -> {96};
|
||||
96 -> {97};
|
||||
97 -> {98};
|
||||
97 -> {104 105} [style=dotted];
|
||||
97 -> {98} [style=dashed];
|
||||
97 -> {98 114};
|
||||
98 -> {99};
|
||||
99 -> {100};
|
||||
100 -> {117};
|
||||
100 -> {101} [style=dotted];
|
||||
101 -> {102} [style=dotted];
|
||||
99 -> {106 107} [style=dotted];
|
||||
99 -> {100} [style=dashed];
|
||||
100 -> {101};
|
||||
101 -> {102};
|
||||
102 -> {119};
|
||||
102 -> {103} [style=dotted];
|
||||
103 -> {104} [style=dotted];
|
||||
104 -> {105} [style=dotted];
|
||||
105 -> {106} [style=dotted];
|
||||
106 -> {107 112} [style=dotted];
|
||||
106 -> {107} [style=dotted];
|
||||
107 -> {108} [style=dotted];
|
||||
108 -> {109} [style=dotted];
|
||||
108 -> {109 114} [style=dotted];
|
||||
109 -> {110} [style=dotted];
|
||||
110 -> {111} [style=dotted];
|
||||
111 -> {113} [style=dotted];
|
||||
112 -> {113};
|
||||
113 -> {114};
|
||||
111 -> {112} [style=dotted];
|
||||
112 -> {113} [style=dotted];
|
||||
113 -> {115} [style=dotted];
|
||||
114 -> {115};
|
||||
115 -> {116};
|
||||
116 -> {117};
|
||||
117 -> {118};
|
||||
118 -> {119};
|
||||
|
||||
}
|
||||
|
||||
+61
-54
@@ -5,87 +5,94 @@ digraph smartCastInInit_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter class I" style="filled" fillcolor=red];
|
||||
1 [label="Exit class I" style="filled" fillcolor=red];
|
||||
0 [label="Enter file smartCastInInit.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file smartCastInInit.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1} [color=green];
|
||||
|
||||
subgraph cluster_1 {
|
||||
color=red
|
||||
2 [label="Enter class S" style="filled" fillcolor=red];
|
||||
3 [label="Exit class S" style="filled" fillcolor=red];
|
||||
2 [label="Enter class I" style="filled" fillcolor=red];
|
||||
3 [label="Exit class I" style="filled" fillcolor=red];
|
||||
}
|
||||
2 -> {3} [color=green];
|
||||
|
||||
subgraph cluster_2 {
|
||||
color=red
|
||||
4 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
5 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
4 [label="Enter class S" style="filled" fillcolor=red];
|
||||
5 [label="Exit class S" style="filled" fillcolor=red];
|
||||
}
|
||||
4 -> {5};
|
||||
4 -> {5} [color=green];
|
||||
|
||||
subgraph cluster_3 {
|
||||
color=red
|
||||
6 [label="Enter function s" style="filled" fillcolor=red];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
7 [label="Enter block"];
|
||||
8 [label="Function call: R|kotlin/TODO|()" style="filled" fillcolor=yellow];
|
||||
9 [label="Stub" style="filled" fillcolor=gray];
|
||||
10 [label="Jump: ^s R|kotlin/TODO|()" style="filled" fillcolor=gray];
|
||||
11 [label="Stub" style="filled" fillcolor=gray];
|
||||
12 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
13 [label="Exit function s" style="filled" fillcolor=gray];
|
||||
6 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
7 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
}
|
||||
6 -> {7};
|
||||
7 -> {8};
|
||||
8 -> {9} [style=dotted];
|
||||
9 -> {10} [style=dotted];
|
||||
10 -> {11 13} [style=dotted];
|
||||
11 -> {12} [style=dotted];
|
||||
12 -> {13} [style=dotted];
|
||||
|
||||
subgraph cluster_5 {
|
||||
subgraph cluster_4 {
|
||||
color=red
|
||||
14 [label="Enter class Main" style="filled" fillcolor=red];
|
||||
subgraph cluster_6 {
|
||||
8 [label="Enter function s" style="filled" fillcolor=red];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
15 [label="Enter init block" style="filled" fillcolor=red];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
16 [label="Enter block"];
|
||||
17 [label="Function call: R|/s|()" style="filled" fillcolor=yellow];
|
||||
18 [label="Assignment: R|/Main.x|"];
|
||||
19 [label="Access variable R|/Main.x|"];
|
||||
20 [label="Smart cast: this@R|/Main|.R|/Main.x|"];
|
||||
21 [label="Function call: this@R|/Main|.R|/Main.x|.R|/S.foo|()" style="filled" fillcolor=yellow];
|
||||
22 [label="Exit block"];
|
||||
}
|
||||
23 [label="Exit init block" style="filled" fillcolor=red];
|
||||
9 [label="Enter block"];
|
||||
10 [label="Function call: R|kotlin/TODO|()" style="filled" fillcolor=yellow];
|
||||
11 [label="Stub" style="filled" fillcolor=gray];
|
||||
12 [label="Jump: ^s R|kotlin/TODO|()" style="filled" fillcolor=gray];
|
||||
13 [label="Stub" style="filled" fillcolor=gray];
|
||||
14 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
24 [label="Enter function <init>" style="filled" fillcolor=red];
|
||||
25 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
|
||||
26 [label="Exit function <init>" style="filled" fillcolor=red];
|
||||
}
|
||||
27 [label="Exit class Main" style="filled" fillcolor=red];
|
||||
15 [label="Exit function s" style="filled" fillcolor=gray];
|
||||
}
|
||||
14 -> {15} [color=green];
|
||||
14 -> {27} [style=dotted];
|
||||
14 -> {15 24} [style=dashed];
|
||||
15 -> {16};
|
||||
16 -> {17};
|
||||
8 -> {9};
|
||||
9 -> {10};
|
||||
10 -> {11} [style=dotted];
|
||||
11 -> {12} [style=dotted];
|
||||
12 -> {13 15} [style=dotted];
|
||||
13 -> {14} [style=dotted];
|
||||
14 -> {15} [style=dotted];
|
||||
|
||||
subgraph cluster_6 {
|
||||
color=red
|
||||
16 [label="Enter class Main" style="filled" fillcolor=red];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
17 [label="Enter init block" style="filled" fillcolor=red];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
18 [label="Enter block"];
|
||||
19 [label="Function call: R|/s|()" style="filled" fillcolor=yellow];
|
||||
20 [label="Assignment: R|/Main.x|"];
|
||||
21 [label="Access variable R|/Main.x|"];
|
||||
22 [label="Smart cast: this@R|/Main|.R|/Main.x|"];
|
||||
23 [label="Function call: this@R|/Main|.R|/Main.x|.R|/S.foo|()" style="filled" fillcolor=yellow];
|
||||
24 [label="Exit block"];
|
||||
}
|
||||
25 [label="Exit init block" style="filled" fillcolor=red];
|
||||
}
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
26 [label="Enter function <init>" style="filled" fillcolor=red];
|
||||
27 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
|
||||
28 [label="Exit function <init>" style="filled" fillcolor=red];
|
||||
}
|
||||
29 [label="Exit class Main" style="filled" fillcolor=red];
|
||||
}
|
||||
16 -> {17} [color=green];
|
||||
16 -> {29} [style=dotted];
|
||||
16 -> {17 26} [style=dashed];
|
||||
17 -> {18};
|
||||
18 -> {19};
|
||||
19 -> {20};
|
||||
20 -> {21};
|
||||
21 -> {22};
|
||||
22 -> {23};
|
||||
23 -> {24} [color=green];
|
||||
23 -> {24};
|
||||
24 -> {25};
|
||||
25 -> {26};
|
||||
26 -> {27} [color=green];
|
||||
25 -> {26} [color=green];
|
||||
26 -> {27};
|
||||
27 -> {28};
|
||||
28 -> {29} [color=green];
|
||||
|
||||
}
|
||||
|
||||
+156
-149
@@ -5,127 +5,134 @@ digraph smartcastInByClause_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter class A" style="filled" fillcolor=red];
|
||||
subgraph cluster_1 {
|
||||
color=blue
|
||||
1 [label="Enter property" style="filled" fillcolor=red];
|
||||
2 [label="Access variable R|<local>/path|"];
|
||||
3 [label="Exit property" style="filled" fillcolor=red];
|
||||
}
|
||||
0 [label="Enter file smartcastInByClause.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file smartcastInByClause.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1} [color=green];
|
||||
|
||||
subgraph cluster_1 {
|
||||
color=red
|
||||
2 [label="Enter class A" style="filled" fillcolor=red];
|
||||
subgraph cluster_2 {
|
||||
color=blue
|
||||
4 [label="Enter property" style="filled" fillcolor=red];
|
||||
5 [label="Access variable R|<local>/index|"];
|
||||
6 [label="Exit property" style="filled" fillcolor=red];
|
||||
3 [label="Enter property" style="filled" fillcolor=red];
|
||||
4 [label="Access variable R|<local>/path|"];
|
||||
5 [label="Exit property" style="filled" fillcolor=red];
|
||||
}
|
||||
subgraph cluster_3 {
|
||||
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];
|
||||
6 [label="Enter property" style="filled" fillcolor=red];
|
||||
7 [label="Access variable R|<local>/index|"];
|
||||
8 [label="Exit property" style="filled" fillcolor=red];
|
||||
}
|
||||
10 [label="Exit class A" style="filled" fillcolor=red];
|
||||
subgraph cluster_4 {
|
||||
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];
|
||||
}
|
||||
12 [label="Exit class A" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1} [color=green];
|
||||
0 -> {10} [style=dotted];
|
||||
0 -> {1 4 7} [style=dashed];
|
||||
1 -> {2};
|
||||
2 -> {3};
|
||||
3 -> {4} [color=green];
|
||||
2 -> {3} [color=green];
|
||||
2 -> {12} [style=dotted];
|
||||
2 -> {3 6 9} [style=dashed];
|
||||
3 -> {4};
|
||||
4 -> {5};
|
||||
5 -> {6};
|
||||
6 -> {7} [color=green];
|
||||
5 -> {6} [color=green];
|
||||
6 -> {7};
|
||||
7 -> {8};
|
||||
8 -> {9};
|
||||
9 -> {10} [color=green];
|
||||
|
||||
subgraph cluster_4 {
|
||||
color=red
|
||||
11 [label="Enter class Base" style="filled" fillcolor=red];
|
||||
12 [label="Exit class Base" style="filled" fillcolor=red];
|
||||
}
|
||||
8 -> {9} [color=green];
|
||||
9 -> {10};
|
||||
10 -> {11};
|
||||
11 -> {12} [color=green];
|
||||
|
||||
subgraph cluster_5 {
|
||||
color=red
|
||||
13 [label="Enter class Derived" style="filled" fillcolor=red];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
14 [label="Enter property" style="filled" fillcolor=red];
|
||||
15 [label="Access variable R|<local>/index|"];
|
||||
16 [label="Exit property" style="filled" fillcolor=red];
|
||||
}
|
||||
subgraph cluster_7 {
|
||||
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];
|
||||
}
|
||||
20 [label="Exit class Derived" style="filled" fillcolor=red];
|
||||
13 [label="Enter class Base" style="filled" fillcolor=red];
|
||||
14 [label="Exit class Base" style="filled" fillcolor=red];
|
||||
}
|
||||
13 -> {14} [color=green];
|
||||
13 -> {20} [style=dotted];
|
||||
13 -> {14 17} [style=dashed];
|
||||
14 -> {15};
|
||||
15 -> {16};
|
||||
16 -> {17} [color=green];
|
||||
17 -> {18};
|
||||
18 -> {19};
|
||||
19 -> {20} [color=green];
|
||||
|
||||
subgraph cluster_8 {
|
||||
subgraph cluster_6 {
|
||||
color=red
|
||||
21 [label="Enter function test" style="filled" fillcolor=red];
|
||||
subgraph cluster_9 {
|
||||
15 [label="Enter class Derived" style="filled" fillcolor=red];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
22 [label="Enter block"];
|
||||
23 [label="Access variable R|<local>/a|"];
|
||||
24 [label="Enter safe call"];
|
||||
25 [label="Access variable R|/A.path|"];
|
||||
26 [label="Exit safe call"];
|
||||
27 [label="Exit lhs of ?:"];
|
||||
28 [label="Enter rhs of ?:"];
|
||||
29 [label="Const: Null(null)"];
|
||||
30 [label="Jump: ^test Null(null)"];
|
||||
31 [label="Stub" style="filled" fillcolor=gray];
|
||||
32 [label="Lhs of ?: is not null"];
|
||||
33 [label="Exit ?:"];
|
||||
34 [label="Variable declaration: lval path: R|kotlin/String|"];
|
||||
35 [label="Access variable R|<local>/a|"];
|
||||
36 [label="Smart cast: R|<local>/a|"];
|
||||
37 [label="Access variable R|/A.index|"];
|
||||
38 [label="Function call: R|/takeInt|(...)" style="filled" fillcolor=yellow];
|
||||
39 [label="Enter anonymous object"];
|
||||
subgraph cluster_10 {
|
||||
16 [label="Enter property" style="filled" fillcolor=red];
|
||||
17 [label="Access variable R|<local>/index|"];
|
||||
18 [label="Exit property" style="filled" fillcolor=red];
|
||||
}
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
19 [label="Enter function <init>" style="filled" fillcolor=red];
|
||||
20 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
|
||||
21 [label="Exit function <init>" style="filled" fillcolor=red];
|
||||
}
|
||||
22 [label="Exit class Derived" style="filled" fillcolor=red];
|
||||
}
|
||||
15 -> {16} [color=green];
|
||||
15 -> {22} [style=dotted];
|
||||
15 -> {16 19} [style=dashed];
|
||||
16 -> {17};
|
||||
17 -> {18};
|
||||
18 -> {19} [color=green];
|
||||
19 -> {20};
|
||||
20 -> {21};
|
||||
21 -> {22} [color=green];
|
||||
|
||||
subgraph cluster_9 {
|
||||
color=red
|
||||
23 [label="Enter function test" style="filled" fillcolor=red];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
24 [label="Enter block"];
|
||||
25 [label="Access variable R|<local>/a|"];
|
||||
26 [label="Enter safe call"];
|
||||
27 [label="Access variable R|/A.path|"];
|
||||
28 [label="Exit safe call"];
|
||||
29 [label="Exit lhs of ?:"];
|
||||
30 [label="Enter rhs of ?:"];
|
||||
31 [label="Const: Null(null)"];
|
||||
32 [label="Jump: ^test Null(null)"];
|
||||
33 [label="Stub" style="filled" fillcolor=gray];
|
||||
34 [label="Lhs of ?: is not null"];
|
||||
35 [label="Exit ?:"];
|
||||
36 [label="Variable declaration: lval path: R|kotlin/String|"];
|
||||
37 [label="Access variable R|<local>/a|"];
|
||||
38 [label="Smart cast: R|<local>/a|"];
|
||||
39 [label="Access variable R|/A.index|"];
|
||||
40 [label="Function call: R|/takeInt|(...)" style="filled" fillcolor=yellow];
|
||||
41 [label="Enter anonymous object"];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
40 [label="Enter class <anonymous object>" style="filled" fillcolor=red];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
41 [label="Enter field" style="filled" fillcolor=red];
|
||||
42 [label="Access variable R|<local>/a|"];
|
||||
43 [label="Smart cast: R|<local>/a|"];
|
||||
44 [label="Access variable R|/A.index|"];
|
||||
45 [label="Function call: R|/Derived.Derived|(...)" style="filled" fillcolor=yellow];
|
||||
46 [label="Exit field" style="filled" fillcolor=red];
|
||||
}
|
||||
42 [label="Enter class <anonymous object>" style="filled" fillcolor=red];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
47 [label="Enter property" style="filled" fillcolor=red];
|
||||
48 [label="Access variable R|<local>/a|"];
|
||||
49 [label="Smart cast: R|<local>/a|"];
|
||||
50 [label="Access variable R|/A.index|"];
|
||||
51 [label="Exit property" style="filled" fillcolor=red];
|
||||
43 [label="Enter field" style="filled" fillcolor=red];
|
||||
44 [label="Access variable R|<local>/a|"];
|
||||
45 [label="Smart cast: R|<local>/a|"];
|
||||
46 [label="Access variable R|/A.index|"];
|
||||
47 [label="Function call: R|/Derived.Derived|(...)" style="filled" fillcolor=yellow];
|
||||
48 [label="Exit field" style="filled" fillcolor=red];
|
||||
}
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
52 [label="Enter function <init>" style="filled" fillcolor=red];
|
||||
53 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
|
||||
54 [label="Exit function <init>" style="filled" fillcolor=red];
|
||||
49 [label="Enter property" style="filled" fillcolor=red];
|
||||
50 [label="Access variable R|<local>/a|"];
|
||||
51 [label="Smart cast: R|<local>/a|"];
|
||||
52 [label="Access variable R|/A.index|"];
|
||||
53 [label="Exit property" style="filled" fillcolor=red];
|
||||
}
|
||||
55 [label="Exit class <anonymous object>" style="filled" fillcolor=red];
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
54 [label="Enter function <init>" style="filled" fillcolor=red];
|
||||
55 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
|
||||
56 [label="Exit function <init>" style="filled" fillcolor=red];
|
||||
}
|
||||
57 [label="Exit class <anonymous object>" style="filled" fillcolor=red];
|
||||
}
|
||||
56 [label="Exit anonymous object expression"];
|
||||
57 [label="Jump: ^test object : R|Base| {
|
||||
58 [label="Exit anonymous object expression"];
|
||||
59 [label="Jump: ^test object : R|Base| {
|
||||
private constructor(): R|<anonymous>| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
@@ -141,95 +148,95 @@ digraph smartcastInByClause_kt {
|
||||
|
||||
}
|
||||
"];
|
||||
58 [label="Stub" style="filled" fillcolor=gray];
|
||||
59 [label="Exit block" style="filled" fillcolor=gray];
|
||||
60 [label="Stub" style="filled" fillcolor=gray];
|
||||
61 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
60 [label="Exit function test" style="filled" fillcolor=red];
|
||||
62 [label="Exit function test" style="filled" fillcolor=red];
|
||||
}
|
||||
subgraph cluster_14 {
|
||||
subgraph cluster_15 {
|
||||
color=blue
|
||||
61 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
subgraph cluster_15 {
|
||||
63 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
subgraph cluster_16 {
|
||||
color=blue
|
||||
62 [label="Enter block"];
|
||||
63 [label="Access variable R|<local>/a|"];
|
||||
64 [label="Smart cast: R|<local>/a|"];
|
||||
65 [label="Access variable R|/A.index|"];
|
||||
66 [label="Function call: R|/takeInt|(...)" style="filled" fillcolor=yellow];
|
||||
67 [label="Exit block"];
|
||||
64 [label="Enter block"];
|
||||
65 [label="Access variable R|<local>/a|"];
|
||||
66 [label="Smart cast: R|<local>/a|"];
|
||||
67 [label="Access variable R|/A.index|"];
|
||||
68 [label="Function call: R|/takeInt|(...)" style="filled" fillcolor=yellow];
|
||||
69 [label="Exit block"];
|
||||
}
|
||||
68 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
70 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
}
|
||||
21 -> {22};
|
||||
22 -> {23};
|
||||
23 -> {24 28};
|
||||
23 -> {24};
|
||||
24 -> {25};
|
||||
25 -> {26};
|
||||
25 -> {26 30};
|
||||
26 -> {27};
|
||||
27 -> {28 32};
|
||||
27 -> {28};
|
||||
28 -> {29};
|
||||
29 -> {30};
|
||||
30 -> {60};
|
||||
30 -> {31} [style=dotted];
|
||||
31 -> {33} [style=dotted];
|
||||
32 -> {33};
|
||||
33 -> {34};
|
||||
29 -> {30 34};
|
||||
30 -> {31};
|
||||
31 -> {32};
|
||||
32 -> {62};
|
||||
32 -> {33} [style=dotted];
|
||||
33 -> {35} [style=dotted];
|
||||
34 -> {35};
|
||||
35 -> {36};
|
||||
36 -> {37};
|
||||
37 -> {38};
|
||||
38 -> {39};
|
||||
39 -> {40};
|
||||
39 -> {56} [style=dotted];
|
||||
39 -> {40} [style=dashed];
|
||||
40 -> {41};
|
||||
40 -> {47 52 61} [color=red];
|
||||
40 -> {55} [style=dotted];
|
||||
40 -> {41 47 52} [style=dashed];
|
||||
41 -> {42};
|
||||
41 -> {58} [style=dotted];
|
||||
41 -> {42} [style=dashed];
|
||||
42 -> {43};
|
||||
42 -> {49 54 63} [color=red];
|
||||
42 -> {57} [style=dotted];
|
||||
42 -> {43 49 54} [style=dashed];
|
||||
43 -> {44};
|
||||
44 -> {45};
|
||||
45 -> {46};
|
||||
46 -> {47} [color=green];
|
||||
46 -> {55} [color=red];
|
||||
46 -> {47};
|
||||
47 -> {48};
|
||||
48 -> {49};
|
||||
48 -> {49} [color=green];
|
||||
48 -> {57} [color=red];
|
||||
49 -> {50};
|
||||
50 -> {51};
|
||||
51 -> {52} [color=green];
|
||||
51 -> {55} [color=red];
|
||||
51 -> {52};
|
||||
52 -> {53};
|
||||
53 -> {54};
|
||||
53 -> {54} [color=green];
|
||||
53 -> {57} [color=red];
|
||||
54 -> {55};
|
||||
55 -> {56};
|
||||
55 -> {61} [color=green];
|
||||
55 -> {61} [style=dashed];
|
||||
56 -> {57};
|
||||
57 -> {60};
|
||||
57 -> {58} [style=dotted];
|
||||
58 -> {59} [style=dotted];
|
||||
57 -> {58};
|
||||
57 -> {63} [color=green];
|
||||
57 -> {63} [style=dashed];
|
||||
58 -> {59};
|
||||
59 -> {62};
|
||||
59 -> {60} [style=dotted];
|
||||
61 -> {62};
|
||||
62 -> {63};
|
||||
60 -> {61} [style=dotted];
|
||||
61 -> {62} [style=dotted];
|
||||
63 -> {64};
|
||||
64 -> {65};
|
||||
65 -> {66};
|
||||
66 -> {67};
|
||||
67 -> {68};
|
||||
|
||||
subgraph cluster_16 {
|
||||
color=red
|
||||
69 [label="Enter function takeInt" style="filled" fillcolor=red];
|
||||
subgraph cluster_17 {
|
||||
color=blue
|
||||
70 [label="Enter block"];
|
||||
71 [label="Exit block"];
|
||||
}
|
||||
72 [label="Exit function takeInt" style="filled" fillcolor=red];
|
||||
}
|
||||
68 -> {69};
|
||||
69 -> {70};
|
||||
70 -> {71};
|
||||
|
||||
subgraph cluster_17 {
|
||||
color=red
|
||||
71 [label="Enter function takeInt" style="filled" fillcolor=red];
|
||||
subgraph cluster_18 {
|
||||
color=blue
|
||||
72 [label="Enter block"];
|
||||
73 [label="Exit block"];
|
||||
}
|
||||
74 [label="Exit function takeInt" style="filled" fillcolor=red];
|
||||
}
|
||||
71 -> {72};
|
||||
72 -> {73};
|
||||
73 -> {74};
|
||||
|
||||
}
|
||||
|
||||
+264
-257
@@ -5,248 +5,253 @@ digraph smartcastToNothing_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter function getNothing" style="filled" fillcolor=red];
|
||||
subgraph cluster_1 {
|
||||
0 [label="Enter file smartcastToNothing.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file smartcastToNothing.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1} [color=green];
|
||||
|
||||
subgraph cluster_1 {
|
||||
color=red
|
||||
2 [label="Enter function getNothing" style="filled" fillcolor=red];
|
||||
subgraph cluster_2 {
|
||||
color=blue
|
||||
1 [label="Enter block"];
|
||||
2 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
|
||||
3 [label="Throw: throw R|java/lang/Exception.Exception|()"];
|
||||
4 [label="Stub" style="filled" fillcolor=gray];
|
||||
5 [label="Jump: ^getNothing throw R|java/lang/Exception.Exception|()" style="filled" fillcolor=gray];
|
||||
3 [label="Enter block"];
|
||||
4 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
|
||||
5 [label="Throw: throw R|java/lang/Exception.Exception|()"];
|
||||
6 [label="Stub" style="filled" fillcolor=gray];
|
||||
7 [label="Exit block" style="filled" fillcolor=gray];
|
||||
7 [label="Jump: ^getNothing throw R|java/lang/Exception.Exception|()" style="filled" fillcolor=gray];
|
||||
8 [label="Stub" style="filled" fillcolor=gray];
|
||||
9 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
8 [label="Exit function getNothing" style="filled" fillcolor=gray];
|
||||
10 [label="Exit function getNothing" style="filled" fillcolor=gray];
|
||||
}
|
||||
0 -> {1};
|
||||
1 -> {2};
|
||||
2 -> {3};
|
||||
3 -> {4} [style=dotted];
|
||||
4 -> {5} [style=dotted];
|
||||
5 -> {6 8} [style=dotted];
|
||||
3 -> {4};
|
||||
4 -> {5};
|
||||
5 -> {6} [style=dotted];
|
||||
6 -> {7} [style=dotted];
|
||||
7 -> {8} [style=dotted];
|
||||
7 -> {8 10} [style=dotted];
|
||||
8 -> {9} [style=dotted];
|
||||
9 -> {10} [style=dotted];
|
||||
|
||||
subgraph cluster_2 {
|
||||
subgraph cluster_3 {
|
||||
color=red
|
||||
9 [label="Enter function getNullableNothing" style="filled" fillcolor=red];
|
||||
subgraph cluster_3 {
|
||||
11 [label="Enter function getNullableNothing" style="filled" fillcolor=red];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
10 [label="Enter block"];
|
||||
11 [label="Const: Null(null)"];
|
||||
12 [label="Jump: ^getNullableNothing Null(null)"];
|
||||
13 [label="Stub" style="filled" fillcolor=gray];
|
||||
14 [label="Exit block" style="filled" fillcolor=gray];
|
||||
12 [label="Enter block"];
|
||||
13 [label="Const: Null(null)"];
|
||||
14 [label="Jump: ^getNullableNothing Null(null)"];
|
||||
15 [label="Stub" style="filled" fillcolor=gray];
|
||||
16 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
15 [label="Exit function getNullableNothing" style="filled" fillcolor=red];
|
||||
17 [label="Exit function getNullableNothing" style="filled" fillcolor=red];
|
||||
}
|
||||
9 -> {10};
|
||||
10 -> {11};
|
||||
11 -> {12};
|
||||
12 -> {15};
|
||||
12 -> {13} [style=dotted];
|
||||
13 -> {14} [style=dotted];
|
||||
12 -> {13};
|
||||
13 -> {14};
|
||||
14 -> {17};
|
||||
14 -> {15} [style=dotted];
|
||||
15 -> {16} [style=dotted];
|
||||
16 -> {17} [style=dotted];
|
||||
|
||||
subgraph cluster_4 {
|
||||
subgraph cluster_5 {
|
||||
color=red
|
||||
16 [label="Enter function <getter>" style="filled" fillcolor=red];
|
||||
subgraph cluster_5 {
|
||||
18 [label="Enter function <getter>" style="filled" fillcolor=red];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
17 [label="Enter block"];
|
||||
18 [label="Const: Int(1)"];
|
||||
19 [label="Jump: ^ Int(1)"];
|
||||
20 [label="Stub" style="filled" fillcolor=gray];
|
||||
21 [label="Exit block" style="filled" fillcolor=gray];
|
||||
19 [label="Enter block"];
|
||||
20 [label="Const: Int(1)"];
|
||||
21 [label="Jump: ^ Int(1)"];
|
||||
22 [label="Stub" style="filled" fillcolor=gray];
|
||||
23 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
22 [label="Exit function <getter>" style="filled" fillcolor=red];
|
||||
24 [label="Exit function <getter>" style="filled" fillcolor=red];
|
||||
}
|
||||
16 -> {17};
|
||||
17 -> {18};
|
||||
18 -> {19};
|
||||
19 -> {22};
|
||||
19 -> {20} [style=dotted];
|
||||
20 -> {21} [style=dotted];
|
||||
19 -> {20};
|
||||
20 -> {21};
|
||||
21 -> {24};
|
||||
21 -> {22} [style=dotted];
|
||||
22 -> {23} [style=dotted];
|
||||
23 -> {24} [style=dotted];
|
||||
|
||||
subgraph cluster_6 {
|
||||
subgraph cluster_7 {
|
||||
color=red
|
||||
23 [label="Enter function <getter>" style="filled" fillcolor=red];
|
||||
subgraph cluster_7 {
|
||||
25 [label="Enter function <getter>" style="filled" fillcolor=red];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
24 [label="Enter block"];
|
||||
25 [label="Const: Int(2)"];
|
||||
26 [label="Jump: ^ Int(2)"];
|
||||
27 [label="Stub" style="filled" fillcolor=gray];
|
||||
28 [label="Exit block" style="filled" fillcolor=gray];
|
||||
26 [label="Enter block"];
|
||||
27 [label="Const: Int(2)"];
|
||||
28 [label="Jump: ^ Int(2)"];
|
||||
29 [label="Stub" style="filled" fillcolor=gray];
|
||||
30 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
29 [label="Exit function <getter>" style="filled" fillcolor=red];
|
||||
31 [label="Exit function <getter>" style="filled" fillcolor=red];
|
||||
}
|
||||
23 -> {24};
|
||||
24 -> {25};
|
||||
25 -> {26};
|
||||
26 -> {29};
|
||||
26 -> {27} [style=dotted];
|
||||
27 -> {28} [style=dotted];
|
||||
26 -> {27};
|
||||
27 -> {28};
|
||||
28 -> {31};
|
||||
28 -> {29} [style=dotted];
|
||||
29 -> {30} [style=dotted];
|
||||
30 -> {31} [style=dotted];
|
||||
|
||||
subgraph cluster_8 {
|
||||
subgraph cluster_9 {
|
||||
color=red
|
||||
30 [label="Enter function myListOf" style="filled" fillcolor=red];
|
||||
subgraph cluster_9 {
|
||||
32 [label="Enter function myListOf" style="filled" fillcolor=red];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
31 [label="Enter block"];
|
||||
32 [label="Const: Null(null)"];
|
||||
33 [label="Check not null: Null(null)!!" style="filled" fillcolor=yellow];
|
||||
34 [label="Stub" style="filled" fillcolor=gray];
|
||||
35 [label="Jump: ^myListOf Null(null)!!" style="filled" fillcolor=gray];
|
||||
33 [label="Enter block"];
|
||||
34 [label="Const: Null(null)"];
|
||||
35 [label="Check not null: Null(null)!!" style="filled" fillcolor=yellow];
|
||||
36 [label="Stub" style="filled" fillcolor=gray];
|
||||
37 [label="Exit block" style="filled" fillcolor=gray];
|
||||
37 [label="Jump: ^myListOf Null(null)!!" style="filled" fillcolor=gray];
|
||||
38 [label="Stub" style="filled" fillcolor=gray];
|
||||
39 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
38 [label="Exit function myListOf" style="filled" fillcolor=gray];
|
||||
40 [label="Exit function myListOf" style="filled" fillcolor=gray];
|
||||
}
|
||||
30 -> {31};
|
||||
31 -> {32};
|
||||
32 -> {33};
|
||||
33 -> {34} [style=dotted];
|
||||
34 -> {35} [style=dotted];
|
||||
35 -> {36 38} [style=dotted];
|
||||
33 -> {34};
|
||||
34 -> {35};
|
||||
35 -> {36} [style=dotted];
|
||||
36 -> {37} [style=dotted];
|
||||
37 -> {38} [style=dotted];
|
||||
37 -> {38 40} [style=dotted];
|
||||
38 -> {39} [style=dotted];
|
||||
39 -> {40} [style=dotted];
|
||||
|
||||
subgraph cluster_10 {
|
||||
subgraph cluster_11 {
|
||||
color=red
|
||||
39 [label="Enter class A" style="filled" fillcolor=red];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
40 [label="Enter property" style="filled" fillcolor=red];
|
||||
41 [label="Const: Int(1)"];
|
||||
42 [label="Exit property" style="filled" fillcolor=red];
|
||||
}
|
||||
41 [label="Enter class A" style="filled" fillcolor=red];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
43 [label="Enter property" style="filled" fillcolor=red];
|
||||
44 [label="Const: Boolean(true)"];
|
||||
45 [label="Exit property" style="filled" fillcolor=red];
|
||||
42 [label="Enter property" style="filled" fillcolor=red];
|
||||
43 [label="Const: Int(1)"];
|
||||
44 [label="Exit property" style="filled" fillcolor=red];
|
||||
}
|
||||
subgraph cluster_13 {
|
||||
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];
|
||||
45 [label="Enter property" style="filled" fillcolor=red];
|
||||
46 [label="Const: Boolean(true)"];
|
||||
47 [label="Exit property" style="filled" fillcolor=red];
|
||||
}
|
||||
49 [label="Exit class A" style="filled" fillcolor=red];
|
||||
}
|
||||
39 -> {40} [color=green];
|
||||
39 -> {49} [style=dotted];
|
||||
39 -> {40 43 46} [style=dashed];
|
||||
40 -> {41};
|
||||
41 -> {42};
|
||||
42 -> {43} [color=green];
|
||||
43 -> {44};
|
||||
44 -> {45};
|
||||
45 -> {46} [color=green];
|
||||
46 -> {47};
|
||||
47 -> {48};
|
||||
48 -> {49} [color=green];
|
||||
|
||||
subgraph cluster_14 {
|
||||
color=red
|
||||
50 [label="Enter function test_0" style="filled" fillcolor=red];
|
||||
subgraph cluster_15 {
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
51 [label="Enter block"];
|
||||
52 [label="Const: Null(null)"];
|
||||
53 [label="Variable declaration: lvar s: R|A?|"];
|
||||
subgraph cluster_16 {
|
||||
48 [label="Enter function <init>" style="filled" fillcolor=red];
|
||||
49 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
|
||||
50 [label="Exit function <init>" style="filled" fillcolor=red];
|
||||
}
|
||||
51 [label="Exit class A" style="filled" fillcolor=red];
|
||||
}
|
||||
41 -> {42} [color=green];
|
||||
41 -> {51} [style=dotted];
|
||||
41 -> {42 45 48} [style=dashed];
|
||||
42 -> {43};
|
||||
43 -> {44};
|
||||
44 -> {45} [color=green];
|
||||
45 -> {46};
|
||||
46 -> {47};
|
||||
47 -> {48} [color=green];
|
||||
48 -> {49};
|
||||
49 -> {50};
|
||||
50 -> {51} [color=green];
|
||||
|
||||
subgraph cluster_15 {
|
||||
color=red
|
||||
52 [label="Enter function test_0" style="filled" fillcolor=red];
|
||||
subgraph cluster_16 {
|
||||
color=blue
|
||||
53 [label="Enter block"];
|
||||
54 [label="Const: Null(null)"];
|
||||
55 [label="Variable declaration: lvar s: R|A?|"];
|
||||
subgraph cluster_17 {
|
||||
color=blue
|
||||
54 [label="Enter block"];
|
||||
55 [label="Access variable R|<local>/results|"];
|
||||
56 [label="Function call: R|<local>/results|.R|SubstitutionOverride<kotlin/collections/List.iterator: R|kotlin/collections/Iterator<kotlin/Nothing>|>|()" style="filled" fillcolor=yellow];
|
||||
57 [label="Variable declaration: lval <iterator>: R|kotlin/collections/Iterator<kotlin/Nothing>|"];
|
||||
subgraph cluster_17 {
|
||||
56 [label="Enter block"];
|
||||
57 [label="Access variable R|<local>/results|"];
|
||||
58 [label="Function call: R|<local>/results|.R|SubstitutionOverride<kotlin/collections/List.iterator: R|kotlin/collections/Iterator<kotlin/Nothing>|>|()" style="filled" fillcolor=yellow];
|
||||
59 [label="Variable declaration: lval <iterator>: R|kotlin/collections/Iterator<kotlin/Nothing>|"];
|
||||
subgraph cluster_18 {
|
||||
color=blue
|
||||
58 [label="Enter while loop"];
|
||||
subgraph cluster_18 {
|
||||
color=blue
|
||||
59 [label="Enter loop condition"];
|
||||
60 [label="Access variable R|<local>/<iterator>|"];
|
||||
61 [label="Function call: R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/Iterator.hasNext: R|kotlin/Boolean|>|()" style="filled" fillcolor=yellow];
|
||||
62 [label="Exit loop condition"];
|
||||
}
|
||||
60 [label="Enter while loop"];
|
||||
subgraph cluster_19 {
|
||||
color=blue
|
||||
63 [label="Enter loop block"];
|
||||
subgraph cluster_20 {
|
||||
61 [label="Enter loop condition"];
|
||||
62 [label="Access variable R|<local>/<iterator>|"];
|
||||
63 [label="Function call: R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/Iterator.hasNext: R|kotlin/Boolean|>|()" style="filled" fillcolor=yellow];
|
||||
64 [label="Exit loop condition"];
|
||||
}
|
||||
subgraph cluster_20 {
|
||||
color=blue
|
||||
65 [label="Enter loop block"];
|
||||
subgraph cluster_21 {
|
||||
color=blue
|
||||
64 [label="Enter block"];
|
||||
65 [label="Access variable R|<local>/<iterator>|"];
|
||||
66 [label="Function call: R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/Iterator.next: R|kotlin/Nothing|>|()" style="filled" fillcolor=yellow];
|
||||
67 [label="Stub" style="filled" fillcolor=gray];
|
||||
68 [label="Variable declaration: lval result: R|kotlin/Nothing|" style="filled" fillcolor=gray];
|
||||
subgraph cluster_21 {
|
||||
66 [label="Enter block"];
|
||||
67 [label="Access variable R|<local>/<iterator>|"];
|
||||
68 [label="Function call: R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/Iterator.next: R|kotlin/Nothing|>|()" style="filled" fillcolor=yellow];
|
||||
69 [label="Stub" style="filled" fillcolor=gray];
|
||||
70 [label="Variable declaration: lval result: R|kotlin/Nothing|" style="filled" fillcolor=gray];
|
||||
subgraph cluster_22 {
|
||||
color=blue
|
||||
69 [label="Enter block" style="filled" fillcolor=gray];
|
||||
70 [label="Access variable R|<local>/result|" style="filled" fillcolor=gray];
|
||||
71 [label="Stub" style="filled" fillcolor=gray];
|
||||
72 [label="Assignment: R|<local>/s|" style="filled" fillcolor=gray];
|
||||
subgraph cluster_22 {
|
||||
71 [label="Enter block" style="filled" fillcolor=gray];
|
||||
72 [label="Access variable R|<local>/result|" style="filled" fillcolor=gray];
|
||||
73 [label="Stub" style="filled" fillcolor=gray];
|
||||
74 [label="Assignment: R|<local>/s|" style="filled" fillcolor=gray];
|
||||
subgraph cluster_23 {
|
||||
color=blue
|
||||
73 [label="Enter when" style="filled" fillcolor=gray];
|
||||
subgraph cluster_23 {
|
||||
color=blue
|
||||
74 [label="Enter when branch condition " style="filled" fillcolor=gray];
|
||||
75 [label="Access variable R|<local>/result|" style="filled" fillcolor=gray];
|
||||
76 [label="Stub" style="filled" fillcolor=gray];
|
||||
77 [label="Access variable <Unresolved name: b>#" style="filled" fillcolor=gray];
|
||||
78 [label="Exit when branch condition" style="filled" fillcolor=gray];
|
||||
}
|
||||
79 [label="Synthetic else branch" style="filled" fillcolor=gray];
|
||||
80 [label="Enter when branch result" style="filled" fillcolor=gray];
|
||||
75 [label="Enter when" style="filled" fillcolor=gray];
|
||||
subgraph cluster_24 {
|
||||
color=blue
|
||||
81 [label="Enter block" style="filled" fillcolor=gray];
|
||||
82 [label="Jump: break@@@[R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/Iterator.hasNext: R|kotlin/Boolean|>|()] " style="filled" fillcolor=gray];
|
||||
83 [label="Stub" style="filled" fillcolor=gray];
|
||||
84 [label="Exit block" style="filled" fillcolor=gray];
|
||||
76 [label="Enter when branch condition " style="filled" fillcolor=gray];
|
||||
77 [label="Access variable R|<local>/result|" style="filled" fillcolor=gray];
|
||||
78 [label="Stub" style="filled" fillcolor=gray];
|
||||
79 [label="Access variable <Unresolved name: b>#" style="filled" fillcolor=gray];
|
||||
80 [label="Exit when branch condition" style="filled" fillcolor=gray];
|
||||
}
|
||||
85 [label="Exit when branch result" style="filled" fillcolor=gray];
|
||||
86 [label="Exit when" style="filled" fillcolor=gray];
|
||||
81 [label="Synthetic else branch" style="filled" fillcolor=gray];
|
||||
82 [label="Enter when branch result" style="filled" fillcolor=gray];
|
||||
subgraph cluster_25 {
|
||||
color=blue
|
||||
83 [label="Enter block" style="filled" fillcolor=gray];
|
||||
84 [label="Jump: break@@@[R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/Iterator.hasNext: R|kotlin/Boolean|>|()] " style="filled" fillcolor=gray];
|
||||
85 [label="Stub" style="filled" fillcolor=gray];
|
||||
86 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
87 [label="Exit when branch result" style="filled" fillcolor=gray];
|
||||
88 [label="Exit when" style="filled" fillcolor=gray];
|
||||
}
|
||||
87 [label="Exit block" style="filled" fillcolor=gray];
|
||||
89 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
88 [label="Exit block" style="filled" fillcolor=gray];
|
||||
90 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
89 [label="Exit loop block" style="filled" fillcolor=gray];
|
||||
91 [label="Exit loop block" style="filled" fillcolor=gray];
|
||||
}
|
||||
90 [label="Exit while loop"];
|
||||
92 [label="Exit while loop"];
|
||||
}
|
||||
91 [label="Exit block"];
|
||||
93 [label="Exit block"];
|
||||
}
|
||||
92 [label="Access variable R|<local>/s|"];
|
||||
93 [label="Enter safe call"];
|
||||
94 [label="Postponed enter to lambda"];
|
||||
subgraph cluster_25 {
|
||||
94 [label="Access variable R|<local>/s|"];
|
||||
95 [label="Enter safe call"];
|
||||
96 [label="Postponed enter to lambda"];
|
||||
subgraph cluster_26 {
|
||||
color=blue
|
||||
95 [label="Enter function <anonymous>" style="filled" fillcolor=red];
|
||||
subgraph cluster_26 {
|
||||
97 [label="Enter function <anonymous>" style="filled" fillcolor=red];
|
||||
subgraph cluster_27 {
|
||||
color=blue
|
||||
96 [label="Enter block"];
|
||||
97 [label="Access variable R|<local>/it|"];
|
||||
98 [label="Access variable R|/A.a|"];
|
||||
99 [label="Exit block"];
|
||||
98 [label="Enter block"];
|
||||
99 [label="Access variable R|<local>/it|"];
|
||||
100 [label="Access variable R|/A.a|"];
|
||||
101 [label="Exit block"];
|
||||
}
|
||||
100 [label="Exit function <anonymous>" style="filled" fillcolor=red];
|
||||
102 [label="Exit function <anonymous>" style="filled" fillcolor=red];
|
||||
}
|
||||
101 [label="Postponed exit from lambda"];
|
||||
102 [label="Function call: $subj$.R|kotlin/let|<R|A|, R|kotlin/Int|>(...)" style="filled" fillcolor=yellow];
|
||||
103 [label="Exit safe call"];
|
||||
104 [label="Exit block"];
|
||||
103 [label="Postponed exit from lambda"];
|
||||
104 [label="Function call: $subj$.R|kotlin/let|<R|A|, R|kotlin/Int|>(...)" style="filled" fillcolor=yellow];
|
||||
105 [label="Exit safe call"];
|
||||
106 [label="Exit block"];
|
||||
}
|
||||
105 [label="Exit function test_0" style="filled" fillcolor=red];
|
||||
107 [label="Exit function test_0" style="filled" fillcolor=red];
|
||||
}
|
||||
50 -> {51};
|
||||
51 -> {52};
|
||||
52 -> {53};
|
||||
53 -> {54};
|
||||
54 -> {55};
|
||||
@@ -257,12 +262,12 @@ digraph smartcastToNothing_kt {
|
||||
59 -> {60};
|
||||
60 -> {61};
|
||||
61 -> {62};
|
||||
62 -> {63 90};
|
||||
62 -> {63};
|
||||
63 -> {64};
|
||||
64 -> {65};
|
||||
64 -> {65 92};
|
||||
65 -> {66};
|
||||
66 -> {67} [style=dotted];
|
||||
67 -> {68} [style=dotted];
|
||||
66 -> {67};
|
||||
67 -> {68};
|
||||
68 -> {69} [style=dotted];
|
||||
69 -> {70} [style=dotted];
|
||||
70 -> {71} [style=dotted];
|
||||
@@ -273,27 +278,27 @@ digraph smartcastToNothing_kt {
|
||||
75 -> {76} [style=dotted];
|
||||
76 -> {77} [style=dotted];
|
||||
77 -> {78} [style=dotted];
|
||||
78 -> {79 80} [style=dotted];
|
||||
79 -> {86} [style=dotted];
|
||||
80 -> {81} [style=dotted];
|
||||
81 -> {82} [style=dotted];
|
||||
82 -> {83 90} [style=dotted];
|
||||
78 -> {79} [style=dotted];
|
||||
79 -> {80} [style=dotted];
|
||||
80 -> {81 82} [style=dotted];
|
||||
81 -> {88} [style=dotted];
|
||||
82 -> {83} [style=dotted];
|
||||
83 -> {84} [style=dotted];
|
||||
84 -> {85} [style=dotted];
|
||||
84 -> {85 92} [style=dotted];
|
||||
85 -> {86} [style=dotted];
|
||||
86 -> {87} [style=dotted];
|
||||
87 -> {88} [style=dotted];
|
||||
88 -> {89} [style=dotted];
|
||||
89 -> {59} [color=green style=dotted];
|
||||
90 -> {91};
|
||||
91 -> {92};
|
||||
92 -> {93 103};
|
||||
89 -> {90} [style=dotted];
|
||||
90 -> {91} [style=dotted];
|
||||
91 -> {61} [color=green style=dotted];
|
||||
92 -> {93};
|
||||
93 -> {94};
|
||||
94 -> {95 102};
|
||||
94 -> {101} [style=dotted];
|
||||
94 -> {95} [style=dashed];
|
||||
94 -> {95 105};
|
||||
95 -> {96};
|
||||
96 -> {97};
|
||||
96 -> {97 104};
|
||||
96 -> {103} [style=dotted];
|
||||
96 -> {97} [style=dashed];
|
||||
97 -> {98};
|
||||
98 -> {99};
|
||||
99 -> {100};
|
||||
@@ -302,82 +307,82 @@ digraph smartcastToNothing_kt {
|
||||
102 -> {103};
|
||||
103 -> {104};
|
||||
104 -> {105};
|
||||
105 -> {106};
|
||||
106 -> {107};
|
||||
|
||||
subgraph cluster_27 {
|
||||
subgraph cluster_28 {
|
||||
color=red
|
||||
106 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_28 {
|
||||
108 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_29 {
|
||||
color=blue
|
||||
107 [label="Enter block"];
|
||||
subgraph cluster_29 {
|
||||
109 [label="Enter block"];
|
||||
subgraph cluster_30 {
|
||||
color=blue
|
||||
108 [label="Enter when"];
|
||||
subgraph cluster_30 {
|
||||
color=blue
|
||||
109 [label="Enter when branch condition "];
|
||||
110 [label="Access variable R|<local>/a|"];
|
||||
111 [label="Type operator: (R|<local>/a| is R|kotlin/Nothing?|)"];
|
||||
112 [label="Exit when branch condition"];
|
||||
}
|
||||
113 [label="Synthetic else branch"];
|
||||
114 [label="Enter when branch result"];
|
||||
110 [label="Enter when"];
|
||||
subgraph cluster_31 {
|
||||
color=blue
|
||||
115 [label="Enter block"];
|
||||
116 [label="Access variable R|<local>/a|"];
|
||||
117 [label="Smart cast: R|<local>/a|"];
|
||||
118 [label="Enter safe call"];
|
||||
119 [label="Access variable R|kotlin/String.length|"];
|
||||
120 [label="Exit safe call"];
|
||||
121 [label="Variable declaration: lval b: R|kotlin/Int?|"];
|
||||
122 [label="Exit block"];
|
||||
111 [label="Enter when branch condition "];
|
||||
112 [label="Access variable R|<local>/a|"];
|
||||
113 [label="Type operator: (R|<local>/a| is R|kotlin/Nothing?|)"];
|
||||
114 [label="Exit when branch condition"];
|
||||
}
|
||||
123 [label="Exit when branch result"];
|
||||
124 [label="Exit when"];
|
||||
}
|
||||
subgraph cluster_32 {
|
||||
color=blue
|
||||
125 [label="Enter when"];
|
||||
subgraph cluster_33 {
|
||||
115 [label="Synthetic else branch"];
|
||||
116 [label="Enter when branch result"];
|
||||
subgraph cluster_32 {
|
||||
color=blue
|
||||
126 [label="Enter when branch condition "];
|
||||
127 [label="Access variable R|<local>/a|"];
|
||||
128 [label="Type operator: (R|<local>/a| is R|kotlin/Nothing|)"];
|
||||
129 [label="Exit when branch condition"];
|
||||
117 [label="Enter block"];
|
||||
118 [label="Access variable R|<local>/a|"];
|
||||
119 [label="Smart cast: R|<local>/a|"];
|
||||
120 [label="Enter safe call"];
|
||||
121 [label="Access variable R|kotlin/String.length|"];
|
||||
122 [label="Exit safe call"];
|
||||
123 [label="Variable declaration: lval b: R|kotlin/Int?|"];
|
||||
124 [label="Exit block"];
|
||||
}
|
||||
130 [label="Synthetic else branch"];
|
||||
131 [label="Enter when branch result"];
|
||||
125 [label="Exit when branch result"];
|
||||
126 [label="Exit when"];
|
||||
}
|
||||
subgraph cluster_33 {
|
||||
color=blue
|
||||
127 [label="Enter when"];
|
||||
subgraph cluster_34 {
|
||||
color=blue
|
||||
132 [label="Enter block"];
|
||||
133 [label="Access variable R|<local>/a|"];
|
||||
134 [label="Smart cast: R|<local>/a|"];
|
||||
135 [label="Stub" style="filled" fillcolor=gray];
|
||||
136 [label="Access variable R|kotlin/String.length|" style="filled" fillcolor=gray];
|
||||
137 [label="Variable declaration: lval b: R|kotlin/Int|" style="filled" fillcolor=gray];
|
||||
138 [label="Exit block" style="filled" fillcolor=gray];
|
||||
128 [label="Enter when branch condition "];
|
||||
129 [label="Access variable R|<local>/a|"];
|
||||
130 [label="Type operator: (R|<local>/a| is R|kotlin/Nothing|)"];
|
||||
131 [label="Exit when branch condition"];
|
||||
}
|
||||
139 [label="Exit when branch result" style="filled" fillcolor=gray];
|
||||
140 [label="Exit when"];
|
||||
132 [label="Synthetic else branch"];
|
||||
133 [label="Enter when branch result"];
|
||||
subgraph cluster_35 {
|
||||
color=blue
|
||||
134 [label="Enter block"];
|
||||
135 [label="Access variable R|<local>/a|"];
|
||||
136 [label="Smart cast: R|<local>/a|"];
|
||||
137 [label="Stub" style="filled" fillcolor=gray];
|
||||
138 [label="Access variable R|kotlin/String.length|" style="filled" fillcolor=gray];
|
||||
139 [label="Variable declaration: lval b: R|kotlin/Int|" style="filled" fillcolor=gray];
|
||||
140 [label="Exit block" style="filled" fillcolor=gray];
|
||||
}
|
||||
141 [label="Exit when branch result" style="filled" fillcolor=gray];
|
||||
142 [label="Exit when"];
|
||||
}
|
||||
141 [label="Exit block"];
|
||||
143 [label="Exit block"];
|
||||
}
|
||||
142 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
144 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
}
|
||||
106 -> {107};
|
||||
107 -> {108};
|
||||
108 -> {109};
|
||||
109 -> {110};
|
||||
110 -> {111};
|
||||
111 -> {112};
|
||||
112 -> {113 114};
|
||||
113 -> {124};
|
||||
114 -> {115};
|
||||
115 -> {116};
|
||||
112 -> {113};
|
||||
113 -> {114};
|
||||
114 -> {115 116};
|
||||
115 -> {126};
|
||||
116 -> {117};
|
||||
117 -> {118 120};
|
||||
117 -> {118};
|
||||
118 -> {119};
|
||||
119 -> {120};
|
||||
119 -> {120 122};
|
||||
120 -> {121};
|
||||
121 -> {122};
|
||||
122 -> {123};
|
||||
@@ -387,18 +392,20 @@ digraph smartcastToNothing_kt {
|
||||
126 -> {127};
|
||||
127 -> {128};
|
||||
128 -> {129};
|
||||
129 -> {130 131};
|
||||
130 -> {140};
|
||||
131 -> {132};
|
||||
132 -> {133};
|
||||
129 -> {130};
|
||||
130 -> {131};
|
||||
131 -> {132 133};
|
||||
132 -> {142};
|
||||
133 -> {134};
|
||||
134 -> {135} [style=dotted];
|
||||
135 -> {136} [style=dotted];
|
||||
134 -> {135};
|
||||
135 -> {136};
|
||||
136 -> {137} [style=dotted];
|
||||
137 -> {138} [style=dotted];
|
||||
138 -> {139} [style=dotted];
|
||||
139 -> {140} [style=dotted];
|
||||
140 -> {141};
|
||||
141 -> {142};
|
||||
140 -> {141} [style=dotted];
|
||||
141 -> {142} [style=dotted];
|
||||
142 -> {143};
|
||||
143 -> {144};
|
||||
|
||||
}
|
||||
|
||||
+109
-102
@@ -5,94 +5,99 @@ digraph overridenOpenVal_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter class A" style="filled" fillcolor=red];
|
||||
subgraph cluster_1 {
|
||||
color=blue
|
||||
1 [label="Enter property" style="filled" fillcolor=red];
|
||||
2 [label="Access variable R|<local>/x|"];
|
||||
3 [label="Exit property" style="filled" fillcolor=red];
|
||||
}
|
||||
subgraph cluster_2 {
|
||||
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];
|
||||
}
|
||||
7 [label="Exit class A" style="filled" fillcolor=red];
|
||||
0 [label="Enter file overridenOpenVal.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file overridenOpenVal.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1} [color=green];
|
||||
0 -> {7} [style=dotted];
|
||||
0 -> {1 4} [style=dashed];
|
||||
1 -> {2};
|
||||
2 -> {3};
|
||||
3 -> {4} [color=green];
|
||||
4 -> {5};
|
||||
5 -> {6};
|
||||
6 -> {7} [color=green];
|
||||
|
||||
subgraph cluster_3 {
|
||||
subgraph cluster_1 {
|
||||
color=red
|
||||
8 [label="Enter class B" style="filled" fillcolor=red];
|
||||
subgraph cluster_4 {
|
||||
2 [label="Enter class A" style="filled" fillcolor=red];
|
||||
subgraph cluster_2 {
|
||||
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];
|
||||
3 [label="Enter property" style="filled" fillcolor=red];
|
||||
4 [label="Access variable R|<local>/x|"];
|
||||
5 [label="Exit property" style="filled" fillcolor=red];
|
||||
}
|
||||
13 [label="Exit class B" style="filled" fillcolor=red];
|
||||
}
|
||||
8 -> {9} [color=green];
|
||||
8 -> {13} [style=dotted];
|
||||
8 -> {9} [style=dashed];
|
||||
9 -> {10};
|
||||
10 -> {11};
|
||||
11 -> {12};
|
||||
12 -> {13} [color=green];
|
||||
|
||||
subgraph cluster_5 {
|
||||
color=red
|
||||
14 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_6 {
|
||||
subgraph cluster_3 {
|
||||
color=blue
|
||||
15 [label="Enter block"];
|
||||
subgraph cluster_7 {
|
||||
6 [label="Enter function <init>" style="filled" fillcolor=red];
|
||||
7 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
|
||||
8 [label="Exit function <init>" style="filled" fillcolor=red];
|
||||
}
|
||||
9 [label="Exit class A" style="filled" fillcolor=red];
|
||||
}
|
||||
2 -> {3} [color=green];
|
||||
2 -> {9} [style=dotted];
|
||||
2 -> {3 6} [style=dashed];
|
||||
3 -> {4};
|
||||
4 -> {5};
|
||||
5 -> {6} [color=green];
|
||||
6 -> {7};
|
||||
7 -> {8};
|
||||
8 -> {9} [color=green];
|
||||
|
||||
subgraph cluster_4 {
|
||||
color=red
|
||||
10 [label="Enter class B" style="filled" fillcolor=red];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
11 [label="Enter function <init>" style="filled" fillcolor=red];
|
||||
12 [label="Access variable R|<local>/x|"];
|
||||
13 [label="Delegated constructor call: super<R|A|>(...)" style="filled" fillcolor=yellow];
|
||||
14 [label="Exit function <init>" style="filled" fillcolor=red];
|
||||
}
|
||||
15 [label="Exit class B" style="filled" fillcolor=red];
|
||||
}
|
||||
10 -> {11} [color=green];
|
||||
10 -> {15} [style=dotted];
|
||||
10 -> {11} [style=dashed];
|
||||
11 -> {12};
|
||||
12 -> {13};
|
||||
13 -> {14};
|
||||
14 -> {15} [color=green];
|
||||
|
||||
subgraph cluster_6 {
|
||||
color=red
|
||||
16 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
17 [label="Enter block"];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
16 [label="Enter when"];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
17 [label="Enter when branch condition "];
|
||||
18 [label="Access variable R|/A.x|"];
|
||||
19 [label="Type operator: (this@R|/B|.R|/A.x| is R|kotlin/String|)"];
|
||||
20 [label="Exit when branch condition"];
|
||||
}
|
||||
21 [label="Synthetic else branch"];
|
||||
22 [label="Enter when branch result"];
|
||||
18 [label="Enter when"];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
23 [label="Enter block"];
|
||||
24 [label="Access variable R|/A.x|"];
|
||||
25 [label="Smart cast: this@R|/B|.R|/A.x|"];
|
||||
26 [label="Access variable R|kotlin/String.length|"];
|
||||
27 [label="Exit block"];
|
||||
19 [label="Enter when branch condition "];
|
||||
20 [label="Access variable R|/A.x|"];
|
||||
21 [label="Type operator: (this@R|/B|.R|/A.x| is R|kotlin/String|)"];
|
||||
22 [label="Exit when branch condition"];
|
||||
}
|
||||
28 [label="Exit when branch result"];
|
||||
29 [label="Exit when"];
|
||||
23 [label="Synthetic else branch"];
|
||||
24 [label="Enter when branch result"];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
25 [label="Enter block"];
|
||||
26 [label="Access variable R|/A.x|"];
|
||||
27 [label="Smart cast: this@R|/B|.R|/A.x|"];
|
||||
28 [label="Access variable R|kotlin/String.length|"];
|
||||
29 [label="Exit block"];
|
||||
}
|
||||
30 [label="Exit when branch result"];
|
||||
31 [label="Exit when"];
|
||||
}
|
||||
30 [label="Exit block"];
|
||||
32 [label="Exit block"];
|
||||
}
|
||||
31 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
33 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
}
|
||||
14 -> {15};
|
||||
15 -> {16};
|
||||
16 -> {17};
|
||||
17 -> {18};
|
||||
18 -> {19};
|
||||
19 -> {20};
|
||||
20 -> {21 22};
|
||||
21 -> {29};
|
||||
22 -> {23};
|
||||
23 -> {24};
|
||||
20 -> {21};
|
||||
21 -> {22};
|
||||
22 -> {23 24};
|
||||
23 -> {31};
|
||||
24 -> {25};
|
||||
25 -> {26};
|
||||
26 -> {27};
|
||||
@@ -100,53 +105,53 @@ digraph overridenOpenVal_kt {
|
||||
28 -> {29};
|
||||
29 -> {30};
|
||||
30 -> {31};
|
||||
31 -> {32};
|
||||
32 -> {33};
|
||||
|
||||
subgraph cluster_10 {
|
||||
subgraph cluster_11 {
|
||||
color=red
|
||||
32 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_11 {
|
||||
34 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_12 {
|
||||
color=blue
|
||||
33 [label="Enter block"];
|
||||
subgraph cluster_12 {
|
||||
35 [label="Enter block"];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
34 [label="Enter when"];
|
||||
subgraph cluster_13 {
|
||||
color=blue
|
||||
35 [label="Enter when branch condition "];
|
||||
36 [label="Access variable R|<local>/b|"];
|
||||
37 [label="Access variable R|/A.x|"];
|
||||
38 [label="Type operator: (R|<local>/b|.R|/A.x| is R|kotlin/String|)"];
|
||||
39 [label="Exit when branch condition"];
|
||||
}
|
||||
40 [label="Synthetic else branch"];
|
||||
41 [label="Enter when branch result"];
|
||||
36 [label="Enter when"];
|
||||
subgraph cluster_14 {
|
||||
color=blue
|
||||
42 [label="Enter block"];
|
||||
43 [label="Access variable R|<local>/b|"];
|
||||
44 [label="Access variable R|/A.x|"];
|
||||
45 [label="Smart cast: R|<local>/b|.R|/A.x|"];
|
||||
46 [label="Access variable R|kotlin/String.length|"];
|
||||
47 [label="Exit block"];
|
||||
37 [label="Enter when branch condition "];
|
||||
38 [label="Access variable R|<local>/b|"];
|
||||
39 [label="Access variable R|/A.x|"];
|
||||
40 [label="Type operator: (R|<local>/b|.R|/A.x| is R|kotlin/String|)"];
|
||||
41 [label="Exit when branch condition"];
|
||||
}
|
||||
48 [label="Exit when branch result"];
|
||||
49 [label="Exit when"];
|
||||
42 [label="Synthetic else branch"];
|
||||
43 [label="Enter when branch result"];
|
||||
subgraph cluster_15 {
|
||||
color=blue
|
||||
44 [label="Enter block"];
|
||||
45 [label="Access variable R|<local>/b|"];
|
||||
46 [label="Access variable R|/A.x|"];
|
||||
47 [label="Smart cast: R|<local>/b|.R|/A.x|"];
|
||||
48 [label="Access variable R|kotlin/String.length|"];
|
||||
49 [label="Exit block"];
|
||||
}
|
||||
50 [label="Exit when branch result"];
|
||||
51 [label="Exit when"];
|
||||
}
|
||||
50 [label="Exit block"];
|
||||
52 [label="Exit block"];
|
||||
}
|
||||
51 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
53 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
}
|
||||
32 -> {33};
|
||||
33 -> {34};
|
||||
34 -> {35};
|
||||
35 -> {36};
|
||||
36 -> {37};
|
||||
37 -> {38};
|
||||
38 -> {39};
|
||||
39 -> {40 41};
|
||||
40 -> {49};
|
||||
41 -> {42};
|
||||
42 -> {43};
|
||||
39 -> {40};
|
||||
40 -> {41};
|
||||
41 -> {42 43};
|
||||
42 -> {51};
|
||||
43 -> {44};
|
||||
44 -> {45};
|
||||
45 -> {46};
|
||||
@@ -155,5 +160,7 @@ digraph overridenOpenVal_kt {
|
||||
48 -> {49};
|
||||
49 -> {50};
|
||||
50 -> {51};
|
||||
51 -> {52};
|
||||
52 -> {53};
|
||||
|
||||
}
|
||||
|
||||
+69
-62
@@ -5,103 +5,108 @@ digraph delayedAssignment_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter class A" style="filled" fillcolor=red];
|
||||
subgraph cluster_1 {
|
||||
color=blue
|
||||
1 [label="Enter function <init>" style="filled" fillcolor=red];
|
||||
2 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
|
||||
3 [label="Exit function <init>" style="filled" fillcolor=red];
|
||||
}
|
||||
4 [label="Exit class A" style="filled" fillcolor=red];
|
||||
0 [label="Enter file delayedAssignment.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file delayedAssignment.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1} [color=green];
|
||||
0 -> {4} [style=dotted];
|
||||
0 -> {1} [style=dashed];
|
||||
1 -> {2};
|
||||
2 -> {3};
|
||||
3 -> {4} [color=green];
|
||||
|
||||
subgraph cluster_2 {
|
||||
subgraph cluster_1 {
|
||||
color=red
|
||||
5 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
subgraph cluster_3 {
|
||||
2 [label="Enter class A" style="filled" fillcolor=red];
|
||||
subgraph cluster_2 {
|
||||
color=blue
|
||||
6 [label="Enter block"];
|
||||
7 [label="Exit block"];
|
||||
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];
|
||||
}
|
||||
8 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
6 [label="Exit class A" style="filled" fillcolor=red];
|
||||
}
|
||||
5 -> {6};
|
||||
6 -> {7};
|
||||
7 -> {8};
|
||||
2 -> {3} [color=green];
|
||||
2 -> {6} [style=dotted];
|
||||
2 -> {3} [style=dashed];
|
||||
3 -> {4};
|
||||
4 -> {5};
|
||||
5 -> {6} [color=green];
|
||||
|
||||
subgraph cluster_4 {
|
||||
subgraph cluster_3 {
|
||||
color=red
|
||||
9 [label="Enter function test" style="filled" fillcolor=red];
|
||||
subgraph cluster_5 {
|
||||
7 [label="Enter function foo" style="filled" fillcolor=red];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
10 [label="Enter block"];
|
||||
11 [label="Variable declaration: lval a: R|A?|"];
|
||||
subgraph cluster_6 {
|
||||
8 [label="Enter block"];
|
||||
9 [label="Exit block"];
|
||||
}
|
||||
10 [label="Exit function foo" style="filled" fillcolor=red];
|
||||
}
|
||||
7 -> {8};
|
||||
8 -> {9};
|
||||
9 -> {10};
|
||||
|
||||
subgraph cluster_5 {
|
||||
color=red
|
||||
11 [label="Enter function test" style="filled" fillcolor=red];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
12 [label="Enter block"];
|
||||
13 [label="Variable declaration: lval a: R|A?|"];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
12 [label="Enter when"];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
13 [label="Enter when branch condition "];
|
||||
14 [label="Access variable R|<local>/b|"];
|
||||
15 [label="Exit when branch condition"];
|
||||
}
|
||||
14 [label="Enter when"];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
16 [label="Enter when branch condition else"];
|
||||
15 [label="Enter when branch condition "];
|
||||
16 [label="Access variable R|<local>/b|"];
|
||||
17 [label="Exit when branch condition"];
|
||||
}
|
||||
18 [label="Enter when branch result"];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
19 [label="Enter block"];
|
||||
20 [label="Const: Null(null)"];
|
||||
21 [label="Assignment: R|<local>/a|"];
|
||||
22 [label="Exit block"];
|
||||
18 [label="Enter when branch condition else"];
|
||||
19 [label="Exit when branch condition"];
|
||||
}
|
||||
23 [label="Exit when branch result"];
|
||||
24 [label="Enter when branch result"];
|
||||
20 [label="Enter when branch result"];
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
25 [label="Enter block"];
|
||||
26 [label="Function call: R|/A.A|()" style="filled" fillcolor=yellow];
|
||||
27 [label="Assignment: R|<local>/a|"];
|
||||
28 [label="Access variable R|<local>/a|"];
|
||||
29 [label="Smart cast: R|<local>/a|"];
|
||||
30 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
31 [label="Exit block"];
|
||||
21 [label="Enter block"];
|
||||
22 [label="Const: Null(null)"];
|
||||
23 [label="Assignment: R|<local>/a|"];
|
||||
24 [label="Exit block"];
|
||||
}
|
||||
32 [label="Exit when branch result"];
|
||||
33 [label="Exit when"];
|
||||
25 [label="Exit when branch result"];
|
||||
26 [label="Enter when branch result"];
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
27 [label="Enter block"];
|
||||
28 [label="Function call: R|/A.A|()" style="filled" fillcolor=yellow];
|
||||
29 [label="Assignment: R|<local>/a|"];
|
||||
30 [label="Access variable R|<local>/a|"];
|
||||
31 [label="Smart cast: R|<local>/a|"];
|
||||
32 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
|
||||
33 [label="Exit block"];
|
||||
}
|
||||
34 [label="Exit when branch result"];
|
||||
35 [label="Exit when"];
|
||||
}
|
||||
34 [label="Access variable R|<local>/a|"];
|
||||
35 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
36 [label="Exit block"];
|
||||
36 [label="Access variable R|<local>/a|"];
|
||||
37 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
|
||||
38 [label="Exit block"];
|
||||
}
|
||||
37 [label="Exit function test" style="filled" fillcolor=red];
|
||||
39 [label="Exit function test" style="filled" fillcolor=red];
|
||||
}
|
||||
9 -> {10};
|
||||
10 -> {11};
|
||||
11 -> {12};
|
||||
12 -> {13};
|
||||
13 -> {14};
|
||||
14 -> {15};
|
||||
15 -> {16 24};
|
||||
15 -> {16};
|
||||
16 -> {17};
|
||||
17 -> {18};
|
||||
17 -> {18 26};
|
||||
18 -> {19};
|
||||
19 -> {20};
|
||||
20 -> {21};
|
||||
21 -> {22};
|
||||
22 -> {23};
|
||||
23 -> {33};
|
||||
23 -> {24};
|
||||
24 -> {25};
|
||||
25 -> {26};
|
||||
25 -> {35};
|
||||
26 -> {27};
|
||||
27 -> {28};
|
||||
28 -> {29};
|
||||
@@ -113,5 +118,7 @@ digraph delayedAssignment_kt {
|
||||
34 -> {35};
|
||||
35 -> {36};
|
||||
36 -> {37};
|
||||
37 -> {38};
|
||||
38 -> {39};
|
||||
|
||||
}
|
||||
|
||||
Vendored
+82
-75
@@ -5,23 +5,28 @@ digraph smartcastAfterReassignment_kt {
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=red
|
||||
0 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_1 {
|
||||
color=blue
|
||||
1 [label="Enter block"];
|
||||
2 [label="Const: Int(1)"];
|
||||
3 [label="Variable declaration: lvar x: R|kotlin/Any|"];
|
||||
4 [label="Const: String()"];
|
||||
5 [label="Assignment: R|<local>/x|"];
|
||||
6 [label="Access variable R|<local>/x|"];
|
||||
7 [label="Smart cast: R|<local>/x|"];
|
||||
8 [label="Access variable R|kotlin/String.length|"];
|
||||
9 [label="Exit block"];
|
||||
}
|
||||
10 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
0 [label="Enter file smartcastAfterReassignment.kt" style="filled" fillcolor=red];
|
||||
1 [label="Exit file smartcastAfterReassignment.kt" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1} [color=green];
|
||||
|
||||
subgraph cluster_1 {
|
||||
color=red
|
||||
2 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
subgraph cluster_2 {
|
||||
color=blue
|
||||
3 [label="Enter block"];
|
||||
4 [label="Const: Int(1)"];
|
||||
5 [label="Variable declaration: lvar x: R|kotlin/Any|"];
|
||||
6 [label="Const: String()"];
|
||||
7 [label="Assignment: R|<local>/x|"];
|
||||
8 [label="Access variable R|<local>/x|"];
|
||||
9 [label="Smart cast: R|<local>/x|"];
|
||||
10 [label="Access variable R|kotlin/String.length|"];
|
||||
11 [label="Exit block"];
|
||||
}
|
||||
12 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
}
|
||||
0 -> {1};
|
||||
1 -> {2};
|
||||
2 -> {3};
|
||||
3 -> {4};
|
||||
4 -> {5};
|
||||
@@ -30,47 +35,47 @@ digraph smartcastAfterReassignment_kt {
|
||||
7 -> {8};
|
||||
8 -> {9};
|
||||
9 -> {10};
|
||||
10 -> {11};
|
||||
11 -> {12};
|
||||
|
||||
subgraph cluster_2 {
|
||||
subgraph cluster_3 {
|
||||
color=red
|
||||
11 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_3 {
|
||||
13 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
subgraph cluster_4 {
|
||||
color=blue
|
||||
12 [label="Enter block"];
|
||||
13 [label="Const: Null(null)"];
|
||||
14 [label="Variable declaration: lvar x: R|kotlin/String?|"];
|
||||
subgraph cluster_4 {
|
||||
14 [label="Enter block"];
|
||||
15 [label="Const: Null(null)"];
|
||||
16 [label="Variable declaration: lvar x: R|kotlin/String?|"];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
15 [label="Enter when"];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
16 [label="Enter when branch condition "];
|
||||
17 [label="Access variable R|<local>/x|"];
|
||||
18 [label="Const: Null(null)"];
|
||||
19 [label="Equality operator =="];
|
||||
20 [label="Exit when branch condition"];
|
||||
}
|
||||
21 [label="Synthetic else branch"];
|
||||
22 [label="Enter when branch result"];
|
||||
17 [label="Enter when"];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
23 [label="Enter block"];
|
||||
24 [label="Const: String()"];
|
||||
25 [label="Assignment: R|<local>/x|"];
|
||||
26 [label="Exit block"];
|
||||
18 [label="Enter when branch condition "];
|
||||
19 [label="Access variable R|<local>/x|"];
|
||||
20 [label="Const: Null(null)"];
|
||||
21 [label="Equality operator =="];
|
||||
22 [label="Exit when branch condition"];
|
||||
}
|
||||
27 [label="Exit when branch result"];
|
||||
28 [label="Exit when"];
|
||||
23 [label="Synthetic else branch"];
|
||||
24 [label="Enter when branch result"];
|
||||
subgraph cluster_7 {
|
||||
color=blue
|
||||
25 [label="Enter block"];
|
||||
26 [label="Const: String()"];
|
||||
27 [label="Assignment: R|<local>/x|"];
|
||||
28 [label="Exit block"];
|
||||
}
|
||||
29 [label="Exit when branch result"];
|
||||
30 [label="Exit when"];
|
||||
}
|
||||
29 [label="Access variable R|<local>/x|"];
|
||||
30 [label="Smart cast: R|<local>/x|"];
|
||||
31 [label="Access variable R|kotlin/String.length|"];
|
||||
32 [label="Exit block"];
|
||||
31 [label="Access variable R|<local>/x|"];
|
||||
32 [label="Smart cast: R|<local>/x|"];
|
||||
33 [label="Access variable R|kotlin/String.length|"];
|
||||
34 [label="Exit block"];
|
||||
}
|
||||
33 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
35 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
}
|
||||
11 -> {12};
|
||||
12 -> {13};
|
||||
13 -> {14};
|
||||
14 -> {15};
|
||||
15 -> {16};
|
||||
@@ -78,10 +83,10 @@ digraph smartcastAfterReassignment_kt {
|
||||
17 -> {18};
|
||||
18 -> {19};
|
||||
19 -> {20};
|
||||
20 -> {21 22};
|
||||
21 -> {28};
|
||||
22 -> {23};
|
||||
23 -> {24};
|
||||
20 -> {21};
|
||||
21 -> {22};
|
||||
22 -> {23 24};
|
||||
23 -> {30};
|
||||
24 -> {25};
|
||||
25 -> {26};
|
||||
26 -> {27};
|
||||
@@ -91,31 +96,31 @@ digraph smartcastAfterReassignment_kt {
|
||||
30 -> {31};
|
||||
31 -> {32};
|
||||
32 -> {33};
|
||||
|
||||
subgraph cluster_7 {
|
||||
color=red
|
||||
34 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_8 {
|
||||
color=blue
|
||||
35 [label="Enter block"];
|
||||
36 [label="Const: Null(null)"];
|
||||
37 [label="Variable declaration: lvar x: R|kotlin/String?|"];
|
||||
38 [label="Const: String()"];
|
||||
39 [label="Assignment: R|<local>/x|"];
|
||||
40 [label="Access variable R|<local>/x|"];
|
||||
41 [label="Smart cast: R|<local>/x|"];
|
||||
42 [label="Access variable R|kotlin/String.length|"];
|
||||
43 [label="Const: Null(null)"];
|
||||
44 [label="Assignment: R|<local>/x|"];
|
||||
45 [label="Access variable R|<local>/x|"];
|
||||
46 [label="Smart cast: R|<local>/x|"];
|
||||
47 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
|
||||
48 [label="Exit block"];
|
||||
}
|
||||
49 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
}
|
||||
33 -> {34};
|
||||
34 -> {35};
|
||||
35 -> {36};
|
||||
|
||||
subgraph cluster_8 {
|
||||
color=red
|
||||
36 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
subgraph cluster_9 {
|
||||
color=blue
|
||||
37 [label="Enter block"];
|
||||
38 [label="Const: Null(null)"];
|
||||
39 [label="Variable declaration: lvar x: R|kotlin/String?|"];
|
||||
40 [label="Const: String()"];
|
||||
41 [label="Assignment: R|<local>/x|"];
|
||||
42 [label="Access variable R|<local>/x|"];
|
||||
43 [label="Smart cast: R|<local>/x|"];
|
||||
44 [label="Access variable R|kotlin/String.length|"];
|
||||
45 [label="Const: Null(null)"];
|
||||
46 [label="Assignment: R|<local>/x|"];
|
||||
47 [label="Access variable R|<local>/x|"];
|
||||
48 [label="Smart cast: R|<local>/x|"];
|
||||
49 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
|
||||
50 [label="Exit block"];
|
||||
}
|
||||
51 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
}
|
||||
36 -> {37};
|
||||
37 -> {38};
|
||||
38 -> {39};
|
||||
@@ -129,5 +134,7 @@ digraph smartcastAfterReassignment_kt {
|
||||
46 -> {47};
|
||||
47 -> {48};
|
||||
48 -> {49};
|
||||
49 -> {50};
|
||||
50 -> {51};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user