[FIR] Rewind DFA after call arguments for correct receiver smartcasting

^KT-63709 Fixed
This commit is contained in:
Brian Norman
2023-11-27 13:48:09 -06:00
committed by Space Team
parent 38d5e56530
commit 0881910a1b
128 changed files with 22457 additions and 16148 deletions
@@ -89,73 +89,101 @@ digraph plusAssignWithLambdaInRhs_kt {
subgraph cluster_9 {
color=blue
28 [label="Enter block"];
29 [label="Function call: R|kotlin/collections/mutableListOf|<R|() -> kotlin/Unit|>()" style="filled" fillcolor=yellow];
30 [label="Variable declaration: lval queue: R|kotlin/collections/MutableList<kotlin/Function0<kotlin/Unit>>|"];
31 [label="Postponed enter to lambda"];
subgraph cluster_10 {
color=blue
32 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
33 [label="Enter block"];
34 [label="Access variable R|<local>/queue|"];
35 [label="Postponed enter to lambda"];
subgraph cluster_12 {
color=blue
36 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_13 {
color=blue
37 [label="Enter block"];
38 [label="Function call: R|<local>/computation|.R|SubstitutionOverride<kotlin/Function0.invoke: R|T|>|()" style="filled" fillcolor=yellow];
39 [label="Function call: R|<local>/resolve|.R|SubstitutionOverride<kotlin/Function1.invoke: R|kotlin/Unit|>|(...)" style="filled" fillcolor=yellow];
40 [label="Exit block"];
}
41 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
42 [label="Postponed exit from lambda"];
43 [label="Function call: R|<local>/queue|.R|kotlin/collections/plusAssign|<R|() -> kotlin/Unit|>(...)" style="filled" fillcolor=yellow];
44 [label="Exit block"];
}
45 [label="Exit function <anonymous>" style="filled" fillcolor=red];
29 [label="Function call arguments enter"];
30 [label="Function call arguments exit"];
}
46 [label="Postponed exit from lambda"];
47 [label="Function call: R|/A.A|<R|T|>(...)" style="filled" fillcolor=yellow];
48 [label="Jump: ^postpone R|/A.A|<R|T|>(<L> = A@fun <anonymous>(resolve: R|(T) -> kotlin/Unit|): R|kotlin/Unit| <inline=NoInline> {
31 [label="Function call: R|kotlin/collections/mutableListOf|<R|() -> kotlin/Unit|>()" style="filled" fillcolor=yellow];
32 [label="Variable declaration: lval queue: R|kotlin/collections/MutableList<kotlin/Function0<kotlin/Unit>>|"];
subgraph cluster_11 {
color=blue
33 [label="Function call arguments enter"];
34 [label="Postponed enter to lambda"];
subgraph cluster_12 {
color=blue
35 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_13 {
color=blue
36 [label="Enter block"];
37 [label="Access variable R|<local>/queue|"];
38 [label="Postponed enter to lambda"];
subgraph cluster_14 {
color=blue
39 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_15 {
color=blue
40 [label="Enter block"];
subgraph cluster_16 {
color=blue
41 [label="Function call arguments enter"];
subgraph cluster_17 {
color=blue
42 [label="Function call arguments enter"];
43 [label="Function call arguments exit"];
}
44 [label="Function call: R|<local>/computation|.R|SubstitutionOverride<kotlin/Function0.invoke: R|T|>|()" style="filled" fillcolor=yellow];
45 [label="Function call arguments exit"];
}
46 [label="Function call: R|<local>/resolve|.R|SubstitutionOverride<kotlin/Function1.invoke: R|kotlin/Unit|>|(...)" style="filled" fillcolor=yellow];
47 [label="Exit block"];
}
48 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
49 [label="Postponed exit from lambda"];
50 [label="Function call: R|<local>/queue|.R|kotlin/collections/plusAssign|<R|() -> kotlin/Unit|>(...)" style="filled" fillcolor=yellow];
51 [label="Exit block"];
}
52 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
53 [label="Function call arguments exit"];
}
54 [label="Postponed exit from lambda"];
55 [label="Function call: R|/A.A|<R|T|>(...)" style="filled" fillcolor=yellow];
56 [label="Jump: ^postpone R|/A.A|<R|T|>(<L> = A@fun <anonymous>(resolve: R|(T) -> kotlin/Unit|): R|kotlin/Unit| <inline=NoInline> {
R|<local>/queue|.R|kotlin/collections/plusAssign|<R|() -> kotlin/Unit|>(fun <anonymous>(): R|kotlin/Unit| <inline=NoInline> {
R|<local>/resolve|.R|SubstitutionOverride<kotlin/Function1.invoke: R|kotlin/Unit|>|(R|<local>/computation|.R|SubstitutionOverride<kotlin/Function0.invoke: R|T|>|())
}
)
}
)"];
49 [label="Stub" style="filled" fillcolor=gray];
50 [label="Exit block" style="filled" fillcolor=gray];
57 [label="Stub" style="filled" fillcolor=gray];
58 [label="Exit block" style="filled" fillcolor=gray];
}
51 [label="Exit function postpone" style="filled" fillcolor=red];
59 [label="Exit function postpone" style="filled" fillcolor=red];
}
27 -> {28};
28 -> {29};
29 -> {30};
30 -> {31};
31 -> {32 46 47};
31 -> {32} [style=dashed];
31 -> {32};
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36 42 43};
35 -> {36} [style=dashed];
34 -> {35 53 54};
34 -> {35} [style=dashed];
35 -> {36};
36 -> {37};
37 -> {38};
38 -> {39};
38 -> {39 49 50};
38 -> {39} [style=dashed];
39 -> {40};
40 -> {41};
41 -> {42};
42 -> {43};
43 -> {44};
44 -> {45};
45 -> {46};
46 -> {47};
47 -> {48};
48 -> {51};
48 -> {49} [style=dotted];
49 -> {50} [style=dotted];
50 -> {51} [style=dotted];
49 -> {50};
50 -> {51};
51 -> {52};
53 -> {55};
54 -> {55};
55 -> {56};
56 -> {59};
56 -> {57} [style=dotted];
57 -> {58} [style=dotted];
58 -> {59} [style=dotted];
}