Files
kotlin-fork/compiler/testData/codegen/box/smartCasts/kt44814.dot
T
Brian Norman 17a1871b83 [FIR] Make sure the primary constructor is first in class CFG
The primary constructor of a class needs to be the first subgraph of the
class control-flow graph. Based on the Kotlin specification, class
initialization order goes first primary constructor, in-place
declarations (properties and init blocks), and then secondary
constructors. If the class doesn't have a primary constructor, then it
is just skipped in the order.

Unfortunately, the class control-flow graph had in-place declarations
first and then all constructors. Instead, we should treat the primary
constructor as the first in-place declaration, and then continue with
the existing processing as secondary constructors. This will guarantee
that super constructor calls have the correct property initialization
information.

^KT-65093 Fixed
2024-01-23 23:16:00 +00:00

1001 lines
40 KiB
Plaintext
Vendored

digraph kt44814_kt {
graph [nodesep=3]
node [shape=box penwidth=2]
edge [penwidth=2]
subgraph cluster_0 {
color=red
0 [label="Enter file kt44814.kt [1]" style="filled" fillcolor=red];
1 [label="Exit file kt44814.kt [1]" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter class FlyweightCapableTreeStructure [2]" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
3 [label="Enter function <init> [3]" style="filled" fillcolor=red];
4 [label="Delegated constructor call: super<R|kotlin/Any|>() [3]" style="filled" fillcolor=yellow];
5 [label="Exit function <init> [3]" style="filled" fillcolor=red];
}
6 [label="Exit class FlyweightCapableTreeStructure [2]" 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 FirSourceElement [2]" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
8 [label="Enter function <init> [3]" style="filled" fillcolor=red];
9 [label="Delegated constructor call: super<R|kotlin/Any|>() [3]" style="filled" fillcolor=yellow];
10 [label="Exit function <init> [3]" style="filled" fillcolor=red];
}
11 [label="Exit class FirSourceElement [2]" style="filled" fillcolor=red];
}
7 -> {8} [color=green];
7 -> {11} [style=dotted];
7 -> {8} [style=dashed];
8 -> {9};
9 -> {10};
10 -> {11} [color=green];
subgraph cluster_5 {
color=red
12 [label="Enter class FirPsiSourceElement [2]" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
13 [label="Enter function <init> [3]" style="filled" fillcolor=red];
14 [label="Delegated constructor call: super<R|FirSourceElement|>() [3]" style="filled" fillcolor=yellow];
15 [label="Exit function <init> [3]" style="filled" fillcolor=red];
}
subgraph cluster_7 {
color=blue
16 [label="Enter property [3]" style="filled" fillcolor=red];
17 [label="Access variable R|<local>/psi| [3]"];
18 [label="Exit property [3]" style="filled" fillcolor=red];
}
subgraph cluster_8 {
color=blue
19 [label="Enter property [3]" style="filled" fillcolor=red];
20 [label="Access variable R|<local>/lighterASTNode| [3]"];
21 [label="Exit property [3]" style="filled" fillcolor=red];
}
subgraph cluster_9 {
color=blue
22 [label="Enter property [3]" style="filled" fillcolor=red];
23 [label="Access variable R|<local>/treeStructure| [3]"];
24 [label="Exit property [3]" style="filled" fillcolor=red];
}
25 [label="Exit class FirPsiSourceElement [2]" style="filled" fillcolor=red];
}
12 -> {13} [color=green];
12 -> {25} [style=dotted];
12 -> {13 16 19 22} [style=dashed];
13 -> {14};
14 -> {15};
15 -> {16} [color=green];
16 -> {17};
17 -> {18};
18 -> {19} [color=green];
19 -> {20};
20 -> {21};
21 -> {22} [color=green];
22 -> {23};
23 -> {24};
24 -> {25} [color=green];
subgraph cluster_10 {
color=red
26 [label="Enter class FirLightSourceElement [2]" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
27 [label="Enter function <init> [3]" style="filled" fillcolor=red];
28 [label="Delegated constructor call: super<R|FirSourceElement|>() [3]" style="filled" fillcolor=yellow];
29 [label="Exit function <init> [3]" style="filled" fillcolor=red];
}
subgraph cluster_12 {
color=blue
30 [label="Enter property [3]" style="filled" fillcolor=red];
31 [label="Access variable R|<local>/lighterASTNode| [3]"];
32 [label="Exit property [3]" style="filled" fillcolor=red];
}
subgraph cluster_13 {
color=blue
33 [label="Enter property [3]" style="filled" fillcolor=red];
34 [label="Access variable R|<local>/treeStructure| [3]"];
35 [label="Exit property [3]" style="filled" fillcolor=red];
}
36 [label="Exit class FirLightSourceElement [2]" style="filled" fillcolor=red];
}
26 -> {27} [color=green];
26 -> {36} [style=dotted];
26 -> {27 30 33} [style=dashed];
27 -> {28};
28 -> {29};
29 -> {30} [color=green];
30 -> {31};
31 -> {32};
32 -> {33} [color=green];
33 -> {34};
34 -> {35};
35 -> {36} [color=green];
subgraph cluster_14 {
color=red
37 [label="Enter class PsiElement [2]" style="filled" fillcolor=red];
subgraph cluster_15 {
color=blue
38 [label="Enter function <init> [3]" style="filled" fillcolor=red];
39 [label="Delegated constructor call: super<R|kotlin/Any|>() [3]" style="filled" fillcolor=yellow];
40 [label="Exit function <init> [3]" style="filled" fillcolor=red];
}
41 [label="Exit class PsiElement [2]" style="filled" fillcolor=red];
}
37 -> {38} [color=green];
37 -> {41} [style=dotted];
37 -> {38} [style=dashed];
38 -> {39};
39 -> {40};
40 -> {41} [color=green];
subgraph cluster_16 {
color=red
42 [label="Enter class ASTNode [2]" style="filled" fillcolor=red];
subgraph cluster_17 {
color=blue
43 [label="Enter function <init> [3]" style="filled" fillcolor=red];
44 [label="Delegated constructor call: super<R|kotlin/Any|>() [3]" style="filled" fillcolor=yellow];
45 [label="Exit function <init> [3]" style="filled" fillcolor=red];
}
46 [label="Exit class ASTNode [2]" style="filled" fillcolor=red];
}
42 -> {43} [color=green];
42 -> {46} [style=dotted];
42 -> {43} [style=dashed];
43 -> {44};
44 -> {45};
45 -> {46} [color=green];
subgraph cluster_18 {
color=red
47 [label="Enter class LighterASTNode [2]" style="filled" fillcolor=red];
subgraph cluster_19 {
color=blue
48 [label="Enter function <init> [3]" style="filled" fillcolor=red];
49 [label="Enter default value of _children [3]"];
subgraph cluster_20 {
color=blue
50 [label="Enter default value of _children [4]" style="filled" fillcolor=red];
subgraph cluster_21 {
color=blue
51 [label="Function call arguments enter [4]"];
52 [label="Function call arguments exit [4]"];
}
53 [label="Function call: R|kotlin/collections/emptyList|<R|LighterASTNode?|>() [4]" style="filled" fillcolor=yellow];
54 [label="Exit default value of _children [4]" style="filled" fillcolor=red];
}
55 [label="Exit default value of _children [3]"];
56 [label="Delegated constructor call: super<R|kotlin/Any|>() [3]" style="filled" fillcolor=yellow];
57 [label="Exit function <init> [3]" style="filled" fillcolor=red];
}
subgraph cluster_22 {
color=blue
58 [label="Enter property [3]" style="filled" fillcolor=red];
59 [label="Access variable R|<local>/_children| [3]"];
60 [label="Exit property [3]" style="filled" fillcolor=red];
}
subgraph cluster_23 {
color=blue
61 [label="Enter property [3]" style="filled" fillcolor=red];
62 [label="Access qualifier /TokenType [3]"];
63 [label="Access variable R|/TokenType.Companion.MODIFIER_LIST| [3]"];
64 [label="Exit property [3]" style="filled" fillcolor=red];
}
65 [label="Exit class LighterASTNode [2]" style="filled" fillcolor=red];
}
47 -> {48} [color=green];
47 -> {65} [style=dotted];
47 -> {48 58 61} [style=dashed];
48 -> {49};
49 -> {50 55};
49 -> {50} [style=dashed];
50 -> {51};
51 -> {52};
52 -> {53};
53 -> {54};
54 -> {55};
55 -> {56};
56 -> {57};
57 -> {58} [color=green];
58 -> {59};
59 -> {60};
60 -> {61} [color=green];
61 -> {62};
62 -> {63};
63 -> {64};
64 -> {65} [color=green];
subgraph cluster_24 {
color=red
66 [label="Enter function getChildren [3]" style="filled" fillcolor=red];
subgraph cluster_25 {
color=blue
67 [label="Enter block [3]"];
68 [label="Access variable R|/LighterASTNode._children| [3]"];
69 [label="Jump: ^getChildren this@R|/LighterASTNode|.R|/LighterASTNode._children| [3]"];
70 [label="Stub [3]" style="filled" fillcolor=gray];
71 [label="Exit block [3]" style="filled" fillcolor=gray];
}
72 [label="Exit function getChildren [3]" style="filled" fillcolor=red];
}
66 -> {67};
67 -> {68};
68 -> {69};
69 -> {72};
69 -> {70} [style=dotted];
70 -> {71} [style=dotted];
71 -> {72} [style=dotted];
subgraph cluster_26 {
color=red
73 [label="Enter class TokenType [2]" style="filled" fillcolor=red];
subgraph cluster_27 {
color=blue
74 [label="Enter function <init> [3]" style="filled" fillcolor=red];
75 [label="Delegated constructor call: super<R|kotlin/Any|>() [3]" style="filled" fillcolor=yellow];
76 [label="Exit function <init> [3]" style="filled" fillcolor=red];
}
77 [label="Exit class TokenType [2]" style="filled" fillcolor=red];
}
73 -> {74} [color=green];
73 -> {77} [style=dotted];
73 -> {74} [style=dashed];
74 -> {75};
75 -> {76};
76 -> {77} [color=green];
subgraph cluster_28 {
color=red
78 [label="Enter class Companion [3]" style="filled" fillcolor=red];
subgraph cluster_29 {
color=blue
79 [label="Enter function <init> [4]" style="filled" fillcolor=red];
80 [label="Delegated constructor call: super<R|kotlin/Any|>() [4]" style="filled" fillcolor=yellow];
81 [label="Exit function <init> [4]" style="filled" fillcolor=red];
}
subgraph cluster_30 {
color=blue
82 [label="Enter property [4]" style="filled" fillcolor=red];
subgraph cluster_31 {
color=blue
83 [label="Function call arguments enter [4]"];
84 [label="Function call arguments exit [4]"];
}
85 [label="Function call: R|/TokenType.TokenType|() [4]" style="filled" fillcolor=yellow];
86 [label="Exit property [4]" style="filled" fillcolor=red];
}
87 [label="Exit class Companion [3]" style="filled" fillcolor=red];
}
78 -> {79} [color=green];
78 -> {87} [style=dotted];
78 -> {79 82} [style=dashed];
79 -> {80};
80 -> {81};
81 -> {82} [color=green];
82 -> {83};
83 -> {84};
84 -> {85};
85 -> {86};
86 -> {87} [color=green];
subgraph cluster_32 {
color=red
88 [label="Enter class KtModifierKeywordToken [2]" style="filled" fillcolor=red];
subgraph cluster_33 {
color=blue
89 [label="Enter function <init> [3]" style="filled" fillcolor=red];
90 [label="Delegated constructor call: super<R|kotlin/Any|>() [3]" style="filled" fillcolor=yellow];
91 [label="Exit function <init> [3]" style="filled" fillcolor=red];
}
92 [label="Exit class KtModifierKeywordToken [2]" style="filled" fillcolor=red];
}
88 -> {89} [color=green];
88 -> {92} [style=dotted];
88 -> {89} [style=dashed];
89 -> {90};
90 -> {91};
91 -> {92} [color=green];
subgraph cluster_34 {
color=red
93 [label="Enter class KtModifierList [2]" style="filled" fillcolor=red];
subgraph cluster_35 {
color=blue
94 [label="Enter function <init> [3]" style="filled" fillcolor=red];
95 [label="Delegated constructor call: super<R|PsiElement|>() [3]" style="filled" fillcolor=yellow];
96 [label="Exit function <init> [3]" style="filled" fillcolor=red];
}
97 [label="Exit class KtModifierList [2]" style="filled" fillcolor=red];
}
93 -> {94} [color=green];
93 -> {97} [style=dotted];
93 -> {94} [style=dashed];
94 -> {95};
95 -> {96};
96 -> {97} [color=green];
subgraph cluster_36 {
color=red
98 [label="Enter class KtModifierListOwner [2]" style="filled" fillcolor=red];
subgraph cluster_37 {
color=blue
99 [label="Enter function <init> [3]" style="filled" fillcolor=red];
100 [label="Delegated constructor call: super<R|PsiElement|>() [3]" style="filled" fillcolor=yellow];
101 [label="Exit function <init> [3]" style="filled" fillcolor=red];
}
subgraph cluster_38 {
color=blue
102 [label="Enter property [3]" style="filled" fillcolor=red];
subgraph cluster_39 {
color=blue
103 [label="Function call arguments enter [3]"];
104 [label="Function call arguments exit [3]"];
}
105 [label="Function call: R|/KtModifierList.KtModifierList|() [3]" style="filled" fillcolor=yellow];
106 [label="Exit property [3]" style="filled" fillcolor=red];
}
107 [label="Exit class KtModifierListOwner [2]" style="filled" fillcolor=red];
}
98 -> {99} [color=green];
98 -> {107} [style=dotted];
98 -> {99 102} [style=dashed];
99 -> {100};
100 -> {101};
101 -> {102} [color=green];
102 -> {103};
103 -> {104};
104 -> {105};
105 -> {106};
106 -> {107} [color=green];
subgraph cluster_40 {
color=red
108 [label="Enter class FirModifier [2]" style="filled" fillcolor=red];
subgraph cluster_41 {
color=blue
109 [label="Enter function <init> [3]" style="filled" fillcolor=red];
110 [label="Delegated constructor call: super<R|kotlin/Any|>() [3]" style="filled" fillcolor=yellow];
111 [label="Exit function <init> [3]" style="filled" fillcolor=red];
}
subgraph cluster_42 {
color=blue
112 [label="Enter property [3]" style="filled" fillcolor=red];
113 [label="Access variable R|<local>/node| [3]"];
114 [label="Exit property [3]" style="filled" fillcolor=red];
}
subgraph cluster_43 {
color=blue
115 [label="Enter property [3]" style="filled" fillcolor=red];
116 [label="Access variable R|<local>/token| [3]"];
117 [label="Exit property [3]" style="filled" fillcolor=red];
}
118 [label="Exit class FirModifier [2]" style="filled" fillcolor=red];
}
108 -> {109} [color=green];
108 -> {118} [style=dotted];
108 -> {109 112 115} [style=dashed];
109 -> {110};
110 -> {111};
111 -> {112} [color=green];
112 -> {113};
113 -> {114};
114 -> {115} [color=green];
115 -> {116};
116 -> {117};
117 -> {118} [color=green];
subgraph cluster_44 {
color=red
119 [label="Enter class FirPsiModifier [3]" style="filled" fillcolor=red];
subgraph cluster_45 {
color=blue
120 [label="Enter function <init> [4]" style="filled" fillcolor=red];
121 [label="Access variable R|<local>/node| [4]"];
122 [label="Access variable R|<local>/token| [4]"];
123 [label="Delegated constructor call: super<R|FirModifier<ASTNode>|>(...) [4]" style="filled" fillcolor=yellow];
124 [label="Exit function <init> [4]" style="filled" fillcolor=red];
}
125 [label="Exit class FirPsiModifier [3]" style="filled" fillcolor=red];
}
119 -> {120} [color=green];
119 -> {125} [style=dotted];
119 -> {120} [style=dashed];
120 -> {121};
121 -> {122};
122 -> {123};
123 -> {124};
124 -> {125} [color=green];
subgraph cluster_46 {
color=red
126 [label="Enter class FirLightModifier [3]" style="filled" fillcolor=red];
subgraph cluster_47 {
color=blue
127 [label="Enter function <init> [4]" style="filled" fillcolor=red];
128 [label="Access variable R|<local>/node| [4]"];
129 [label="Access variable R|<local>/token| [4]"];
130 [label="Delegated constructor call: super<R|FirModifier<LighterASTNode>|>(...) [4]" style="filled" fillcolor=yellow];
131 [label="Exit function <init> [4]" style="filled" fillcolor=red];
}
subgraph cluster_48 {
color=blue
132 [label="Enter property [4]" style="filled" fillcolor=red];
133 [label="Access variable R|<local>/tree| [4]"];
134 [label="Exit property [4]" style="filled" fillcolor=red];
}
135 [label="Exit class FirLightModifier [3]" style="filled" fillcolor=red];
}
126 -> {127} [color=green];
126 -> {135} [style=dotted];
126 -> {127 132} [style=dashed];
127 -> {128};
128 -> {129};
129 -> {130};
130 -> {131};
131 -> {132} [color=green];
132 -> {133};
133 -> {134};
134 -> {135} [color=green];
subgraph cluster_49 {
color=red
136 [label="Enter class FirModifierList [2]" style="filled" fillcolor=red];
subgraph cluster_50 {
color=blue
137 [label="Enter function <init> [3]" style="filled" fillcolor=red];
138 [label="Delegated constructor call: super<R|kotlin/Any|>() [3]" style="filled" fillcolor=yellow];
139 [label="Exit function <init> [3]" style="filled" fillcolor=red];
}
subgraph cluster_51 {
color=blue
140 [label="Enter property [3]" style="filled" fillcolor=red];
subgraph cluster_52 {
color=blue
141 [label="Function call arguments enter [3]"];
142 [label="Function call arguments exit [3]"];
}
143 [label="Function call: R|kotlin/collections/emptyList|<R|FirModifier<*>|>() [3]" style="filled" fillcolor=yellow];
144 [label="Exit property [3]" style="filled" fillcolor=red];
}
145 [label="Exit class FirModifierList [2]" style="filled" fillcolor=red];
}
136 -> {137} [color=green];
136 -> {145} [style=dotted];
136 -> {137 140} [style=dashed];
137 -> {138};
138 -> {139};
139 -> {140} [color=green];
140 -> {141};
141 -> {142};
142 -> {143};
143 -> {144};
144 -> {145} [color=green];
subgraph cluster_53 {
color=red
146 [label="Enter class FirPsiModifierList [3]" style="filled" fillcolor=red];
subgraph cluster_54 {
color=blue
147 [label="Enter function <init> [4]" style="filled" fillcolor=red];
148 [label="Delegated constructor call: super<R|FirModifierList|>() [4]" style="filled" fillcolor=yellow];
149 [label="Exit function <init> [4]" style="filled" fillcolor=red];
}
subgraph cluster_55 {
color=blue
150 [label="Enter property [4]" style="filled" fillcolor=red];
151 [label="Access variable R|<local>/modifierList| [4]"];
152 [label="Exit property [4]" style="filled" fillcolor=red];
}
153 [label="Exit class FirPsiModifierList [3]" style="filled" fillcolor=red];
}
146 -> {147} [color=green];
146 -> {153} [style=dotted];
146 -> {147 150} [style=dashed];
147 -> {148};
148 -> {149};
149 -> {150} [color=green];
150 -> {151};
151 -> {152};
152 -> {153} [color=green];
subgraph cluster_56 {
color=red
154 [label="Enter class FirLightModifierList [3]" style="filled" fillcolor=red];
subgraph cluster_57 {
color=blue
155 [label="Enter function <init> [4]" style="filled" fillcolor=red];
156 [label="Delegated constructor call: super<R|FirModifierList|>() [4]" style="filled" fillcolor=yellow];
157 [label="Exit function <init> [4]" style="filled" fillcolor=red];
}
subgraph cluster_58 {
color=blue
158 [label="Enter property [4]" style="filled" fillcolor=red];
159 [label="Access variable R|<local>/modifierList| [4]"];
160 [label="Exit property [4]" style="filled" fillcolor=red];
}
subgraph cluster_59 {
color=blue
161 [label="Enter property [4]" style="filled" fillcolor=red];
162 [label="Access variable R|<local>/tree| [4]"];
163 [label="Exit property [4]" style="filled" fillcolor=red];
}
164 [label="Exit class FirLightModifierList [3]" style="filled" fillcolor=red];
}
154 -> {155} [color=green];
154 -> {164} [style=dotted];
154 -> {155 158 161} [style=dashed];
155 -> {156};
156 -> {157};
157 -> {158} [color=green];
158 -> {159};
159 -> {160};
160 -> {161} [color=green];
161 -> {162};
162 -> {163};
163 -> {164} [color=green];
subgraph cluster_60 {
color=red
165 [label="Enter class Companion [3]" style="filled" fillcolor=red];
subgraph cluster_61 {
color=blue
166 [label="Enter function <init> [4]" style="filled" fillcolor=red];
167 [label="Delegated constructor call: super<R|kotlin/Any|>() [4]" style="filled" fillcolor=yellow];
168 [label="Exit function <init> [4]" style="filled" fillcolor=red];
}
169 [label="Exit class Companion [3]" style="filled" fillcolor=red];
}
165 -> {166} [color=green];
165 -> {169} [style=dotted];
165 -> {166} [style=dashed];
166 -> {167};
167 -> {168};
168 -> {169} [color=green];
subgraph cluster_62 {
color=red
170 [label="Enter function getModifierList [4]" style="filled" fillcolor=red];
subgraph cluster_63 {
color=blue
171 [label="Enter block [4]"];
subgraph cluster_64 {
color=blue
172 [label="Enter when [4]"];
173 [label="Access variable this@R|/FirModifierList.Companion.getModifierList| [4]"];
subgraph cluster_65 {
color=blue
174 [label="Enter when branch condition [4]"];
175 [label="Exit $subj [4]"];
176 [label="Const: Null(null) [4]"];
177 [label="Equality operator == [4]"];
178 [label="Exit when branch condition [4]"];
}
subgraph cluster_66 {
color=blue
179 [label="Enter when branch condition [4]"];
180 [label="Exit $subj [4]"];
181 [label="Type operator: ($subj$ is R|FirPsiSourceElement|) [4]"];
182 [label="Exit when branch condition [4]"];
}
subgraph cluster_67 {
color=blue
183 [label="Enter when branch condition [4]"];
184 [label="Exit $subj [4]"];
185 [label="Type operator: ($subj$ is R|FirLightSourceElement|) [4]"];
186 [label="Exit when branch condition [4]"];
}
187 [label="Enter when branch result [4]"];
subgraph cluster_68 {
color=blue
188 [label="Enter block [4]"];
subgraph cluster_69 {
color=blue
189 [label="Function call arguments enter [4]"];
subgraph cluster_70 {
color=blue
190 [label="Function call arguments enter [4]"];
191 [label="Access variable R|/FirLightSourceElement.lighterASTNode| [4]"];
192 [label="Access variable R|/FirLightSourceElement.treeStructure| [4]"];
193 [label="Function call arguments exit [4]"];
}
194 [label="Function call: this@R|/FirModifierList.Companion.getModifierList|.R|/FirLightSourceElement.lighterASTNode|.R|/LighterASTNode.getChildren|(...) [4]" style="filled" fillcolor=yellow];
195 [label="Postponed enter to lambda [4]"];
subgraph cluster_71 {
color=blue
196 [label="Enter function <anonymous> [5]" style="filled" fillcolor=red];
subgraph cluster_72 {
color=blue
197 [label="Enter block [5]"];
198 [label="Access variable R|<local>/it| [5]"];
199 [label="Enter safe call [5]"];
200 [label="Access variable R|/LighterASTNode.tokenType| [5]"];
201 [label="Exit safe call [5]"];
202 [label="Access qualifier /TokenType [5]"];
203 [label="Access variable R|/TokenType.Companion.MODIFIER_LIST| [5]"];
204 [label="Equality operator == [5]"];
205 [label="Exit block [5]"];
}
206 [label="Exit function <anonymous> [5]" style="filled" fillcolor=red];
}
207 [label="Function call arguments exit [4]"];
}
208 [label="Postponed exit from lambda [4]"];
209 [label="Function call: this@R|/FirModifierList.Companion.getModifierList|.R|/FirLightSourceElement.lighterASTNode|.R|/LighterASTNode.getChildren|(...).R|kotlin/collections/find|<R|LighterASTNode?|>(...) [4]" style="filled" fillcolor=yellow];
210 [label="Exit lhs of ?: [4]"];
211 [label="Enter rhs of ?: [4]"];
212 [label="Const: Null(null) [4]"];
213 [label="Jump: ^getModifierList Null(null) [4]"];
214 [label="Stub [4]" style="filled" fillcolor=gray];
215 [label="Lhs of ?: is not null [4]"];
216 [label="Exit ?: [4]"];
217 [label="Variable declaration: lval modifierListNode: R|LighterASTNode| [4]"];
subgraph cluster_73 {
color=blue
218 [label="Function call arguments enter [4]"];
219 [label="Access variable R|<local>/modifierListNode| [4]"];
220 [label="Access variable R|/FirLightSourceElement.treeStructure| [4]"];
221 [label="Function call arguments exit [4]"];
}
222 [label="Function call: R|/FirModifierList.FirLightModifierList.FirLightModifierList|(...) [4]" style="filled" fillcolor=yellow];
223 [label="Exit block [4]"];
}
224 [label="Exit when branch result [4]"];
225 [label="Enter when branch result [4]"];
subgraph cluster_74 {
color=blue
226 [label="Enter block [4]"];
227 [label="Access variable R|/FirPsiSourceElement.psi| [4]"];
228 [label="Type operator: (this@R|/FirModifierList.Companion.getModifierList|.R|/FirPsiSourceElement.psi| as? R|KtModifierListOwner|) [4]"];
229 [label="Enter safe call [4]"];
230 [label="Access variable R|/KtModifierListOwner.modifierList| [4]"];
231 [label="Enter safe call [4]"];
subgraph cluster_75 {
color=blue
232 [label="Function call arguments enter [4]"];
233 [label="Postponed enter to lambda [4]"];
subgraph cluster_76 {
color=blue
234 [label="Enter function <anonymous> [5]" style="filled" fillcolor=red];
subgraph cluster_77 {
color=blue
235 [label="Enter block [5]"];
subgraph cluster_78 {
color=blue
236 [label="Function call arguments enter [5]"];
237 [label="Access variable R|<local>/it| [5]"];
238 [label="Function call arguments exit [5]"];
}
239 [label="Function call: R|/FirModifierList.FirPsiModifierList.FirPsiModifierList|(...) [5]" style="filled" fillcolor=yellow];
240 [label="Exit block [5]"];
}
241 [label="Exit function <anonymous> [5]" style="filled" fillcolor=red];
}
242 [label="Function call arguments exit [4]"];
}
243 [label="Postponed exit from lambda [4]"];
244 [label="Function call: $subj$.R|kotlin/let|<R|KtModifierList|, R|FirModifierList.FirPsiModifierList|>(...) [4]" style="filled" fillcolor=yellow];
245 [label="Exit safe call [4]"];
246 [label="Exit safe call [4]"];
247 [label="Exit block [4]"];
}
248 [label="Exit when branch result [4]"];
249 [label="Merge postponed lambda exits [4]"];
250 [label="Enter when branch result [4]"];
subgraph cluster_79 {
color=blue
251 [label="Enter block [4]"];
252 [label="Const: Null(null) [4]"];
253 [label="Exit block [4]"];
}
254 [label="Exit when branch result [4]"];
255 [label="Exit when [4]"];
}
256 [label="Jump: ^getModifierList when (this@R|/FirModifierList.Companion.getModifierList|) {
==($subj$, Null(null)) -> {
Null(null)
}
($subj$ is R|FirPsiSourceElement|) -> {
(this@R|/FirModifierList.Companion.getModifierList|.R|/FirPsiSourceElement.psi| as? R|KtModifierListOwner|)?.{ $subj$.R|/KtModifierListOwner.modifierList| }?.{ $subj$.R|kotlin/let|<R|KtModifierList|, R|FirModifierList.FirPsiModifierList|>(<L> = let@fun <anonymous>(it: R|KtModifierList|): R|FirModifierList.FirPsiModifierList| <inline=Inline, kind=EXACTLY_ONCE> {
^ R|/FirModifierList.FirPsiModifierList.FirPsiModifierList|(R|<local>/it|)
}
) }
}
($subj$ is R|FirLightSourceElement|) -> {
lval modifierListNode: R|LighterASTNode| = this@R|/FirModifierList.Companion.getModifierList|.R|/FirLightSourceElement.lighterASTNode|.R|/LighterASTNode.getChildren|(this@R|/FirModifierList.Companion.getModifierList|.R|/FirLightSourceElement.treeStructure|).R|kotlin/collections/find|<R|LighterASTNode?|>(<L> = find@fun <anonymous>(it: R|LighterASTNode?|): R|kotlin/Boolean| <inline=Inline, kind=UNKNOWN> {
^ ==(R|<local>/it|?.{ $subj$.R|/LighterASTNode.tokenType| }, Q|TokenType|.R|/TokenType.Companion.MODIFIER_LIST|)
}
) ?: ^getModifierList Null(null)
R|/FirModifierList.FirLightModifierList.FirLightModifierList|(R|<local>/modifierListNode|, this@R|/FirModifierList.Companion.getModifierList|.R|/FirLightSourceElement.treeStructure|)
}
}
[4]"];
257 [label="Stub [4]" style="filled" fillcolor=gray];
258 [label="Exit block [4]" style="filled" fillcolor=gray];
}
259 [label="Exit function getModifierList [4]" style="filled" fillcolor=red];
}
170 -> {171};
171 -> {172};
172 -> {173};
173 -> {174};
174 -> {175};
175 -> {176};
176 -> {177};
177 -> {178};
178 -> {179 250};
179 -> {180};
180 -> {181};
181 -> {182};
182 -> {183 225};
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 207 208};
195 -> {196} [style=dashed];
196 -> {197};
197 -> {198};
198 -> {199 201};
199 -> {200};
200 -> {201};
201 -> {202};
202 -> {203};
203 -> {204};
204 -> {205};
205 -> {206};
206 -> {208};
207 -> {209};
208 -> {195} [color=green style=dashed];
208 -> {209} [color=green];
208 -> {216} [style=dotted label="Postponed"];
209 -> {210};
210 -> {211 215};
211 -> {212};
212 -> {213};
213 -> {259};
213 -> {214} [style=dotted];
214 -> {216} [style=dotted];
215 -> {216};
216 -> {217};
217 -> {218};
218 -> {219};
219 -> {220};
220 -> {221};
221 -> {222};
222 -> {223};
223 -> {224};
224 -> {255};
225 -> {226};
226 -> {227};
227 -> {228};
228 -> {229 245};
229 -> {230};
230 -> {231 245};
231 -> {232};
232 -> {233};
233 -> {234 242};
233 -> {243} [style=dotted];
233 -> {234} [style=dashed];
234 -> {235};
235 -> {236};
236 -> {237};
237 -> {238};
238 -> {239};
239 -> {240};
240 -> {241};
241 -> {243};
242 -> {244};
243 -> {244} [color=green];
243 -> {249} [color=red];
244 -> {246};
245 -> {246};
246 -> {247 249};
247 -> {248};
248 -> {255};
249 -> {255} [color=red label="Postponed"];
250 -> {251};
251 -> {252};
252 -> {253};
253 -> {254};
254 -> {255};
255 -> {256};
256 -> {259};
256 -> {257} [style=dotted];
257 -> {258} [style=dotted];
258 -> {259} [style=dotted];
subgraph cluster_80 {
color=red
260 [label="Enter function boxImpl [4]" style="filled" fillcolor=red];
subgraph cluster_81 {
color=blue
261 [label="Enter block [4]"];
subgraph cluster_82 {
color=blue
262 [label="Function call arguments enter [4]"];
subgraph cluster_83 {
color=blue
263 [label="Function call arguments enter [4]"];
subgraph cluster_84 {
color=blue
264 [label="Function call arguments enter [4]"];
subgraph cluster_85 {
color=blue
265 [label="Function call arguments enter [4]"];
266 [label="Function call arguments exit [4]"];
}
267 [label="Function call: R|/LighterASTNode.LighterASTNode|() [4]" style="filled" fillcolor=yellow];
268 [label="Function call arguments exit [4]"];
}
269 [label="Function call: R|kotlin/collections/listOf|<R|LighterASTNode|>(...) [4]" style="filled" fillcolor=yellow];
270 [label="Function call arguments exit [4]"];
}
271 [label="Function call: R|/LighterASTNode.LighterASTNode|(...) [4]" style="filled" fillcolor=yellow];
subgraph cluster_86 {
color=blue
272 [label="Function call arguments enter [4]"];
273 [label="Function call arguments exit [4]"];
}
274 [label="Function call: R|/FlyweightCapableTreeStructure.FlyweightCapableTreeStructure|() [4]" style="filled" fillcolor=yellow];
275 [label="Function call arguments exit [4]"];
}
276 [label="Function call: R|/FirLightSourceElement.FirLightSourceElement|(...) [4]" style="filled" fillcolor=yellow];
277 [label="Variable declaration: lval sourceElement: R|FirSourceElement?| [4]"];
subgraph cluster_87 {
color=blue
278 [label="Function call arguments enter [4]"];
279 [label="Access variable R|<local>/sourceElement| [4]"];
280 [label="Function call arguments exit [4]"];
}
281 [label="Function call: (this@R|/FirModifierList.Companion|, R|<local>/sourceElement|).R|/FirModifierList.Companion.getModifierList|() [4]" style="filled" fillcolor=yellow];
282 [label="Variable declaration: lval result: R|FirModifierList?| [4]"];
subgraph cluster_88 {
color=blue
283 [label="Enter when [4]"];
subgraph cluster_89 {
color=blue
284 [label="Enter when branch condition [4]"];
285 [label="Access variable R|<local>/result| [4]"];
286 [label="Type operator: (R|<local>/result| is R|FirModifierList.FirLightModifierList|) [4]"];
287 [label="Exit when branch condition [4]"];
}
subgraph cluster_90 {
color=blue
288 [label="Enter when branch condition else [4]"];
289 [label="Exit when branch condition [4]"];
}
290 [label="Enter when branch result [4]"];
subgraph cluster_91 {
color=blue
291 [label="Enter block [4]"];
292 [label="Const: String(Fail) [4]"];
293 [label="Exit block [4]"];
}
294 [label="Exit when branch result [4]"];
295 [label="Enter when branch result [4]"];
subgraph cluster_92 {
color=blue
296 [label="Enter block [4]"];
297 [label="Const: String(OK) [4]"];
298 [label="Exit block [4]"];
}
299 [label="Exit when branch result [4]"];
300 [label="Exit when [4]"];
}
301 [label="Jump: ^boxImpl when () {
(R|<local>/result| is R|FirModifierList.FirLightModifierList|) -> {
String(OK)
}
else -> {
String(Fail)
}
}
[4]"];
302 [label="Stub [4]" style="filled" fillcolor=gray];
303 [label="Exit block [4]" style="filled" fillcolor=gray];
}
304 [label="Exit function boxImpl [4]" style="filled" fillcolor=red];
}
260 -> {261};
261 -> {262};
262 -> {263};
263 -> {264};
264 -> {265};
265 -> {266};
266 -> {267};
267 -> {268};
268 -> {269};
269 -> {270};
270 -> {271};
271 -> {272};
272 -> {273};
273 -> {274};
274 -> {275};
275 -> {276};
276 -> {277};
277 -> {278};
278 -> {279};
279 -> {280};
280 -> {281};
281 -> {282};
282 -> {283};
283 -> {284};
284 -> {285};
285 -> {286};
286 -> {287};
287 -> {288 295};
288 -> {289};
289 -> {290};
290 -> {291};
291 -> {292};
292 -> {293};
293 -> {294};
294 -> {300};
295 -> {296};
296 -> {297};
297 -> {298};
298 -> {299};
299 -> {300};
300 -> {301};
301 -> {304};
301 -> {302} [style=dotted];
302 -> {303} [style=dotted];
303 -> {304} [style=dotted];
subgraph cluster_93 {
color=red
305 [label="Enter function box [2]" style="filled" fillcolor=red];
subgraph cluster_94 {
color=blue
306 [label="Enter block [2]"];
subgraph cluster_95 {
color=blue
307 [label="Function call arguments enter [2]"];
308 [label="Access qualifier /FirModifierList [2]"];
309 [label="Function call arguments exit [2]"];
}
310 [label="Function call: Q|FirModifierList|.R|/FirModifierList.Companion.boxImpl|() [2]" style="filled" fillcolor=yellow];
311 [label="Jump: ^box Q|FirModifierList|.R|/FirModifierList.Companion.boxImpl|() [2]"];
312 [label="Stub [2]" style="filled" fillcolor=gray];
313 [label="Exit block [2]" style="filled" fillcolor=gray];
}
314 [label="Exit function box [2]" style="filled" fillcolor=red];
}
305 -> {306};
306 -> {307};
307 -> {308};
308 -> {309};
309 -> {310};
310 -> {311};
311 -> {314};
311 -> {312} [style=dotted];
312 -> {313} [style=dotted];
313 -> {314} [style=dotted];
}