Files
kotlin-fork/compiler/fir/analysis-tests/testData/resolve/smartcasts/nullability.dot
T
Brian Norman b55fda0c55 [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
2023-08-31 12:50:52 +00:00

1567 lines
57 KiB
Plaintext
Vendored

digraph nullability_kt {
graph [nodesep=3]
node [shape=box penwidth=2]
edge [penwidth=2]
subgraph cluster_0 {
color=red
0 [label="Enter file nullability.kt" style="filled" fillcolor=red];
1 [label="Exit file nullability.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=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 foo" style="filled" fillcolor=red];
5 [label="Exit function foo" style="filled" fillcolor=red];
}
4 -> {5};
subgraph cluster_3 {
color=red
6 [label="Enter function getA" style="filled" fillcolor=red];
7 [label="Exit function getA" style="filled" fillcolor=red];
}
6 -> {7};
subgraph cluster_4 {
color=red
8 [label="Enter class MyData" style="filled" fillcolor=red];
9 [label="Exit class MyData" style="filled" fillcolor=red];
}
8 -> {9} [color=green];
subgraph cluster_5 {
color=red
10 [label="Enter function fs" style="filled" fillcolor=red];
11 [label="Exit function fs" style="filled" fillcolor=red];
}
10 -> {11};
subgraph cluster_6 {
color=red
12 [label="Enter class Q" style="filled" fillcolor=red];
13 [label="Exit class Q" style="filled" fillcolor=red];
}
12 -> {13} [color=green];
subgraph cluster_7 {
color=red
14 [label="Enter function fdata" style="filled" fillcolor=red];
15 [label="Exit function fdata" style="filled" fillcolor=red];
}
14 -> {15};
subgraph cluster_8 {
color=red
16 [label="Enter class QImpl" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
17 [label="Enter property" style="filled" fillcolor=red];
18 [label="Access variable R|<local>/data|"];
19 [label="Exit property" style="filled" fillcolor=red];
}
subgraph cluster_10 {
color=blue
20 [label="Enter function <init>" style="filled" fillcolor=red];
21 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
22 [label="Exit function <init>" style="filled" fillcolor=red];
}
23 [label="Exit class QImpl" style="filled" fillcolor=red];
}
16 -> {17} [color=green];
16 -> {23} [style=dotted];
16 -> {17 20} [style=dashed];
17 -> {18};
18 -> {19};
19 -> {20} [color=green];
20 -> {21};
21 -> {22};
22 -> {23} [color=green];
subgraph cluster_11 {
color=red
24 [label="Enter function fdata" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
25 [label="Enter block"];
26 [label="Const: Null(null)"];
27 [label="Jump: ^fdata Null(null)"];
28 [label="Stub" style="filled" fillcolor=gray];
29 [label="Exit block" style="filled" fillcolor=gray];
}
30 [label="Exit function fdata" style="filled" fillcolor=red];
}
24 -> {25};
25 -> {26};
26 -> {27};
27 -> {30};
27 -> {28} [style=dotted];
28 -> {29} [style=dotted];
29 -> {30} [style=dotted];
subgraph cluster_13 {
color=red
31 [label="Enter class QImplMutable" style="filled" fillcolor=red];
subgraph cluster_14 {
color=blue
32 [label="Enter property" style="filled" fillcolor=red];
33 [label="Access variable R|<local>/data|"];
34 [label="Exit property" style="filled" fillcolor=red];
}
subgraph cluster_15 {
color=blue
35 [label="Enter function <init>" style="filled" fillcolor=red];
36 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
37 [label="Exit function <init>" style="filled" fillcolor=red];
}
38 [label="Exit class QImplMutable" style="filled" fillcolor=red];
}
31 -> {32} [color=green];
31 -> {38} [style=dotted];
31 -> {32 35} [style=dashed];
32 -> {33};
33 -> {34};
34 -> {35} [color=green];
35 -> {36};
36 -> {37};
37 -> {38} [color=green];
subgraph cluster_16 {
color=red
39 [label="Enter function fdata" style="filled" fillcolor=red];
subgraph cluster_17 {
color=blue
40 [label="Enter block"];
41 [label="Const: Null(null)"];
42 [label="Jump: ^fdata Null(null)"];
43 [label="Stub" style="filled" fillcolor=gray];
44 [label="Exit block" style="filled" fillcolor=gray];
}
45 [label="Exit function fdata" style="filled" fillcolor=red];
}
39 -> {40};
40 -> {41};
41 -> {42};
42 -> {45};
42 -> {43} [style=dotted];
43 -> {44} [style=dotted];
44 -> {45} [style=dotted];
subgraph cluster_18 {
color=red
46 [label="Enter class QImplWithCustomGetter" style="filled" fillcolor=red];
subgraph cluster_19 {
color=blue
47 [label="Enter function <init>" style="filled" fillcolor=red];
48 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
49 [label="Exit function <init>" style="filled" fillcolor=red];
}
50 [label="Exit class QImplWithCustomGetter" style="filled" fillcolor=red];
}
46 -> {47} [color=green];
46 -> {50} [style=dotted];
46 -> {47} [style=dashed];
47 -> {48};
48 -> {49};
49 -> {50} [color=green];
subgraph cluster_20 {
color=red
51 [label="Enter function <getter>" style="filled" fillcolor=red];
subgraph cluster_21 {
color=blue
52 [label="Enter block"];
53 [label="Const: Null(null)"];
54 [label="Jump: ^ Null(null)"];
55 [label="Stub" style="filled" fillcolor=gray];
56 [label="Exit block" style="filled" fillcolor=gray];
}
57 [label="Exit function <getter>" style="filled" fillcolor=red];
}
51 -> {52};
52 -> {53};
53 -> {54};
54 -> {57};
54 -> {55} [style=dotted];
55 -> {56} [style=dotted];
56 -> {57} [style=dotted];
subgraph cluster_22 {
color=red
58 [label="Enter function fdata" style="filled" fillcolor=red];
subgraph cluster_23 {
color=blue
59 [label="Enter block"];
60 [label="Const: Null(null)"];
61 [label="Jump: ^fdata Null(null)"];
62 [label="Stub" style="filled" fillcolor=gray];
63 [label="Exit block" style="filled" fillcolor=gray];
}
64 [label="Exit function fdata" style="filled" fillcolor=red];
}
58 -> {59};
59 -> {60};
60 -> {61};
61 -> {64};
61 -> {62} [style=dotted];
62 -> {63} [style=dotted];
63 -> {64} [style=dotted];
subgraph cluster_24 {
color=red
65 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_25 {
color=blue
66 [label="Enter block"];
subgraph cluster_26 {
color=blue
67 [label="Enter when"];
subgraph cluster_27 {
color=blue
68 [label="Enter when branch condition "];
69 [label="Access variable R|<local>/x|"];
70 [label="Const: Null(null)"];
71 [label="Equality operator !="];
72 [label="Exit when branch condition"];
}
subgraph cluster_28 {
color=blue
73 [label="Enter when branch condition else"];
74 [label="Exit when branch condition"];
}
75 [label="Enter when branch result"];
subgraph cluster_29 {
color=blue
76 [label="Enter block"];
77 [label="Access variable R|<local>/x|"];
78 [label="Smart cast: R|<local>/x|"];
79 [label="Function call: R|<local>/x|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
80 [label="Exit block"];
}
81 [label="Exit when branch result"];
82 [label="Enter when branch result"];
subgraph cluster_30 {
color=blue
83 [label="Enter block"];
84 [label="Access variable R|<local>/x|"];
85 [label="Smart cast: R|<local>/x|"];
86 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
87 [label="Exit block"];
}
88 [label="Exit when branch result"];
89 [label="Exit when"];
}
90 [label="Access variable R|<local>/x|"];
91 [label="Function call: R|<local>/x|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
92 [label="Exit block"];
}
93 [label="Exit function test_1" style="filled" fillcolor=red];
}
65 -> {66};
66 -> {67};
67 -> {68};
68 -> {69};
69 -> {70};
70 -> {71};
71 -> {72};
72 -> {73 82};
73 -> {74};
74 -> {75};
75 -> {76};
76 -> {77};
77 -> {78};
78 -> {79};
79 -> {80};
80 -> {81};
81 -> {89};
82 -> {83};
83 -> {84};
84 -> {85};
85 -> {86};
86 -> {87};
87 -> {88};
88 -> {89};
89 -> {90};
90 -> {91};
91 -> {92};
92 -> {93};
subgraph cluster_31 {
color=red
94 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_32 {
color=blue
95 [label="Enter block"];
subgraph cluster_33 {
color=blue
96 [label="Enter when"];
subgraph cluster_34 {
color=blue
97 [label="Enter when branch condition "];
98 [label="Access variable R|<local>/x|"];
99 [label="Const: Null(null)"];
100 [label="Equality operator =="];
101 [label="Exit when branch condition"];
}
subgraph cluster_35 {
color=blue
102 [label="Enter when branch condition else"];
103 [label="Exit when branch condition"];
}
104 [label="Enter when branch result"];
subgraph cluster_36 {
color=blue
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="Exit block"];
}
110 [label="Exit when branch result"];
111 [label="Enter when branch result"];
subgraph cluster_37 {
color=blue
112 [label="Enter block"];
113 [label="Access variable R|<local>/x|"];
114 [label="Smart cast: R|<local>/x|"];
115 [label="Function call: R|<local>/x|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
116 [label="Exit block"];
}
117 [label="Exit when branch result"];
118 [label="Exit when"];
}
119 [label="Access variable R|<local>/x|"];
120 [label="Function call: R|<local>/x|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
121 [label="Exit block"];
}
122 [label="Exit function test_2" style="filled" fillcolor=red];
}
94 -> {95};
95 -> {96};
96 -> {97};
97 -> {98};
98 -> {99};
99 -> {100};
100 -> {101};
101 -> {102 111};
102 -> {103};
103 -> {104};
104 -> {105};
105 -> {106};
106 -> {107};
107 -> {108};
108 -> {109};
109 -> {110};
110 -> {118};
111 -> {112};
112 -> {113};
113 -> {114};
114 -> {115};
115 -> {116};
116 -> {117};
117 -> {118};
118 -> {119};
119 -> {120};
120 -> {121};
121 -> {122};
subgraph cluster_38 {
color=red
123 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_39 {
color=blue
124 [label="Enter block"];
125 [label="Access variable R|<local>/x|"];
126 [label="Exit lhs of ?:"];
127 [label="Enter rhs of ?:"];
128 [label="Jump: ^test_3 Unit"];
129 [label="Stub" style="filled" fillcolor=gray];
130 [label="Lhs of ?: is not null"];
131 [label="Exit ?:"];
132 [label="Access variable R|<local>/x|"];
133 [label="Smart cast: R|<local>/x|"];
134 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
135 [label="Exit block"];
}
136 [label="Exit function test_3" style="filled" fillcolor=red];
}
123 -> {124};
124 -> {125};
125 -> {126};
126 -> {127 130};
127 -> {128};
128 -> {136};
128 -> {129} [style=dotted];
129 -> {131} [style=dotted];
130 -> {131};
131 -> {132};
132 -> {133};
133 -> {134};
134 -> {135};
135 -> {136};
subgraph cluster_40 {
color=red
137 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_41 {
color=blue
138 [label="Enter block"];
subgraph cluster_42 {
color=blue
139 [label="Enter when"];
subgraph cluster_43 {
color=blue
140 [label="Enter when branch condition "];
141 [label="Access variable R|<local>/x|"];
142 [label="Enter safe call"];
143 [label="Function call: $subj$.R|/A.getA|()" style="filled" fillcolor=yellow];
144 [label="Exit safe call"];
145 [label="Const: Null(null)"];
146 [label="Equality operator =="];
147 [label="Exit when branch condition"];
}
148 [label="Synthetic else branch"];
149 [label="Enter when branch result"];
subgraph cluster_44 {
color=blue
150 [label="Enter block"];
151 [label="Jump: ^test_4 Unit"];
152 [label="Stub" style="filled" fillcolor=gray];
153 [label="Exit block" style="filled" fillcolor=gray];
}
154 [label="Exit when branch result" style="filled" fillcolor=gray];
155 [label="Exit when"];
}
156 [label="Access variable R|<local>/x|"];
157 [label="Smart cast: R|<local>/x|"];
158 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
159 [label="Exit block"];
}
160 [label="Exit function test_4" style="filled" fillcolor=red];
}
137 -> {138};
138 -> {139};
139 -> {140};
140 -> {141};
141 -> {142 144};
142 -> {143};
143 -> {144};
144 -> {145};
145 -> {146};
146 -> {147};
147 -> {148 149};
148 -> {155};
149 -> {150};
150 -> {151};
151 -> {160};
151 -> {152} [style=dotted];
152 -> {153} [style=dotted];
153 -> {154} [style=dotted];
154 -> {155} [style=dotted];
155 -> {156};
156 -> {157};
157 -> {158};
158 -> {159};
159 -> {160};
subgraph cluster_45 {
color=red
161 [label="Enter function test_5" style="filled" fillcolor=red];
subgraph cluster_46 {
color=blue
162 [label="Enter block"];
subgraph cluster_47 {
color=blue
163 [label="Enter when"];
subgraph cluster_48 {
color=blue
164 [label="Enter when branch condition "];
165 [label="Access variable R|<local>/q|"];
166 [label="Enter safe call"];
167 [label="Access variable R|/Q.data|"];
168 [label="Enter safe call"];
169 [label="Access variable R|/MyData.s|"];
170 [label="Enter safe call"];
171 [label="Function call: $subj$.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
172 [label="Exit safe call"];
173 [label="Exit safe call"];
174 [label="Exit safe call"];
175 [label="Const: Null(null)"];
176 [label="Equality operator !="];
177 [label="Exit when branch condition"];
}
178 [label="Synthetic else branch"];
179 [label="Enter when branch result"];
subgraph cluster_49 {
color=blue
180 [label="Enter block"];
181 [label="Access variable R|<local>/q|"];
182 [label="Smart cast: R|<local>/q|"];
183 [label="Access variable R|/Q.data|"];
184 [label="Smart cast: R|<local>/q|.R|/Q.data|"];
185 [label="Access variable R|<local>/q|"];
186 [label="Smart cast: R|<local>/q|"];
187 [label="Access variable R|/Q.data|"];
188 [label="Smart cast: R|<local>/q|.R|/Q.data|"];
189 [label="Access variable R|/MyData.s<Inapplicable(UNSTABLE_SMARTCAST): /MyData.s>#|"];
190 [label="Access variable R|<local>/q|"];
191 [label="Smart cast: R|<local>/q|"];
192 [label="Access variable R|/Q.data|"];
193 [label="Smart cast: R|<local>/q|.R|/Q.data|"];
194 [label="Access variable R|/MyData.s<Inapplicable(UNSTABLE_SMARTCAST): /MyData.s>#|"];
195 [label="Function call: R|<local>/q|.R|/Q.data|.R|/MyData.s<Inapplicable(UNSTABLE_SMARTCAST): /MyData.s>#|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
196 [label="Exit block"];
}
197 [label="Exit when branch result"];
198 [label="Exit when"];
}
199 [label="Exit block"];
}
200 [label="Exit function test_5" style="filled" fillcolor=red];
}
161 -> {162};
162 -> {163};
163 -> {164};
164 -> {165};
165 -> {166 172};
166 -> {167};
167 -> {168 172};
168 -> {169};
169 -> {170 173};
170 -> {171};
171 -> {174};
172 -> {173};
173 -> {174};
174 -> {175};
175 -> {176};
176 -> {177};
177 -> {178 179};
178 -> {198};
179 -> {180};
180 -> {181};
181 -> {182};
182 -> {183};
183 -> {184};
184 -> {185};
185 -> {186};
186 -> {187};
187 -> {188};
188 -> {189};
189 -> {190};
190 -> {191};
191 -> {192};
192 -> {193};
193 -> {194};
194 -> {195};
195 -> {196};
196 -> {197};
197 -> {198};
198 -> {199};
199 -> {200};
subgraph cluster_50 {
color=red
201 [label="Enter function test_6" style="filled" fillcolor=red];
subgraph cluster_51 {
color=blue
202 [label="Enter block"];
203 [label="Access variable R|<local>/q|"];
204 [label="Enter safe call"];
205 [label="Access variable R|/Q.data|"];
206 [label="Enter safe call"];
207 [label="Access variable R|/MyData.s|"];
208 [label="Enter safe call"];
209 [label="Function call: $subj$.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
210 [label="Exit safe call"];
211 [label="Exit lhs of ?:"];
212 [label="Lhs of ?: is not null"];
213 [label="Exit safe call"];
214 [label="Exit safe call"];
215 [label="Enter rhs of ?:"];
216 [label="Jump: ^test_6 Unit"];
217 [label="Stub" style="filled" fillcolor=gray];
218 [label="Exit ?:"];
219 [label="Access variable R|<local>/q|"];
220 [label="Smart cast: R|<local>/q|"];
221 [label="Access variable R|/Q.data|"];
222 [label="Smart cast: R|<local>/q|.R|/Q.data|"];
223 [label="Access variable R|<local>/q|"];
224 [label="Smart cast: R|<local>/q|"];
225 [label="Access variable R|/Q.data|"];
226 [label="Smart cast: R|<local>/q|.R|/Q.data|"];
227 [label="Access variable R|/MyData.s<Inapplicable(UNSTABLE_SMARTCAST): /MyData.s>#|"];
228 [label="Access variable R|<local>/q|"];
229 [label="Smart cast: R|<local>/q|"];
230 [label="Access variable R|/Q.data|"];
231 [label="Smart cast: R|<local>/q|.R|/Q.data|"];
232 [label="Access variable R|/MyData.s<Inapplicable(UNSTABLE_SMARTCAST): /MyData.s>#|"];
233 [label="Function call: R|<local>/q|.R|/Q.data|.R|/MyData.s<Inapplicable(UNSTABLE_SMARTCAST): /MyData.s>#|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
234 [label="Exit block"];
}
235 [label="Exit function test_6" style="filled" fillcolor=red];
}
201 -> {202};
202 -> {203};
203 -> {204 213};
204 -> {205};
205 -> {206 213};
206 -> {207};
207 -> {208 214};
208 -> {209};
209 -> {210};
210 -> {211};
211 -> {212 215};
212 -> {218};
213 -> {214};
214 -> {215};
215 -> {216};
216 -> {235};
216 -> {217} [style=dotted];
217 -> {218} [style=dotted];
218 -> {219};
219 -> {220};
220 -> {221};
221 -> {222};
222 -> {223};
223 -> {224};
224 -> {225};
225 -> {226};
226 -> {227};
227 -> {228};
228 -> {229};
229 -> {230};
230 -> {231};
231 -> {232};
232 -> {233};
233 -> {234};
234 -> {235};
subgraph cluster_52 {
color=red
236 [label="Enter function test_7" style="filled" fillcolor=red];
subgraph cluster_53 {
color=blue
237 [label="Enter block"];
subgraph cluster_54 {
color=blue
238 [label="Enter when"];
subgraph cluster_55 {
color=blue
239 [label="Enter when branch condition "];
240 [label="Access variable R|<local>/q|"];
241 [label="Enter safe call"];
242 [label="Function call: $subj$.R|/Q.fdata|()" style="filled" fillcolor=yellow];
243 [label="Enter safe call"];
244 [label="Function call: $subj$.R|/MyData.fs|()" style="filled" fillcolor=yellow];
245 [label="Enter safe call"];
246 [label="Function call: $subj$.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
247 [label="Exit safe call"];
248 [label="Exit safe call"];
249 [label="Exit safe call"];
250 [label="Const: Null(null)"];
251 [label="Equality operator !="];
252 [label="Exit when branch condition"];
}
253 [label="Synthetic else branch"];
254 [label="Enter when branch result"];
subgraph cluster_56 {
color=blue
255 [label="Enter block"];
256 [label="Access variable R|<local>/q|"];
257 [label="Smart cast: R|<local>/q|"];
258 [label="Function call: R|<local>/q|.R|/Q.fdata|()" style="filled" fillcolor=yellow];
259 [label="Access variable R|<local>/q|"];
260 [label="Smart cast: R|<local>/q|"];
261 [label="Function call: R|<local>/q|.R|/Q.fdata|()" style="filled" fillcolor=yellow];
262 [label="Function call: R|<local>/q|.R|/Q.fdata|().R|/MyData.fs<Inapplicable(UNSAFE_CALL): /MyData.fs>#|()" style="filled" fillcolor=yellow];
263 [label="Access variable R|<local>/q|"];
264 [label="Smart cast: R|<local>/q|"];
265 [label="Function call: R|<local>/q|.R|/Q.fdata|()" style="filled" fillcolor=yellow];
266 [label="Function call: R|<local>/q|.R|/Q.fdata|().R|/MyData.fs<Inapplicable(UNSAFE_CALL): /MyData.fs>#|()" style="filled" fillcolor=yellow];
267 [label="Function call: R|<local>/q|.R|/Q.fdata|().R|/MyData.fs<Inapplicable(UNSAFE_CALL): /MyData.fs>#|().R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
268 [label="Exit block"];
}
269 [label="Exit when branch result"];
270 [label="Exit when"];
}
271 [label="Exit block"];
}
272 [label="Exit function test_7" style="filled" fillcolor=red];
}
236 -> {237};
237 -> {238};
238 -> {239};
239 -> {240};
240 -> {241 247};
241 -> {242};
242 -> {243 247};
243 -> {244};
244 -> {245 248};
245 -> {246};
246 -> {249};
247 -> {248};
248 -> {249};
249 -> {250};
250 -> {251};
251 -> {252};
252 -> {253 254};
253 -> {270};
254 -> {255};
255 -> {256};
256 -> {257};
257 -> {258};
258 -> {259};
259 -> {260};
260 -> {261};
261 -> {262};
262 -> {263};
263 -> {264};
264 -> {265};
265 -> {266};
266 -> {267};
267 -> {268};
268 -> {269};
269 -> {270};
270 -> {271};
271 -> {272};
subgraph cluster_57 {
color=red
273 [label="Enter function test_8" style="filled" fillcolor=red];
subgraph cluster_58 {
color=blue
274 [label="Enter block"];
subgraph cluster_59 {
color=blue
275 [label="Enter when"];
subgraph cluster_60 {
color=blue
276 [label="Enter when branch condition "];
277 [label="Access variable R|<local>/b|"];
278 [label="Const: Boolean(true)"];
279 [label="Equality operator =="];
280 [label="Exit when branch condition"];
}
281 [label="Synthetic else branch"];
282 [label="Enter when branch result"];
subgraph cluster_61 {
color=blue
283 [label="Enter block"];
284 [label="Access variable R|<local>/b|"];
285 [label="Smart cast: R|<local>/b|"];
286 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
287 [label="Exit block"];
}
288 [label="Exit when branch result"];
289 [label="Exit when"];
}
290 [label="Exit block"];
}
291 [label="Exit function test_8" style="filled" fillcolor=red];
}
273 -> {274};
274 -> {275};
275 -> {276};
276 -> {277};
277 -> {278};
278 -> {279};
279 -> {280};
280 -> {281 282};
281 -> {289};
282 -> {283};
283 -> {284};
284 -> {285};
285 -> {286};
286 -> {287};
287 -> {288};
288 -> {289};
289 -> {290};
290 -> {291};
subgraph cluster_62 {
color=red
292 [label="Enter function test_9" style="filled" fillcolor=red];
subgraph cluster_63 {
color=blue
293 [label="Enter block"];
subgraph cluster_64 {
color=blue
294 [label="Enter when"];
subgraph cluster_65 {
color=blue
295 [label="Enter when branch condition "];
296 [label="Access variable R|<local>/a|"];
297 [label="Access variable R|<local>/b|"];
298 [label="Equality operator =="];
299 [label="Exit when branch condition"];
}
300 [label="Synthetic else branch"];
301 [label="Enter when branch result"];
subgraph cluster_66 {
color=blue
302 [label="Enter block"];
303 [label="Access variable R|<local>/b|"];
304 [label="Smart cast: R|<local>/b|"];
305 [label="Function call: R|<local>/b|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
306 [label="Exit block"];
}
307 [label="Exit when branch result"];
308 [label="Exit when"];
}
309 [label="Access variable R|<local>/b|"];
310 [label="Function call: R|<local>/b|.R|kotlin/Int.inc<Inapplicable(UNSAFE_CALL): kotlin/Int.inc>#|()" style="filled" fillcolor=yellow];
subgraph cluster_67 {
color=blue
311 [label="Enter when"];
subgraph cluster_68 {
color=blue
312 [label="Enter when branch condition "];
313 [label="Access variable R|<local>/a|"];
314 [label="Access variable R|<local>/b|"];
315 [label="Equality operator ==="];
316 [label="Exit when branch condition"];
}
317 [label="Synthetic else branch"];
318 [label="Enter when branch result"];
subgraph cluster_69 {
color=blue
319 [label="Enter block"];
320 [label="Access variable R|<local>/b|"];
321 [label="Smart cast: R|<local>/b|"];
322 [label="Function call: R|<local>/b|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
323 [label="Exit block"];
}
324 [label="Exit when branch result"];
325 [label="Exit when"];
}
326 [label="Access variable R|<local>/b|"];
327 [label="Function call: R|<local>/b|.R|kotlin/Int.inc<Inapplicable(UNSAFE_CALL): kotlin/Int.inc>#|()" style="filled" fillcolor=yellow];
subgraph cluster_70 {
color=blue
328 [label="Enter when"];
subgraph cluster_71 {
color=blue
329 [label="Enter when branch condition "];
330 [label="Access variable R|<local>/b|"];
331 [label="Access variable R|<local>/a|"];
332 [label="Equality operator =="];
333 [label="Exit when branch condition"];
}
334 [label="Synthetic else branch"];
335 [label="Enter when branch result"];
subgraph cluster_72 {
color=blue
336 [label="Enter block"];
337 [label="Access variable R|<local>/b|"];
338 [label="Smart cast: R|<local>/b|"];
339 [label="Function call: R|<local>/b|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
340 [label="Exit block"];
}
341 [label="Exit when branch result"];
342 [label="Exit when"];
}
343 [label="Access variable R|<local>/b|"];
344 [label="Function call: R|<local>/b|.R|kotlin/Int.inc<Inapplicable(UNSAFE_CALL): kotlin/Int.inc>#|()" style="filled" fillcolor=yellow];
subgraph cluster_73 {
color=blue
345 [label="Enter when"];
subgraph cluster_74 {
color=blue
346 [label="Enter when branch condition "];
347 [label="Access variable R|<local>/b|"];
348 [label="Access variable R|<local>/a|"];
349 [label="Equality operator ==="];
350 [label="Exit when branch condition"];
}
351 [label="Synthetic else branch"];
352 [label="Enter when branch result"];
subgraph cluster_75 {
color=blue
353 [label="Enter block"];
354 [label="Access variable R|<local>/b|"];
355 [label="Smart cast: R|<local>/b|"];
356 [label="Function call: R|<local>/b|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
357 [label="Exit block"];
}
358 [label="Exit when branch result"];
359 [label="Exit when"];
}
360 [label="Access variable R|<local>/b|"];
361 [label="Function call: R|<local>/b|.R|kotlin/Int.inc<Inapplicable(UNSAFE_CALL): kotlin/Int.inc>#|()" style="filled" fillcolor=yellow];
362 [label="Exit block"];
}
363 [label="Exit function test_9" style="filled" fillcolor=red];
}
292 -> {293};
293 -> {294};
294 -> {295};
295 -> {296};
296 -> {297};
297 -> {298};
298 -> {299};
299 -> {300 301};
300 -> {308};
301 -> {302};
302 -> {303};
303 -> {304};
304 -> {305};
305 -> {306};
306 -> {307};
307 -> {308};
308 -> {309};
309 -> {310};
310 -> {311};
311 -> {312};
312 -> {313};
313 -> {314};
314 -> {315};
315 -> {316};
316 -> {317 318};
317 -> {325};
318 -> {319};
319 -> {320};
320 -> {321};
321 -> {322};
322 -> {323};
323 -> {324};
324 -> {325};
325 -> {326};
326 -> {327};
327 -> {328};
328 -> {329};
329 -> {330};
330 -> {331};
331 -> {332};
332 -> {333};
333 -> {334 335};
334 -> {342};
335 -> {336};
336 -> {337};
337 -> {338};
338 -> {339};
339 -> {340};
340 -> {341};
341 -> {342};
342 -> {343};
343 -> {344};
344 -> {345};
345 -> {346};
346 -> {347};
347 -> {348};
348 -> {349};
349 -> {350};
350 -> {351 352};
351 -> {359};
352 -> {353};
353 -> {354};
354 -> {355};
355 -> {356};
356 -> {357};
357 -> {358};
358 -> {359};
359 -> {360};
360 -> {361};
361 -> {362};
362 -> {363};
subgraph cluster_76 {
color=red
364 [label="Enter function test_10" style="filled" fillcolor=red];
subgraph cluster_77 {
color=blue
365 [label="Enter block"];
subgraph cluster_78 {
color=blue
366 [label="Enter when"];
subgraph cluster_79 {
color=blue
367 [label="Enter when branch condition "];
368 [label="Access variable R|<local>/a|"];
369 [label="Access variable R|<local>/b|"];
370 [label="Equality operator =="];
371 [label="Exit when branch condition"];
}
372 [label="Synthetic else branch"];
373 [label="Enter when branch result"];
subgraph cluster_80 {
color=blue
374 [label="Enter block"];
375 [label="Access variable R|<local>/b|"];
376 [label="Function call: R|<local>/b|.R|kotlin/Int.inc<Inapplicable(UNSAFE_CALL): kotlin/Int.inc>#|()" style="filled" fillcolor=yellow];
377 [label="Exit block"];
}
378 [label="Exit when branch result"];
379 [label="Exit when"];
}
380 [label="Access variable R|<local>/b|"];
381 [label="Function call: R|<local>/b|.R|kotlin/Int.inc<Inapplicable(UNSAFE_CALL): kotlin/Int.inc>#|()" style="filled" fillcolor=yellow];
subgraph cluster_81 {
color=blue
382 [label="Enter when"];
subgraph cluster_82 {
color=blue
383 [label="Enter when branch condition "];
384 [label="Access variable R|<local>/a|"];
385 [label="Access variable R|<local>/b|"];
386 [label="Equality operator ==="];
387 [label="Exit when branch condition"];
}
388 [label="Synthetic else branch"];
389 [label="Enter when branch result"];
subgraph cluster_83 {
color=blue
390 [label="Enter block"];
391 [label="Access variable R|<local>/b|"];
392 [label="Function call: R|<local>/b|.R|kotlin/Int.inc<Inapplicable(UNSAFE_CALL): kotlin/Int.inc>#|()" style="filled" fillcolor=yellow];
393 [label="Exit block"];
}
394 [label="Exit when branch result"];
395 [label="Exit when"];
}
396 [label="Access variable R|<local>/b|"];
397 [label="Function call: R|<local>/b|.R|kotlin/Int.inc<Inapplicable(UNSAFE_CALL): kotlin/Int.inc>#|()" style="filled" fillcolor=yellow];
subgraph cluster_84 {
color=blue
398 [label="Enter when"];
subgraph cluster_85 {
color=blue
399 [label="Enter when branch condition "];
400 [label="Access variable R|<local>/b|"];
401 [label="Access variable R|<local>/a|"];
402 [label="Equality operator =="];
403 [label="Exit when branch condition"];
}
404 [label="Synthetic else branch"];
405 [label="Enter when branch result"];
subgraph cluster_86 {
color=blue
406 [label="Enter block"];
407 [label="Access variable R|<local>/b|"];
408 [label="Function call: R|<local>/b|.R|kotlin/Int.inc<Inapplicable(UNSAFE_CALL): kotlin/Int.inc>#|()" style="filled" fillcolor=yellow];
409 [label="Exit block"];
}
410 [label="Exit when branch result"];
411 [label="Exit when"];
}
412 [label="Access variable R|<local>/b|"];
413 [label="Function call: R|<local>/b|.R|kotlin/Int.inc<Inapplicable(UNSAFE_CALL): kotlin/Int.inc>#|()" style="filled" fillcolor=yellow];
subgraph cluster_87 {
color=blue
414 [label="Enter when"];
subgraph cluster_88 {
color=blue
415 [label="Enter when branch condition "];
416 [label="Access variable R|<local>/b|"];
417 [label="Access variable R|<local>/a|"];
418 [label="Equality operator ==="];
419 [label="Exit when branch condition"];
}
420 [label="Synthetic else branch"];
421 [label="Enter when branch result"];
subgraph cluster_89 {
color=blue
422 [label="Enter block"];
423 [label="Access variable R|<local>/b|"];
424 [label="Function call: R|<local>/b|.R|kotlin/Int.inc<Inapplicable(UNSAFE_CALL): kotlin/Int.inc>#|()" style="filled" fillcolor=yellow];
425 [label="Exit block"];
}
426 [label="Exit when branch result"];
427 [label="Exit when"];
}
428 [label="Access variable R|<local>/b|"];
429 [label="Function call: R|<local>/b|.R|kotlin/Int.inc<Inapplicable(UNSAFE_CALL): kotlin/Int.inc>#|()" style="filled" fillcolor=yellow];
430 [label="Exit block"];
}
431 [label="Exit function test_10" style="filled" fillcolor=red];
}
364 -> {365};
365 -> {366};
366 -> {367};
367 -> {368};
368 -> {369};
369 -> {370};
370 -> {371};
371 -> {372 373};
372 -> {379};
373 -> {374};
374 -> {375};
375 -> {376};
376 -> {377};
377 -> {378};
378 -> {379};
379 -> {380};
380 -> {381};
381 -> {382};
382 -> {383};
383 -> {384};
384 -> {385};
385 -> {386};
386 -> {387};
387 -> {388 389};
388 -> {395};
389 -> {390};
390 -> {391};
391 -> {392};
392 -> {393};
393 -> {394};
394 -> {395};
395 -> {396};
396 -> {397};
397 -> {398};
398 -> {399};
399 -> {400};
400 -> {401};
401 -> {402};
402 -> {403};
403 -> {404 405};
404 -> {411};
405 -> {406};
406 -> {407};
407 -> {408};
408 -> {409};
409 -> {410};
410 -> {411};
411 -> {412};
412 -> {413};
413 -> {414};
414 -> {415};
415 -> {416};
416 -> {417};
417 -> {418};
418 -> {419};
419 -> {420 421};
420 -> {427};
421 -> {422};
422 -> {423};
423 -> {424};
424 -> {425};
425 -> {426};
426 -> {427};
427 -> {428};
428 -> {429};
429 -> {430};
430 -> {431};
subgraph cluster_90 {
color=red
432 [label="Enter function test_11" style="filled" fillcolor=red];
subgraph cluster_91 {
color=blue
433 [label="Enter block"];
subgraph cluster_92 {
color=blue
434 [label="Enter when"];
subgraph cluster_93 {
color=blue
435 [label="Enter when branch condition "];
436 [label="Access variable R|<local>/q|"];
437 [label="Enter safe call"];
438 [label="Access variable R|/QImpl.data|"];
439 [label="Enter safe call"];
440 [label="Access variable R|/MyData.s|"];
441 [label="Enter safe call"];
442 [label="Function call: $subj$.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
443 [label="Exit safe call"];
444 [label="Exit safe call"];
445 [label="Exit safe call"];
446 [label="Const: Null(null)"];
447 [label="Equality operator !="];
448 [label="Exit when branch condition"];
}
449 [label="Synthetic else branch"];
450 [label="Enter when branch result"];
subgraph cluster_94 {
color=blue
451 [label="Enter block"];
452 [label="Access variable R|<local>/q|"];
453 [label="Smart cast: R|<local>/q|"];
454 [label="Access variable R|/QImpl.data|"];
455 [label="Smart cast: R|<local>/q|.R|/QImpl.data|"];
456 [label="Access variable R|<local>/q|"];
457 [label="Smart cast: R|<local>/q|"];
458 [label="Access variable R|/QImpl.data|"];
459 [label="Smart cast: R|<local>/q|.R|/QImpl.data|"];
460 [label="Access variable R|/MyData.s|"];
461 [label="Access variable R|<local>/q|"];
462 [label="Smart cast: R|<local>/q|"];
463 [label="Access variable R|/QImpl.data|"];
464 [label="Smart cast: R|<local>/q|.R|/QImpl.data|"];
465 [label="Access variable R|/MyData.s|"];
466 [label="Function call: R|<local>/q|.R|/QImpl.data|.R|/MyData.s|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
467 [label="Access variable R|<local>/q2|"];
468 [label="Access variable R|/QImpl.data|"];
469 [label="Access variable R|<local>/q2|"];
470 [label="Access variable R|/QImpl.data|"];
471 [label="Access variable R|/MyData.s<Inapplicable(UNSAFE_CALL): /MyData.s>#|"];
472 [label="Access variable R|<local>/q2|"];
473 [label="Access variable R|/QImpl.data|"];
474 [label="Access variable R|/MyData.s<Inapplicable(UNSAFE_CALL): /MyData.s>#|"];
475 [label="Function call: R|<local>/q2|.R|/QImpl.data|.R|/MyData.s<Inapplicable(UNSAFE_CALL): /MyData.s>#|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
subgraph cluster_95 {
color=blue
476 [label="Enter when"];
subgraph cluster_96 {
color=blue
477 [label="Enter when branch condition "];
478 [label="Access variable R|<local>/q2|"];
479 [label="Access variable R|/QImpl.data|"];
480 [label="Const: Null(null)"];
481 [label="Equality operator !="];
482 [label="Exit when branch condition"];
}
483 [label="Synthetic else branch"];
484 [label="Enter when branch result"];
subgraph cluster_97 {
color=blue
485 [label="Enter block"];
486 [label="Access variable R|<local>/q2|"];
487 [label="Access variable R|/QImpl.data|"];
488 [label="Smart cast: R|<local>/q2|.R|/QImpl.data|"];
489 [label="Access variable R|/MyData.s|"];
490 [label="Access variable R|<local>/q2|"];
491 [label="Access variable R|/QImpl.data|"];
492 [label="Smart cast: R|<local>/q2|.R|/QImpl.data|"];
493 [label="Access variable R|/MyData.s|"];
494 [label="Function call: R|<local>/q2|.R|/QImpl.data|.R|/MyData.s|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
495 [label="Exit block"];
}
496 [label="Exit when branch result"];
497 [label="Exit when"];
}
498 [label="Exit block"];
}
499 [label="Exit when branch result"];
500 [label="Exit when"];
}
501 [label="Exit block"];
}
502 [label="Exit function test_11" style="filled" fillcolor=red];
}
432 -> {433};
433 -> {434};
434 -> {435};
435 -> {436};
436 -> {437 443};
437 -> {438};
438 -> {439 443};
439 -> {440};
440 -> {441 444};
441 -> {442};
442 -> {445};
443 -> {444};
444 -> {445};
445 -> {446};
446 -> {447};
447 -> {448};
448 -> {449 450};
449 -> {500};
450 -> {451};
451 -> {452};
452 -> {453};
453 -> {454};
454 -> {455};
455 -> {456};
456 -> {457};
457 -> {458};
458 -> {459};
459 -> {460};
460 -> {461};
461 -> {462};
462 -> {463};
463 -> {464};
464 -> {465};
465 -> {466};
466 -> {467};
467 -> {468};
468 -> {469};
469 -> {470};
470 -> {471};
471 -> {472};
472 -> {473};
473 -> {474};
474 -> {475};
475 -> {476};
476 -> {477};
477 -> {478};
478 -> {479};
479 -> {480};
480 -> {481};
481 -> {482};
482 -> {483 484};
483 -> {497};
484 -> {485};
485 -> {486};
486 -> {487};
487 -> {488};
488 -> {489};
489 -> {490};
490 -> {491};
491 -> {492};
492 -> {493};
493 -> {494};
494 -> {495};
495 -> {496};
496 -> {497};
497 -> {498};
498 -> {499};
499 -> {500};
500 -> {501};
501 -> {502};
subgraph cluster_98 {
color=red
503 [label="Enter function test_12" style="filled" fillcolor=red];
subgraph cluster_99 {
color=blue
504 [label="Enter block"];
subgraph cluster_100 {
color=blue
505 [label="Enter when"];
subgraph cluster_101 {
color=blue
506 [label="Enter when branch condition "];
507 [label="Access variable R|<local>/q|"];
508 [label="Enter safe call"];
509 [label="Access variable R|/QImplWithCustomGetter.data|"];
510 [label="Enter safe call"];
511 [label="Access variable R|/MyData.s|"];
512 [label="Enter safe call"];
513 [label="Function call: $subj$.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
514 [label="Exit safe call"];
515 [label="Exit safe call"];
516 [label="Exit safe call"];
517 [label="Const: Null(null)"];
518 [label="Equality operator !="];
519 [label="Exit when branch condition"];
}
520 [label="Synthetic else branch"];
521 [label="Enter when branch result"];
subgraph cluster_102 {
color=blue
522 [label="Enter block"];
523 [label="Access variable R|<local>/q|"];
524 [label="Smart cast: R|<local>/q|"];
525 [label="Access variable R|/QImplWithCustomGetter.data|"];
526 [label="Smart cast: R|<local>/q|.R|/QImplWithCustomGetter.data|"];
527 [label="Access variable R|<local>/q|"];
528 [label="Smart cast: R|<local>/q|"];
529 [label="Access variable R|/QImplWithCustomGetter.data|"];
530 [label="Smart cast: R|<local>/q|.R|/QImplWithCustomGetter.data|"];
531 [label="Access variable R|/MyData.s<Inapplicable(UNSTABLE_SMARTCAST): /MyData.s>#|"];
532 [label="Access variable R|<local>/q|"];
533 [label="Smart cast: R|<local>/q|"];
534 [label="Access variable R|/QImplWithCustomGetter.data|"];
535 [label="Smart cast: R|<local>/q|.R|/QImplWithCustomGetter.data|"];
536 [label="Access variable R|/MyData.s<Inapplicable(UNSTABLE_SMARTCAST): /MyData.s>#|"];
537 [label="Function call: R|<local>/q|.R|/QImplWithCustomGetter.data|.R|/MyData.s<Inapplicable(UNSTABLE_SMARTCAST): /MyData.s>#|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
538 [label="Exit block"];
}
539 [label="Exit when branch result"];
540 [label="Exit when"];
}
541 [label="Exit block"];
}
542 [label="Exit function test_12" style="filled" fillcolor=red];
}
503 -> {504};
504 -> {505};
505 -> {506};
506 -> {507};
507 -> {508 514};
508 -> {509};
509 -> {510 514};
510 -> {511};
511 -> {512 515};
512 -> {513};
513 -> {516};
514 -> {515};
515 -> {516};
516 -> {517};
517 -> {518};
518 -> {519};
519 -> {520 521};
520 -> {540};
521 -> {522};
522 -> {523};
523 -> {524};
524 -> {525};
525 -> {526};
526 -> {527};
527 -> {528};
528 -> {529};
529 -> {530};
530 -> {531};
531 -> {532};
532 -> {533};
533 -> {534};
534 -> {535};
535 -> {536};
536 -> {537};
537 -> {538};
538 -> {539};
539 -> {540};
540 -> {541};
541 -> {542};
subgraph cluster_103 {
color=red
543 [label="Enter function test_13" style="filled" fillcolor=red];
subgraph cluster_104 {
color=blue
544 [label="Enter block"];
subgraph cluster_105 {
color=blue
545 [label="Enter when"];
subgraph cluster_106 {
color=blue
546 [label="Enter when branch condition "];
547 [label="Access variable R|<local>/q|"];
548 [label="Enter safe call"];
549 [label="Access variable R|/QImplMutable.data|"];
550 [label="Enter safe call"];
551 [label="Access variable R|/MyData.s|"];
552 [label="Enter safe call"];
553 [label="Function call: $subj$.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
554 [label="Exit safe call"];
555 [label="Exit safe call"];
556 [label="Exit safe call"];
557 [label="Const: Null(null)"];
558 [label="Equality operator !="];
559 [label="Exit when branch condition"];
}
560 [label="Synthetic else branch"];
561 [label="Enter when branch result"];
subgraph cluster_107 {
color=blue
562 [label="Enter block"];
563 [label="Access variable R|<local>/q|"];
564 [label="Smart cast: R|<local>/q|"];
565 [label="Access variable R|/QImplMutable.data|"];
566 [label="Smart cast: R|<local>/q|.R|/QImplMutable.data|"];
567 [label="Access variable R|<local>/q|"];
568 [label="Smart cast: R|<local>/q|"];
569 [label="Access variable R|/QImplMutable.data|"];
570 [label="Smart cast: R|<local>/q|.R|/QImplMutable.data|"];
571 [label="Access variable R|/MyData.s<Inapplicable(UNSTABLE_SMARTCAST): /MyData.s>#|"];
572 [label="Access variable R|<local>/q|"];
573 [label="Smart cast: R|<local>/q|"];
574 [label="Access variable R|/QImplMutable.data|"];
575 [label="Smart cast: R|<local>/q|.R|/QImplMutable.data|"];
576 [label="Access variable R|/MyData.s<Inapplicable(UNSTABLE_SMARTCAST): /MyData.s>#|"];
577 [label="Function call: R|<local>/q|.R|/QImplMutable.data|.R|/MyData.s<Inapplicable(UNSTABLE_SMARTCAST): /MyData.s>#|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
578 [label="Exit block"];
}
579 [label="Exit when branch result"];
580 [label="Exit when"];
}
581 [label="Exit block"];
}
582 [label="Exit function test_13" style="filled" fillcolor=red];
}
543 -> {544};
544 -> {545};
545 -> {546};
546 -> {547};
547 -> {548 554};
548 -> {549};
549 -> {550 554};
550 -> {551};
551 -> {552 555};
552 -> {553};
553 -> {556};
554 -> {555};
555 -> {556};
556 -> {557};
557 -> {558};
558 -> {559};
559 -> {560 561};
560 -> {580};
561 -> {562};
562 -> {563};
563 -> {564};
564 -> {565};
565 -> {566};
566 -> {567};
567 -> {568};
568 -> {569};
569 -> {570};
570 -> {571};
571 -> {572};
572 -> {573};
573 -> {574};
574 -> {575};
575 -> {576};
576 -> {577};
577 -> {578};
578 -> {579};
579 -> {580};
580 -> {581};
581 -> {582};
subgraph cluster_108 {
color=red
583 [label="Enter function test_14" style="filled" fillcolor=red];
subgraph cluster_109 {
color=blue
584 [label="Enter block"];
subgraph cluster_110 {
color=blue
585 [label="Enter when"];
subgraph cluster_111 {
color=blue
586 [label="Enter when branch condition "];
587 [label="Access variable R|<local>/q|"];
588 [label="Access variable R|/Q.data|"];
589 [label="Const: Null(null)"];
590 [label="Equality operator =="];
591 [label="Exit when branch condition"];
}
592 [label="Synthetic else branch"];
593 [label="Enter when branch result"];
subgraph cluster_112 {
color=blue
594 [label="Enter block"];
595 [label="Access variable R|<local>/q|"];
596 [label="Access variable R|/Q.data|"];
597 [label="Smart cast: R|<local>/q|.R|/Q.data|"];
598 [label="Access variable R|/MyData.s<Inapplicable(UNSAFE_CALL): /MyData.s>#|"];
599 [label="Exit block"];
}
600 [label="Exit when branch result"];
601 [label="Exit when"];
}
602 [label="Exit block"];
}
603 [label="Exit function test_14" style="filled" fillcolor=red];
}
583 -> {584};
584 -> {585};
585 -> {586};
586 -> {587};
587 -> {588};
588 -> {589};
589 -> {590};
590 -> {591};
591 -> {592 593};
592 -> {601};
593 -> {594};
594 -> {595};
595 -> {596};
596 -> {597};
597 -> {598};
598 -> {599};
599 -> {600};
600 -> {601};
601 -> {602};
602 -> {603};
}