FIR DFA: route data flow through anonymous objects

^KT-44515 Fixed
This commit is contained in:
pyos
2022-12-11 16:40:12 +01:00
committed by Dmitriy Novozhilov
parent 17ee8f3a7b
commit 0dd949bb36
16 changed files with 365 additions and 405 deletions
@@ -124,9 +124,8 @@ digraph smartcastInByClause_kt {
}
55 [label="Exit class <anonymous object>" style="filled" fillcolor=red];
}
56 [label="Exit anonymous object"];
57 [label="Exit anonymous object expression"];
58 [label="Jump: ^test object : R|Base| {
56 [label="Exit anonymous object expression"];
57 [label="Jump: ^test object : R|Base| {
private constructor(): R|<anonymous>| {
super<R|kotlin/Any|>()
}
@@ -142,24 +141,24 @@ digraph smartcastInByClause_kt {
}
"];
59 [label="Stub" style="filled" fillcolor=gray];
60 [label="Exit block" style="filled" fillcolor=gray];
58 [label="Stub" style="filled" fillcolor=gray];
59 [label="Exit block" style="filled" fillcolor=gray];
}
61 [label="Exit function test" style="filled" fillcolor=red];
60 [label="Exit function test" style="filled" fillcolor=red];
}
subgraph cluster_14 {
color=blue
62 [label="Enter function foo" style="filled" fillcolor=red];
61 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_15 {
color=blue
63 [label="Enter block"];
64 [label="Access variable R|<local>/a|"];
65 [label="Smart cast: R|<local>/a|"];
66 [label="Access variable R|/A.index|"];
67 [label="Function call: R|/takeInt|(...)" style="filled" fillcolor=yellow];
68 [label="Exit block"];
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"];
}
69 [label="Exit function foo" style="filled" fillcolor=red];
68 [label="Exit function foo" style="filled" fillcolor=red];
}
21 -> {22};
22 -> {23};
@@ -170,7 +169,7 @@ digraph smartcastInByClause_kt {
27 -> {28 32};
28 -> {29};
29 -> {30};
30 -> {61};
30 -> {60};
30 -> {31} [style=dotted];
31 -> {33} [style=dotted];
32 -> {33};
@@ -181,54 +180,56 @@ digraph smartcastInByClause_kt {
37 -> {38};
38 -> {39};
39 -> {40};
39 -> {56} [color=red];
39 -> {56} [style=dotted];
39 -> {40} [style=dashed];
40 -> {41};
40 -> {44 50 62} [color=red];
40 -> {44 50 61} [color=red];
40 -> {55} [style=dotted];
40 -> {41 44 50} [style=dashed];
41 -> {42};
42 -> {43};
43 -> {44} [color=green];
43 -> {55} [color=red];
44 -> {45};
45 -> {46};
46 -> {47};
47 -> {48};
48 -> {49};
49 -> {50} [color=green];
49 -> {55} [color=red];
50 -> {51};
51 -> {52};
52 -> {53};
53 -> {54};
54 -> {55} [color=green];
55 -> {56 62} [color=green];
55 -> {62} [style=dashed];
54 -> {55};
55 -> {56};
55 -> {61} [color=green];
55 -> {61} [style=dashed];
56 -> {57};
57 -> {58};
58 -> {61};
57 -> {60};
57 -> {58} [style=dotted];
58 -> {59} [style=dotted];
59 -> {60} [style=dotted];
60 -> {61} [style=dotted];
61 -> {62};
62 -> {63};
63 -> {64};
64 -> {65};
65 -> {66};
66 -> {67};
67 -> {68};
68 -> {69};
subgraph cluster_16 {
color=red
70 [label="Enter function takeInt" style="filled" fillcolor=red];
69 [label="Enter function takeInt" style="filled" fillcolor=red];
subgraph cluster_17 {
color=blue
71 [label="Enter block"];
72 [label="Exit block"];
70 [label="Enter block"];
71 [label="Exit block"];
}
73 [label="Exit function takeInt" style="filled" fillcolor=red];
72 [label="Exit function takeInt" style="filled" fillcolor=red];
}
69 -> {70};
70 -> {71};
71 -> {72};
72 -> {73};
}