[FIR] Don't use psi for rendering control flow graph
This commit is contained in:
+1
-2
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.fir.expressions.FirDoWhileLoop
|
||||
import org.jetbrains.kotlin.fir.expressions.FirLoop
|
||||
import org.jetbrains.kotlin.fir.expressions.FirWhileLoop
|
||||
import org.jetbrains.kotlin.fir.expressions.impl.FirElseIfTrueCondition
|
||||
import org.jetbrains.kotlin.fir.psi
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.render
|
||||
import org.jetbrains.kotlin.fir.resolve.dfa.FirControlFlowGraphReferenceImpl
|
||||
@@ -160,7 +159,7 @@ private fun CFGNode<*>.render(): String =
|
||||
|
||||
is QualifiedAccessNode -> "Access variable ${fir.calleeReference.render()}"
|
||||
is OperatorCallNode -> "Operator ${fir.operation.operator}"
|
||||
is TypeOperatorCallNode -> "Type operator: \"${fir.psi?.text?.toString() ?: fir.render()}\""
|
||||
is TypeOperatorCallNode -> "Type operator: \"${fir.render()}\""
|
||||
is JumpNode -> "Jump: ${fir.render()}"
|
||||
is StubNode -> "Stub"
|
||||
is CheckNotNullCallNode -> "Check not null: ${fir.render()}"
|
||||
|
||||
+1
-1
@@ -200,7 +200,7 @@ digraph complex_kt {
|
||||
color=blue
|
||||
66 [label="Enter when branch condition "];
|
||||
67 [label="Access variable R|<local>/element|"];
|
||||
68 [label="Type operator: element is T"];
|
||||
68 [label="Type operator: (R|<local>/element| is R|T|)"];
|
||||
69 [label="Exit when branch condition"];
|
||||
}
|
||||
70 [label="Synthetic else branch"];
|
||||
|
||||
+2
-2
@@ -165,7 +165,7 @@ digraph jumps_kt {
|
||||
color=blue
|
||||
58 [label="Enter block"];
|
||||
59 [label="Access variable R|<local>/x|"];
|
||||
60 [label="Type operator: x as Int"];
|
||||
60 [label="Type operator: (R|<local>/x| as R|kotlin/Int|)"];
|
||||
61 [label="Jump: break@@@[Boolean(true)] "];
|
||||
62 [label="Stub" style="filled" fillcolor=gray];
|
||||
63 [label="Exit block" style="filled" fillcolor=gray];
|
||||
@@ -211,7 +211,7 @@ digraph jumps_kt {
|
||||
color=blue
|
||||
72 [label="Enter block"];
|
||||
73 [label="Access variable R|<local>/x|"];
|
||||
74 [label="Type operator: x as Int"];
|
||||
74 [label="Type operator: (R|<local>/x| as R|kotlin/Int|)"];
|
||||
75 [label="Jump: break@@@[Boolean(true)] "];
|
||||
76 [label="Stub" style="filled" fillcolor=gray];
|
||||
77 [label="Exit block" style="filled" fillcolor=gray];
|
||||
|
||||
+2
-2
@@ -23,7 +23,7 @@ digraph lambdas_kt {
|
||||
color=blue
|
||||
5 [label="Enter when branch condition "];
|
||||
6 [label="Access variable R|<local>/x|"];
|
||||
7 [label="Type operator: x is Int"];
|
||||
7 [label="Type operator: (R|<local>/x| is R|kotlin/Int|)"];
|
||||
8 [label="Exit when branch condition"];
|
||||
}
|
||||
9 [label="Synthetic else branch"];
|
||||
@@ -84,7 +84,7 @@ digraph lambdas_kt {
|
||||
color=blue
|
||||
25 [label="Enter when branch condition "];
|
||||
26 [label="Access variable R|<local>/x|"];
|
||||
27 [label="Type operator: x is Int"];
|
||||
27 [label="Type operator: (R|<local>/x| is R|kotlin/Int|)"];
|
||||
28 [label="Exit when branch condition"];
|
||||
}
|
||||
29 [label="Synthetic else branch"];
|
||||
|
||||
+6
-6
@@ -22,7 +22,7 @@ digraph loops_kt {
|
||||
color=blue
|
||||
6 [label="Enter block"];
|
||||
7 [label="Access variable R|<local>/x|"];
|
||||
8 [label="Type operator: x is String"];
|
||||
8 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
9 [label="Variable declaration: lval y: R|kotlin/Boolean|"];
|
||||
10 [label="Exit block"];
|
||||
}
|
||||
@@ -31,7 +31,7 @@ digraph loops_kt {
|
||||
12 [label="Exit whileloop"];
|
||||
}
|
||||
13 [label="Access variable R|<local>/x|"];
|
||||
14 [label="Type operator: x is String"];
|
||||
14 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
15 [label="Exit function testWhile" style="filled" fillcolor=red];
|
||||
}
|
||||
|
||||
@@ -64,7 +64,7 @@ digraph loops_kt {
|
||||
color=blue
|
||||
19 [label="Enter block"];
|
||||
20 [label="Access variable R|<local>/x|"];
|
||||
21 [label="Type operator: x is String"];
|
||||
21 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
22 [label="Variable declaration: lval y: R|kotlin/Boolean|"];
|
||||
23 [label="Exit block"];
|
||||
}
|
||||
@@ -79,7 +79,7 @@ digraph loops_kt {
|
||||
28 [label="Exit do-whileloop"];
|
||||
}
|
||||
29 [label="Access variable R|<local>/x|"];
|
||||
30 [label="Type operator: x is String"];
|
||||
30 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
31 [label="Exit function testDoWhile" style="filled" fillcolor=red];
|
||||
}
|
||||
|
||||
@@ -129,7 +129,7 @@ digraph loops_kt {
|
||||
48 [label="Function call: R|<local>/<iterator>|.R|kotlin/collections/IntIterator.next|()"];
|
||||
49 [label="Variable declaration: lval i: R|kotlin/Int|"];
|
||||
50 [label="Access variable R|<local>/x|"];
|
||||
51 [label="Type operator: x is String"];
|
||||
51 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
52 [label="Variable declaration: lval y: R|kotlin/Boolean|"];
|
||||
53 [label="Exit block"];
|
||||
}
|
||||
@@ -138,7 +138,7 @@ digraph loops_kt {
|
||||
55 [label="Exit whileloop"];
|
||||
}
|
||||
56 [label="Access variable R|<local>/x|"];
|
||||
57 [label="Type operator: x is String"];
|
||||
57 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
58 [label="Exit function testFor" style="filled" fillcolor=red];
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -142,11 +142,11 @@ digraph when_kt {
|
||||
color=blue
|
||||
50 [label="Enter &&"];
|
||||
51 [label="Access variable R|<local>/x|"];
|
||||
52 [label="Type operator: x is A"];
|
||||
52 [label="Type operator: (R|<local>/x| is R|A|)"];
|
||||
53 [label="Exit left part of &&"];
|
||||
54 [label="Enter right part of &&"];
|
||||
55 [label="Access variable R|<local>/x|"];
|
||||
56 [label="Type operator: x is B"];
|
||||
56 [label="Type operator: (R|<local>/x| is R|B|)"];
|
||||
57 [label="Exit &&"];
|
||||
}
|
||||
58 [label="Exit when branch condition"];
|
||||
@@ -157,7 +157,7 @@ digraph when_kt {
|
||||
color=blue
|
||||
61 [label="Enter block"];
|
||||
62 [label="Access variable R|<local>/x|"];
|
||||
63 [label="Type operator: x is A"];
|
||||
63 [label="Type operator: (R|<local>/x| is R|A|)"];
|
||||
64 [label="Exit block"];
|
||||
}
|
||||
65 [label="Exit when branch result"];
|
||||
|
||||
+16
-16
@@ -48,11 +48,11 @@ digraph booleanOperators_kt {
|
||||
color=blue
|
||||
11 [label="Enter &&"];
|
||||
12 [label="Access variable R|<local>/x|"];
|
||||
13 [label="Type operator: x is B"];
|
||||
13 [label="Type operator: (R|<local>/x| is R|B|)"];
|
||||
14 [label="Exit left part of &&"];
|
||||
15 [label="Enter right part of &&"];
|
||||
16 [label="Access variable R|<local>/x|"];
|
||||
17 [label="Type operator: x is C"];
|
||||
17 [label="Type operator: (R|<local>/x| is R|C|)"];
|
||||
18 [label="Exit &&"];
|
||||
}
|
||||
19 [label="Exit when branch condition"];
|
||||
@@ -114,11 +114,11 @@ digraph booleanOperators_kt {
|
||||
color=blue
|
||||
36 [label="Enter ||"];
|
||||
37 [label="Access variable R|<local>/x|"];
|
||||
38 [label="Type operator: x is B"];
|
||||
38 [label="Type operator: (R|<local>/x| is R|B|)"];
|
||||
39 [label="Exit left part of ||"];
|
||||
40 [label="Enter right part of ||"];
|
||||
41 [label="Access variable R|<local>/x|"];
|
||||
42 [label="Type operator: x is C"];
|
||||
42 [label="Type operator: (R|<local>/x| is R|C|)"];
|
||||
43 [label="Exit ||"];
|
||||
}
|
||||
44 [label="Exit when branch condition"];
|
||||
@@ -177,7 +177,7 @@ digraph booleanOperators_kt {
|
||||
color=blue
|
||||
60 [label="Enter when branch condition "];
|
||||
61 [label="Access variable R|<local>/x|"];
|
||||
62 [label="Type operator: x !is A"];
|
||||
62 [label="Type operator: (R|<local>/x| !is R|A|)"];
|
||||
63 [label="Function call: (R|<local>/x| !is R|A|).R|kotlin/Boolean.not|()"];
|
||||
64 [label="Exit when branch condition"];
|
||||
}
|
||||
@@ -225,7 +225,7 @@ digraph booleanOperators_kt {
|
||||
color=blue
|
||||
77 [label="Enter ||"];
|
||||
78 [label="Access variable R|<local>/x|"];
|
||||
79 [label="Type operator: x !is String"];
|
||||
79 [label="Type operator: (R|<local>/x| !is R|kotlin/String|)"];
|
||||
80 [label="Exit left part of ||"];
|
||||
81 [label="Enter right part of ||"];
|
||||
82 [label="Access variable R|<local>/x|"];
|
||||
@@ -291,7 +291,7 @@ digraph booleanOperators_kt {
|
||||
color=blue
|
||||
102 [label="Enter &&"];
|
||||
103 [label="Access variable R|<local>/x|"];
|
||||
104 [label="Type operator: x is A"];
|
||||
104 [label="Type operator: (R|<local>/x| is R|A|)"];
|
||||
105 [label="Exit left part of &&"];
|
||||
106 [label="Enter right part of &&"];
|
||||
107 [label="Access variable R|<local>/x|"];
|
||||
@@ -346,7 +346,7 @@ digraph booleanOperators_kt {
|
||||
color=blue
|
||||
122 [label="Enter when branch condition "];
|
||||
123 [label="Access variable R|<local>/x|"];
|
||||
124 [label="Type operator: x !is A"];
|
||||
124 [label="Type operator: (R|<local>/x| !is R|A|)"];
|
||||
125 [label="Function call: (R|<local>/x| !is R|A|).R|kotlin/Boolean.not|()"];
|
||||
126 [label="Exit when branch condition"];
|
||||
}
|
||||
@@ -394,7 +394,7 @@ digraph booleanOperators_kt {
|
||||
color=blue
|
||||
139 [label="Enter ||"];
|
||||
140 [label="Access variable R|<local>/x|"];
|
||||
141 [label="Type operator: x is A"];
|
||||
141 [label="Type operator: (R|<local>/x| is R|A|)"];
|
||||
142 [label="Exit left part of ||"];
|
||||
143 [label="Enter right part of ||"];
|
||||
144 [label="Const: Boolean(false)"];
|
||||
@@ -453,7 +453,7 @@ digraph booleanOperators_kt {
|
||||
161 [label="Exit left part of ||"];
|
||||
162 [label="Enter right part of ||"];
|
||||
163 [label="Access variable R|<local>/x|"];
|
||||
164 [label="Type operator: x is A"];
|
||||
164 [label="Type operator: (R|<local>/x| is R|A|)"];
|
||||
165 [label="Exit ||"];
|
||||
}
|
||||
166 [label="Exit when branch condition"];
|
||||
@@ -507,7 +507,7 @@ digraph booleanOperators_kt {
|
||||
color=blue
|
||||
179 [label="Enter ||"];
|
||||
180 [label="Access variable R|<local>/x|"];
|
||||
181 [label="Type operator: x is A"];
|
||||
181 [label="Type operator: (R|<local>/x| is R|A|)"];
|
||||
182 [label="Exit left part of ||"];
|
||||
183 [label="Enter right part of ||"];
|
||||
184 [label="Const: Boolean(true)"];
|
||||
@@ -566,7 +566,7 @@ digraph booleanOperators_kt {
|
||||
201 [label="Exit left part of ||"];
|
||||
202 [label="Enter right part of ||" style="filled" fillcolor=gray];
|
||||
203 [label="Access variable R|<local>/x|" style="filled" fillcolor=gray];
|
||||
204 [label="Type operator: x is A" style="filled" fillcolor=gray];
|
||||
204 [label="Type operator: (R|<local>/x| is R|A|)" style="filled" fillcolor=gray];
|
||||
205 [label="Exit ||"];
|
||||
}
|
||||
206 [label="Exit when branch condition"];
|
||||
@@ -623,7 +623,7 @@ digraph booleanOperators_kt {
|
||||
221 [label="Exit left part of &&"];
|
||||
222 [label="Enter right part of &&" style="filled" fillcolor=gray];
|
||||
223 [label="Access variable R|<local>/x|" style="filled" fillcolor=gray];
|
||||
224 [label="Type operator: x is A" style="filled" fillcolor=gray];
|
||||
224 [label="Type operator: (R|<local>/x| is R|A|)" style="filled" fillcolor=gray];
|
||||
225 [label="Exit &&"];
|
||||
}
|
||||
226 [label="Exit when branch condition"];
|
||||
@@ -677,7 +677,7 @@ digraph booleanOperators_kt {
|
||||
color=blue
|
||||
239 [label="Enter &&"];
|
||||
240 [label="Access variable R|<local>/x|"];
|
||||
241 [label="Type operator: x is A"];
|
||||
241 [label="Type operator: (R|<local>/x| is R|A|)"];
|
||||
242 [label="Exit left part of &&"];
|
||||
243 [label="Enter right part of &&"];
|
||||
244 [label="Const: Boolean(false)"];
|
||||
@@ -736,7 +736,7 @@ digraph booleanOperators_kt {
|
||||
261 [label="Exit left part of &&"];
|
||||
262 [label="Enter right part of &&"];
|
||||
263 [label="Access variable R|<local>/x|"];
|
||||
264 [label="Type operator: x is A"];
|
||||
264 [label="Type operator: (R|<local>/x| is R|A|)"];
|
||||
265 [label="Exit &&"];
|
||||
}
|
||||
266 [label="Exit when branch condition"];
|
||||
@@ -790,7 +790,7 @@ digraph booleanOperators_kt {
|
||||
color=blue
|
||||
279 [label="Enter &&"];
|
||||
280 [label="Access variable R|<local>/x|"];
|
||||
281 [label="Type operator: x is A"];
|
||||
281 [label="Type operator: (R|<local>/x| is R|A|)"];
|
||||
282 [label="Exit left part of &&"];
|
||||
283 [label="Enter right part of &&"];
|
||||
284 [label="Const: Boolean(false)"];
|
||||
|
||||
+10
-10
@@ -31,7 +31,7 @@ digraph boundSmartcasts_kt {
|
||||
color=blue
|
||||
8 [label="Enter when branch condition "];
|
||||
9 [label="Access variable R|<local>/x|"];
|
||||
10 [label="Type operator: x is A"];
|
||||
10 [label="Type operator: (R|<local>/x| is R|A|)"];
|
||||
11 [label="Exit when branch condition"];
|
||||
}
|
||||
12 [label="Synthetic else branch"];
|
||||
@@ -82,7 +82,7 @@ digraph boundSmartcasts_kt {
|
||||
color=blue
|
||||
27 [label="Enter when branch condition "];
|
||||
28 [label="Access variable R|<local>/y|"];
|
||||
29 [label="Type operator: y is A"];
|
||||
29 [label="Type operator: (R|<local>/y| is R|A|)"];
|
||||
30 [label="Exit when branch condition"];
|
||||
}
|
||||
31 [label="Synthetic else branch"];
|
||||
@@ -133,7 +133,7 @@ digraph boundSmartcasts_kt {
|
||||
color=blue
|
||||
46 [label="Enter when branch condition "];
|
||||
47 [label="Access variable R|<local>/x|"];
|
||||
48 [label="Type operator: x is A"];
|
||||
48 [label="Type operator: (R|<local>/x| is R|A|)"];
|
||||
49 [label="Exit when branch condition"];
|
||||
}
|
||||
50 [label="Synthetic else branch"];
|
||||
@@ -157,7 +157,7 @@ digraph boundSmartcasts_kt {
|
||||
color=blue
|
||||
61 [label="Enter when branch condition "];
|
||||
62 [label="Access variable R|<local>/y|"];
|
||||
63 [label="Type operator: y is B"];
|
||||
63 [label="Type operator: (R|<local>/y| is R|B|)"];
|
||||
64 [label="Exit when branch condition"];
|
||||
}
|
||||
65 [label="Synthetic else branch"];
|
||||
@@ -217,7 +217,7 @@ digraph boundSmartcasts_kt {
|
||||
77 [label="Const: Int(1)"];
|
||||
78 [label="Variable declaration: lvar x: R|kotlin/Any|"];
|
||||
79 [label="Access variable R|<local>/x|"];
|
||||
80 [label="Type operator: x as Int"];
|
||||
80 [label="Type operator: (R|<local>/x| as R|kotlin/Int|)"];
|
||||
81 [label="Access variable R|<local>/x|"];
|
||||
82 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()"];
|
||||
83 [label="Access variable R|<local>/y|"];
|
||||
@@ -231,7 +231,7 @@ digraph boundSmartcasts_kt {
|
||||
color=blue
|
||||
88 [label="Enter when branch condition "];
|
||||
89 [label="Access variable R|<local>/y|"];
|
||||
90 [label="Type operator: y is A"];
|
||||
90 [label="Type operator: (R|<local>/y| is R|A|)"];
|
||||
91 [label="Exit when branch condition"];
|
||||
}
|
||||
92 [label="Synthetic else branch"];
|
||||
@@ -359,7 +359,7 @@ digraph boundSmartcasts_kt {
|
||||
139 [label="Access variable R|/D.any|"];
|
||||
140 [label="Function call: R|<local>/d|.R|/D.any|.R|/baz|()"];
|
||||
141 [label="Access variable R|<local>/a|"];
|
||||
142 [label="Type operator: a as A"];
|
||||
142 [label="Type operator: (R|<local>/a| as R|A|)"];
|
||||
143 [label="Access variable R|<local>/a|"];
|
||||
144 [label="Function call: R|<local>/a|.R|/A.foo|()"];
|
||||
145 [label="Exit function test_5" style="filled" fillcolor=red];
|
||||
@@ -407,7 +407,7 @@ digraph boundSmartcasts_kt {
|
||||
148 [label="Access variable R|/D.any|"];
|
||||
149 [label="Variable declaration: lval a: R|kotlin/Any?|"];
|
||||
150 [label="Access variable R|<local>/a|"];
|
||||
151 [label="Type operator: a as A"];
|
||||
151 [label="Type operator: (R|<local>/a| as R|A|)"];
|
||||
152 [label="Access variable R|<local>/a|"];
|
||||
153 [label="Function call: R|<local>/a|.R|/A.foo|()"];
|
||||
154 [label="Access variable R|<local>/d1|"];
|
||||
@@ -448,11 +448,11 @@ digraph boundSmartcasts_kt {
|
||||
170 [label="Exit safe call"];
|
||||
171 [label="Variable declaration: lval b: R|kotlin/Any?|"];
|
||||
172 [label="Access variable R|<local>/a|"];
|
||||
173 [label="Type operator: a as A"];
|
||||
173 [label="Type operator: (R|<local>/a| as R|A|)"];
|
||||
174 [label="Access variable R|<local>/a|"];
|
||||
175 [label="Function call: R|<local>/a|.R|/A.foo|()"];
|
||||
176 [label="Access variable R|<local>/b|"];
|
||||
177 [label="Type operator: b as B"];
|
||||
177 [label="Type operator: (R|<local>/b| as R|B|)"];
|
||||
178 [label="Access variable R|<local>/b|"];
|
||||
179 [label="Function call: R|<local>/b|.R|/B.bar|()"];
|
||||
180 [label="Exit function test_7" style="filled" fillcolor=red];
|
||||
|
||||
Vendored
+4
-4
@@ -227,7 +227,7 @@ digraph boundSmartcastsInBranches_kt {
|
||||
81 [label="Access variable R|<local>/a|"];
|
||||
82 [label="Assignmenet: R|<local>/x|"];
|
||||
83 [label="Access variable R|<local>/a|"];
|
||||
84 [label="Type operator: a as A"];
|
||||
84 [label="Type operator: (R|<local>/a| as R|A|)"];
|
||||
85 [label="Exit block"];
|
||||
}
|
||||
86 [label="Exit when branch result"];
|
||||
@@ -296,7 +296,7 @@ digraph boundSmartcastsInBranches_kt {
|
||||
color=blue
|
||||
106 [label="Enter block"];
|
||||
107 [label="Access variable R|<local>/a|"];
|
||||
108 [label="Type operator: a as A"];
|
||||
108 [label="Type operator: (R|<local>/a| as R|A|)"];
|
||||
109 [label="Access variable R|<local>/a|"];
|
||||
110 [label="Assignmenet: R|<local>/x|"];
|
||||
111 [label="Exit block"];
|
||||
@@ -383,7 +383,7 @@ digraph boundSmartcastsInBranches_kt {
|
||||
143 [label="Exit when"];
|
||||
}
|
||||
144 [label="Access variable R|<local>/x|"];
|
||||
145 [label="Type operator: x as A"];
|
||||
145 [label="Type operator: (R|<local>/x| as R|A|)"];
|
||||
146 [label="Access variable R|<local>/x|"];
|
||||
147 [label="Access variable R|/A.s|"];
|
||||
148 [label="Access variable R|<local>/a|"];
|
||||
@@ -458,7 +458,7 @@ digraph boundSmartcastsInBranches_kt {
|
||||
171 [label="Exit when"];
|
||||
}
|
||||
172 [label="Access variable R|<local>/a|"];
|
||||
173 [label="Type operator: a as A"];
|
||||
173 [label="Type operator: (R|<local>/a| as R|A|)"];
|
||||
174 [label="Access variable R|<local>/x|"];
|
||||
175 [label="Access variable R|/A.s|"];
|
||||
176 [label="Access variable R|<local>/a|"];
|
||||
|
||||
@@ -7,7 +7,7 @@ digraph casts_kt {
|
||||
color=red
|
||||
0 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
1 [label="Access variable R|<local>/x|"];
|
||||
2 [label="Type operator: x as String"];
|
||||
2 [label="Type operator: (R|<local>/x| as R|kotlin/String|)"];
|
||||
3 [label="Access variable R|<local>/x|"];
|
||||
4 [label="Access variable R|kotlin/String.length|"];
|
||||
5 [label="Exit function test_1" style="filled" fillcolor=red];
|
||||
@@ -29,7 +29,7 @@ digraph casts_kt {
|
||||
color=blue
|
||||
8 [label="Enter when branch condition "];
|
||||
9 [label="Access variable R|<local>/x|"];
|
||||
10 [label="Type operator: x as Boolean"];
|
||||
10 [label="Type operator: (R|<local>/x| as R|kotlin/Boolean|)"];
|
||||
11 [label="Exit when branch condition"];
|
||||
}
|
||||
12 [label="Synthetic else branch"];
|
||||
@@ -82,7 +82,7 @@ digraph casts_kt {
|
||||
28 [label="Exit left part of &&"];
|
||||
29 [label="Enter right part of &&"];
|
||||
30 [label="Access variable R|<local>/x|"];
|
||||
31 [label="Type operator: x as Boolean"];
|
||||
31 [label="Type operator: (R|<local>/x| as R|kotlin/Boolean|)"];
|
||||
32 [label="Exit &&"];
|
||||
}
|
||||
33 [label="Exit when branch condition"];
|
||||
@@ -114,7 +114,7 @@ digraph casts_kt {
|
||||
48 [label="Exit left part of &&"];
|
||||
49 [label="Enter right part of &&"];
|
||||
50 [label="Access variable R|<local>/x|"];
|
||||
51 [label="Type operator: x as Boolean"];
|
||||
51 [label="Type operator: (R|<local>/x| as R|kotlin/Boolean|)"];
|
||||
52 [label="Const: Boolean(true)"];
|
||||
53 [label="Operator =="];
|
||||
54 [label="Exit &&"];
|
||||
@@ -148,7 +148,7 @@ digraph casts_kt {
|
||||
70 [label="Exit left part of ||"];
|
||||
71 [label="Enter right part of ||"];
|
||||
72 [label="Access variable R|<local>/x|"];
|
||||
73 [label="Type operator: x as Boolean"];
|
||||
73 [label="Type operator: (R|<local>/x| as R|kotlin/Boolean|)"];
|
||||
74 [label="Exit ||"];
|
||||
}
|
||||
75 [label="Exit when branch condition"];
|
||||
@@ -244,7 +244,7 @@ digraph casts_kt {
|
||||
color=blue
|
||||
89 [label="Enter when branch condition "];
|
||||
90 [label="Access variable R|<local>/b|"];
|
||||
91 [label="Type operator: b as? Boolean"];
|
||||
91 [label="Type operator: (R|<local>/b| as? R|kotlin/Boolean|)"];
|
||||
92 [label="Const: Null(null)"];
|
||||
93 [label="Operator !="];
|
||||
94 [label="Exit when branch condition"];
|
||||
@@ -283,7 +283,7 @@ digraph casts_kt {
|
||||
color=blue
|
||||
113 [label="Enter when branch condition "];
|
||||
114 [label="Access variable R|<local>/b|"];
|
||||
115 [label="Type operator: b as? Boolean"];
|
||||
115 [label="Type operator: (R|<local>/b| as? R|kotlin/Boolean|)"];
|
||||
116 [label="Const: Null(null)"];
|
||||
117 [label="Operator =="];
|
||||
118 [label="Exit when branch condition"];
|
||||
|
||||
+2
-2
@@ -140,7 +140,7 @@ digraph elvis_kt {
|
||||
color=blue
|
||||
45 [label="Enter when branch condition "];
|
||||
46 [label="Access variable R|<local>/b|"];
|
||||
47 [label="Type operator: b !is String"];
|
||||
47 [label="Type operator: (R|<local>/b| !is R|kotlin/String|)"];
|
||||
48 [label="Exit when branch condition"];
|
||||
}
|
||||
49 [label="Synthetic else branch"];
|
||||
@@ -163,7 +163,7 @@ digraph elvis_kt {
|
||||
color=blue
|
||||
59 [label="Enter when branch condition "];
|
||||
60 [label="Access variable R|<local>/a|"];
|
||||
61 [label="Type operator: a !is String?"];
|
||||
61 [label="Type operator: (R|<local>/a| !is R|kotlin/String?|)"];
|
||||
62 [label="Exit when branch condition"];
|
||||
}
|
||||
63 [label="Synthetic else branch"];
|
||||
|
||||
+7
-7
@@ -13,7 +13,7 @@ digraph returns_kt {
|
||||
color=blue
|
||||
2 [label="Enter when branch condition "];
|
||||
3 [label="Access variable R|<local>/x|"];
|
||||
4 [label="Type operator: x is String"];
|
||||
4 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
5 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_3 {
|
||||
@@ -76,7 +76,7 @@ digraph returns_kt {
|
||||
color=blue
|
||||
24 [label="Enter when branch condition "];
|
||||
25 [label="Access variable R|<local>/x|"];
|
||||
26 [label="Type operator: x is String"];
|
||||
26 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
27 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_9 {
|
||||
@@ -168,14 +168,14 @@ digraph returns_kt {
|
||||
color=blue
|
||||
54 [label="Enter when branch condition "];
|
||||
55 [label="Access variable R|<local>/x|"];
|
||||
56 [label="Type operator: x is B"];
|
||||
56 [label="Type operator: (R|<local>/x| is R|B|)"];
|
||||
57 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_18 {
|
||||
color=blue
|
||||
58 [label="Enter when branch condition "];
|
||||
59 [label="Access variable R|<local>/x|"];
|
||||
60 [label="Type operator: x is C"];
|
||||
60 [label="Type operator: (R|<local>/x| is R|C|)"];
|
||||
61 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_19 {
|
||||
@@ -270,14 +270,14 @@ digraph returns_kt {
|
||||
color=blue
|
||||
92 [label="Enter when branch condition "];
|
||||
93 [label="Access variable R|<local>/x|"];
|
||||
94 [label="Type operator: x is B"];
|
||||
94 [label="Type operator: (R|<local>/x| is R|B|)"];
|
||||
95 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_26 {
|
||||
color=blue
|
||||
96 [label="Enter when branch condition "];
|
||||
97 [label="Access variable R|<local>/x|"];
|
||||
98 [label="Type operator: x is C"];
|
||||
98 [label="Type operator: (R|<local>/x| is R|C|)"];
|
||||
99 [label="Exit when branch condition"];
|
||||
}
|
||||
100 [label="Synthetic else branch"];
|
||||
@@ -383,7 +383,7 @@ digraph returns_kt {
|
||||
color=red
|
||||
133 [label="Enter function test_4" style="filled" fillcolor=red];
|
||||
134 [label="Access variable R|<local>/a|"];
|
||||
135 [label="Type operator: a as? String"];
|
||||
135 [label="Type operator: (R|<local>/a| as? R|kotlin/String|)"];
|
||||
136 [label="Variable declaration: lval s: R|kotlin/String?|"];
|
||||
subgraph cluster_33 {
|
||||
color=blue
|
||||
|
||||
+4
-4
@@ -13,7 +13,7 @@ digraph simpleIf_kt {
|
||||
color=blue
|
||||
2 [label="Enter when branch condition "];
|
||||
3 [label="Access variable R|<local>/x|"];
|
||||
4 [label="Type operator: x is String"];
|
||||
4 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
5 [label="Exit when branch condition"];
|
||||
}
|
||||
6 [label="Synthetic else branch"];
|
||||
@@ -54,7 +54,7 @@ digraph simpleIf_kt {
|
||||
color=red
|
||||
17 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
18 [label="Access variable R|<local>/x|"];
|
||||
19 [label="Type operator: x is String"];
|
||||
19 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
20 [label="Variable declaration: lval b: R|kotlin/Boolean|"];
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
@@ -111,14 +111,14 @@ digraph simpleIf_kt {
|
||||
color=blue
|
||||
38 [label="Enter when branch condition "];
|
||||
39 [label="Access variable R|<local>/x|"];
|
||||
40 [label="Type operator: x !is String"];
|
||||
40 [label="Type operator: (R|<local>/x| !is R|kotlin/String|)"];
|
||||
41 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
42 [label="Enter when branch condition "];
|
||||
43 [label="Access variable R|<local>/x|"];
|
||||
44 [label="Type operator: x !is Int"];
|
||||
44 [label="Type operator: (R|<local>/x| !is R|kotlin/Int|)"];
|
||||
45 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_12 {
|
||||
|
||||
Vendored
+1
-1
@@ -39,7 +39,7 @@ digraph smartcastFromArgument_kt {
|
||||
color=blue
|
||||
10 [label="Enter when"];
|
||||
11 [label="Access variable R|<local>/a|"];
|
||||
12 [label="Type operator: a as? A"];
|
||||
12 [label="Type operator: (R|<local>/a| as? R|A|)"];
|
||||
13 [label="Variable declaration: lval <elvis>: R|A?|"];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
|
||||
+16
-16
@@ -29,14 +29,14 @@ digraph when_kt {
|
||||
color=blue
|
||||
6 [label="Enter when branch condition "];
|
||||
7 [label="Access variable R|<local>/x|"];
|
||||
8 [label="Type operator: x is A"];
|
||||
8 [label="Type operator: (R|<local>/x| is R|A|)"];
|
||||
9 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_5 {
|
||||
color=blue
|
||||
10 [label="Enter when branch condition "];
|
||||
11 [label="Access variable R|<local>/x|"];
|
||||
12 [label="Type operator: x is B"];
|
||||
12 [label="Type operator: (R|<local>/x| is R|B|)"];
|
||||
13 [label="Exit when branch condition"];
|
||||
}
|
||||
14 [label="Synthetic else branch"];
|
||||
@@ -67,21 +67,21 @@ digraph when_kt {
|
||||
color=blue
|
||||
29 [label="Enter when branch condition "];
|
||||
30 [label="Access variable R|<local>/x|"];
|
||||
31 [label="Type operator: x !is A"];
|
||||
31 [label="Type operator: (R|<local>/x| !is R|A|)"];
|
||||
32 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
33 [label="Enter when branch condition "];
|
||||
34 [label="Access variable R|<local>/x|"];
|
||||
35 [label="Type operator: x !is B"];
|
||||
35 [label="Type operator: (R|<local>/x| !is R|B|)"];
|
||||
36 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
37 [label="Enter when branch condition "];
|
||||
38 [label="Access variable R|<local>/x|"];
|
||||
39 [label="Type operator: x is Int"];
|
||||
39 [label="Type operator: (R|<local>/x| is R|kotlin/Int|)"];
|
||||
40 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_12 {
|
||||
@@ -213,13 +213,13 @@ digraph when_kt {
|
||||
subgraph cluster_19 {
|
||||
color=blue
|
||||
76 [label="Enter when branch condition "];
|
||||
77 [label="Type operator: A"];
|
||||
77 [label="Type operator: ($subj$ is R|A|)"];
|
||||
78 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_20 {
|
||||
color=blue
|
||||
79 [label="Enter when branch condition "];
|
||||
80 [label="Type operator: B"];
|
||||
80 [label="Type operator: ($subj$ is R|B|)"];
|
||||
81 [label="Exit when branch condition"];
|
||||
}
|
||||
82 [label="Synthetic else branch"];
|
||||
@@ -250,19 +250,19 @@ digraph when_kt {
|
||||
subgraph cluster_24 {
|
||||
color=blue
|
||||
98 [label="Enter when branch condition "];
|
||||
99 [label="Type operator: A"];
|
||||
99 [label="Type operator: ($subj$ !is R|A|)"];
|
||||
100 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_25 {
|
||||
color=blue
|
||||
101 [label="Enter when branch condition "];
|
||||
102 [label="Type operator: B"];
|
||||
102 [label="Type operator: ($subj$ !is R|B|)"];
|
||||
103 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_26 {
|
||||
color=blue
|
||||
104 [label="Enter when branch condition "];
|
||||
105 [label="Type operator: Int"];
|
||||
105 [label="Type operator: ($subj$ is R|kotlin/Int|)"];
|
||||
106 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_27 {
|
||||
@@ -392,13 +392,13 @@ digraph when_kt {
|
||||
subgraph cluster_34 {
|
||||
color=blue
|
||||
143 [label="Enter when branch condition "];
|
||||
144 [label="Type operator: A"];
|
||||
144 [label="Type operator: ($subj$ is R|A|)"];
|
||||
145 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_35 {
|
||||
color=blue
|
||||
146 [label="Enter when branch condition "];
|
||||
147 [label="Type operator: B"];
|
||||
147 [label="Type operator: ($subj$ is R|B|)"];
|
||||
148 [label="Exit when branch condition"];
|
||||
}
|
||||
149 [label="Synthetic else branch"];
|
||||
@@ -434,19 +434,19 @@ digraph when_kt {
|
||||
subgraph cluster_39 {
|
||||
color=blue
|
||||
170 [label="Enter when branch condition "];
|
||||
171 [label="Type operator: A"];
|
||||
171 [label="Type operator: ($subj$ !is R|A|)"];
|
||||
172 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_40 {
|
||||
color=blue
|
||||
173 [label="Enter when branch condition "];
|
||||
174 [label="Type operator: B"];
|
||||
174 [label="Type operator: ($subj$ !is R|B|)"];
|
||||
175 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_41 {
|
||||
color=blue
|
||||
176 [label="Enter when branch condition "];
|
||||
177 [label="Type operator: Int"];
|
||||
177 [label="Type operator: ($subj$ is R|kotlin/Int|)"];
|
||||
178 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_42 {
|
||||
@@ -602,7 +602,7 @@ digraph when_kt {
|
||||
color=blue
|
||||
224 [label="Enter when"];
|
||||
225 [label="Access variable R|<local>/x|"];
|
||||
226 [label="Type operator: x as Int"];
|
||||
226 [label="Type operator: (R|<local>/x| as R|kotlin/Int|)"];
|
||||
subgraph cluster_49 {
|
||||
color=blue
|
||||
227 [label="Enter when branch condition "];
|
||||
|
||||
+4
-4
@@ -39,7 +39,7 @@ digraph inPlaceLambdas_kt {
|
||||
color=blue
|
||||
9 [label="Enter when branch condition "];
|
||||
10 [label="Access variable R|<local>/x|"];
|
||||
11 [label="Type operator: x is A"];
|
||||
11 [label="Type operator: (R|<local>/x| is R|A|)"];
|
||||
12 [label="Exit when branch condition"];
|
||||
}
|
||||
13 [label="Synthetic else branch"];
|
||||
@@ -98,7 +98,7 @@ digraph inPlaceLambdas_kt {
|
||||
color=blue
|
||||
29 [label="Enter function anonymousFunction"];
|
||||
30 [label="Access variable R|<local>/x|"];
|
||||
31 [label="Type operator: x as B"];
|
||||
31 [label="Type operator: (R|<local>/x| as R|B|)"];
|
||||
32 [label="Exit function anonymousFunction"];
|
||||
}
|
||||
33 [label="Postponed exit from lambda"];
|
||||
@@ -134,7 +134,7 @@ digraph inPlaceLambdas_kt {
|
||||
color=blue
|
||||
40 [label="Enter when branch condition "];
|
||||
41 [label="Access variable R|<local>/x|"];
|
||||
42 [label="Type operator: x is A"];
|
||||
42 [label="Type operator: (R|<local>/x| is R|A|)"];
|
||||
43 [label="Exit when branch condition"];
|
||||
}
|
||||
44 [label="Synthetic else branch"];
|
||||
@@ -149,7 +149,7 @@ digraph inPlaceLambdas_kt {
|
||||
49 [label="Access variable R|<local>/x|"];
|
||||
50 [label="Function call: R|<local>/x|.R|/A.foo|()"];
|
||||
51 [label="Access variable R|<local>/x|"];
|
||||
52 [label="Type operator: x as B"];
|
||||
52 [label="Type operator: (R|<local>/x| as R|B|)"];
|
||||
53 [label="Exit function anonymousFunction"];
|
||||
}
|
||||
54 [label="Postponed exit from lambda"];
|
||||
|
||||
+2
-2
@@ -26,11 +26,11 @@ digraph dataFlowInfoFromWhileCondition_kt {
|
||||
color=blue
|
||||
7 [label="Enter ||"];
|
||||
8 [label="Access variable R|<local>/a|"];
|
||||
9 [label="Type operator: a is B"];
|
||||
9 [label="Type operator: (R|<local>/a| is R|B|)"];
|
||||
10 [label="Exit left part of ||"];
|
||||
11 [label="Enter right part of ||"];
|
||||
12 [label="Access variable R|<local>/a|"];
|
||||
13 [label="Type operator: a is C"];
|
||||
13 [label="Type operator: (R|<local>/a| is R|C|)"];
|
||||
14 [label="Exit ||"];
|
||||
}
|
||||
15 [label="Exit loop condition"];
|
||||
|
||||
@@ -30,7 +30,7 @@ digraph endlessLoops_kt {
|
||||
color=blue
|
||||
8 [label="Enter block"];
|
||||
9 [label="Access variable R|<local>/x|"];
|
||||
10 [label="Type operator: x as A"];
|
||||
10 [label="Type operator: (R|<local>/x| as R|A|)"];
|
||||
subgraph cluster_6 {
|
||||
color=blue
|
||||
11 [label="Enter when"];
|
||||
@@ -125,7 +125,7 @@ digraph endlessLoops_kt {
|
||||
color=blue
|
||||
42 [label="Enter block"];
|
||||
43 [label="Access variable R|<local>/x|"];
|
||||
44 [label="Type operator: x as A"];
|
||||
44 [label="Type operator: (R|<local>/x| as R|A|)"];
|
||||
45 [label="Jump: break@@@[Boolean(true)] "];
|
||||
46 [label="Stub" style="filled" fillcolor=gray];
|
||||
47 [label="Exit block" style="filled" fillcolor=gray];
|
||||
@@ -192,7 +192,7 @@ digraph endlessLoops_kt {
|
||||
color=blue
|
||||
62 [label="Enter block"];
|
||||
63 [label="Access variable R|<local>/x|"];
|
||||
64 [label="Type operator: x as A"];
|
||||
64 [label="Type operator: (R|<local>/x| as R|A|)"];
|
||||
subgraph cluster_22 {
|
||||
color=blue
|
||||
65 [label="Enter when"];
|
||||
@@ -321,7 +321,7 @@ digraph endlessLoops_kt {
|
||||
color=blue
|
||||
108 [label="Enter block"];
|
||||
109 [label="Access variable R|<local>/x|"];
|
||||
110 [label="Type operator: x as A"];
|
||||
110 [label="Type operator: (R|<local>/x| as R|A|)"];
|
||||
111 [label="Jump: break@@@[Boolean(true)] "];
|
||||
112 [label="Stub" style="filled" fillcolor=gray];
|
||||
113 [label="Exit block" style="filled" fillcolor=gray];
|
||||
@@ -401,7 +401,7 @@ digraph endlessLoops_kt {
|
||||
color=blue
|
||||
134 [label="Enter block"];
|
||||
135 [label="Access variable R|<local>/x|"];
|
||||
136 [label="Type operator: x as A"];
|
||||
136 [label="Type operator: (R|<local>/x| as R|A|)"];
|
||||
137 [label="Jump: break@@@[Boolean(true)] "];
|
||||
138 [label="Stub" style="filled" fillcolor=gray];
|
||||
139 [label="Exit block" style="filled" fillcolor=gray];
|
||||
@@ -468,7 +468,7 @@ digraph endlessLoops_kt {
|
||||
color=blue
|
||||
154 [label="Enter block"];
|
||||
155 [label="Access variable R|<local>/x|"];
|
||||
156 [label="Type operator: x as A"];
|
||||
156 [label="Type operator: (R|<local>/x| as R|A|)"];
|
||||
subgraph cluster_48 {
|
||||
color=blue
|
||||
157 [label="Enter when"];
|
||||
@@ -549,7 +549,7 @@ digraph endlessLoops_kt {
|
||||
color=blue
|
||||
181 [label="Enter block"];
|
||||
182 [label="Access variable R|<local>/x|"];
|
||||
183 [label="Type operator: x as A"];
|
||||
183 [label="Type operator: (R|<local>/x| as R|A|)"];
|
||||
184 [label="Exit block"];
|
||||
}
|
||||
185 [label="Exit loop block"];
|
||||
|
||||
@@ -42,11 +42,11 @@ digraph multipleCasts_kt {
|
||||
12 [label="Function call: R|/getAny|()"];
|
||||
13 [label="Variable declaration: lval b: R|kotlin/Any?|"];
|
||||
14 [label="Access variable R|<local>/a|"];
|
||||
15 [label="Type operator: a as A"];
|
||||
15 [label="Type operator: (R|<local>/a| as R|A|)"];
|
||||
16 [label="Access variable R|<local>/a|"];
|
||||
17 [label="Function call: R|<local>/a|.R|/A.foo|()"];
|
||||
18 [label="Access variable R|<local>/b|"];
|
||||
19 [label="Type operator: b as B"];
|
||||
19 [label="Type operator: (R|<local>/b| as R|B|)"];
|
||||
20 [label="Access variable R|<local>/b|"];
|
||||
21 [label="Function call: R|<local>/b|.R|/B.foo|()"];
|
||||
22 [label="Exit function test_0" style="filled" fillcolor=red];
|
||||
@@ -83,11 +83,11 @@ digraph multipleCasts_kt {
|
||||
color=blue
|
||||
30 [label="Enter &&"];
|
||||
31 [label="Access variable R|<local>/a|"];
|
||||
32 [label="Type operator: a is A"];
|
||||
32 [label="Type operator: (R|<local>/a| is R|A|)"];
|
||||
33 [label="Exit left part of &&"];
|
||||
34 [label="Enter right part of &&"];
|
||||
35 [label="Access variable R|<local>/b|"];
|
||||
36 [label="Type operator: b is B"];
|
||||
36 [label="Type operator: (R|<local>/b| is R|B|)"];
|
||||
37 [label="Exit &&"];
|
||||
}
|
||||
38 [label="Exit when branch condition"];
|
||||
|
||||
Vendored
+4
-4
@@ -13,13 +13,13 @@ digraph implicitReceiverAsWhenSubject_kt {
|
||||
subgraph cluster_2 {
|
||||
color=blue
|
||||
3 [label="Enter when branch condition "];
|
||||
4 [label="Type operator: List<*>"];
|
||||
4 [label="Type operator: ($subj$ is R|kotlin/collections/List<*>|)"];
|
||||
5 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_3 {
|
||||
color=blue
|
||||
6 [label="Enter when branch condition "];
|
||||
7 [label="Type operator: String"];
|
||||
7 [label="Type operator: ($subj$ is R|kotlin/String|)"];
|
||||
8 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_4 {
|
||||
@@ -113,13 +113,13 @@ digraph implicitReceiverAsWhenSubject_kt {
|
||||
subgraph cluster_10 {
|
||||
color=blue
|
||||
35 [label="Enter when branch condition "];
|
||||
36 [label="Type operator: List<*>"];
|
||||
36 [label="Type operator: ($subj$ is R|kotlin/collections/List<*>|)"];
|
||||
37 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_11 {
|
||||
color=blue
|
||||
38 [label="Enter when branch condition "];
|
||||
39 [label="Type operator: String"];
|
||||
39 [label="Type operator: ($subj$ is R|kotlin/String|)"];
|
||||
40 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_12 {
|
||||
|
||||
+9
-9
@@ -53,7 +53,7 @@ digraph implicitReceivers_kt {
|
||||
color=blue
|
||||
12 [label="Enter when branch condition "];
|
||||
13 [label="Access variable this@R|/test_1|"];
|
||||
14 [label="Type operator: this is A"];
|
||||
14 [label="Type operator: (this@R|/test_1| is R|A|)"];
|
||||
15 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_8 {
|
||||
@@ -126,7 +126,7 @@ digraph implicitReceivers_kt {
|
||||
color=blue
|
||||
39 [label="Enter when branch condition "];
|
||||
40 [label="Access variable this@R|/test_2|"];
|
||||
41 [label="Type operator: this !is A"];
|
||||
41 [label="Type operator: (this@R|/test_2| !is R|A|)"];
|
||||
42 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_14 {
|
||||
@@ -208,7 +208,7 @@ digraph implicitReceivers_kt {
|
||||
color=blue
|
||||
73 [label="Enter function anonymousFunction"];
|
||||
74 [label="Access variable this@R|special/anonymous|"];
|
||||
75 [label="Type operator: this@wb as A"];
|
||||
75 [label="Type operator: (this@R|special/anonymous| as R|A|)"];
|
||||
76 [label="Access variable this@R|special/anonymous|"];
|
||||
77 [label="Function call: this@R|special/anonymous|.R|/A.foo|()"];
|
||||
78 [label="Function call: this@R|special/anonymous|.R|/A.foo|()"];
|
||||
@@ -299,7 +299,7 @@ digraph implicitReceivers_kt {
|
||||
color=blue
|
||||
94 [label="Enter when branch condition "];
|
||||
95 [label="Access variable this@R|/test_4|"];
|
||||
96 [label="Type operator: this !is A"];
|
||||
96 [label="Type operator: (this@R|/test_4| !is R|A|)"];
|
||||
97 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_24 {
|
||||
@@ -318,7 +318,7 @@ digraph implicitReceivers_kt {
|
||||
color=blue
|
||||
103 [label="Enter when branch condition "];
|
||||
104 [label="Access variable this@R|/test_4|"];
|
||||
105 [label="Type operator: this !is B"];
|
||||
105 [label="Type operator: (this@R|/test_4| !is R|B|)"];
|
||||
106 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_28 {
|
||||
@@ -449,14 +449,14 @@ digraph implicitReceivers_kt {
|
||||
color=blue
|
||||
152 [label="Enter when branch condition "];
|
||||
153 [label="Access variable this@R|/test_5|"];
|
||||
154 [label="Type operator: this is List<*>"];
|
||||
154 [label="Type operator: (this@R|/test_5| is R|kotlin/collections/List<*>|)"];
|
||||
155 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_35 {
|
||||
color=blue
|
||||
156 [label="Enter when branch condition "];
|
||||
157 [label="Access variable this@R|/test_5|"];
|
||||
158 [label="Type operator: this is String"];
|
||||
158 [label="Type operator: (this@R|/test_5| is R|kotlin/String|)"];
|
||||
159 [label="Exit when branch condition"];
|
||||
}
|
||||
subgraph cluster_36 {
|
||||
@@ -542,10 +542,10 @@ digraph implicitReceivers_kt {
|
||||
color=red
|
||||
181 [label="Enter function test_6" style="filled" fillcolor=red];
|
||||
182 [label="Access variable this@R|/test_6|"];
|
||||
183 [label="Type operator: this as List<*>"];
|
||||
183 [label="Type operator: (this@R|/test_6| as R|kotlin/collections/List<*>|)"];
|
||||
184 [label="Access variable R|kotlin/collections/List.size|"];
|
||||
185 [label="Access variable this@R|/test_6|"];
|
||||
186 [label="Type operator: this as String"];
|
||||
186 [label="Type operator: (this@R|/test_6| as R|kotlin/String|)"];
|
||||
187 [label="Access variable R|kotlin/String.length|"];
|
||||
188 [label="Exit function test_6" style="filled" fillcolor=red];
|
||||
}
|
||||
|
||||
+2
-2
@@ -26,7 +26,7 @@ digraph thisOfExtensionProperty_kt {
|
||||
color=blue
|
||||
5 [label="Enter &&"];
|
||||
6 [label="Access variable this@R|/check_1|"];
|
||||
7 [label="Type operator: this is B"];
|
||||
7 [label="Type operator: (this@R|/check_1| is R|B|)"];
|
||||
8 [label="Exit left part of &&"];
|
||||
9 [label="Enter right part of &&"];
|
||||
10 [label="Access variable R|/B.b|"];
|
||||
@@ -64,7 +64,7 @@ digraph thisOfExtensionProperty_kt {
|
||||
color=blue
|
||||
18 [label="Enter &&"];
|
||||
19 [label="Access variable this@R|/check_2|"];
|
||||
20 [label="Type operator: this is B"];
|
||||
20 [label="Type operator: (this@R|/check_2| is R|B|)"];
|
||||
21 [label="Exit left part of &&"];
|
||||
22 [label="Enter right part of &&"];
|
||||
23 [label="Access variable this@R|/check_2|"];
|
||||
|
||||
+2
-2
@@ -169,7 +169,7 @@ digraph assignSafeCall_kt {
|
||||
color=blue
|
||||
57 [label="Enter when"];
|
||||
58 [label="Access variable R|<local>/x|"];
|
||||
59 [label="Type operator: x as? A"];
|
||||
59 [label="Type operator: (R|<local>/x| as? R|A|)"];
|
||||
60 [label="Variable declaration: lval <elvis>: R|A?|"];
|
||||
subgraph cluster_15 {
|
||||
color=blue
|
||||
@@ -389,7 +389,7 @@ digraph assignSafeCall_kt {
|
||||
color=blue
|
||||
136 [label="Enter when"];
|
||||
137 [label="Access variable R|<local>/x|"];
|
||||
138 [label="Type operator: x as? B"];
|
||||
138 [label="Type operator: (R|<local>/x| as? R|B|)"];
|
||||
139 [label="Variable declaration: lval <elvis>: R|B?|"];
|
||||
subgraph cluster_33 {
|
||||
color=blue
|
||||
|
||||
@@ -82,7 +82,7 @@ digraph safeCalls_kt {
|
||||
color=red
|
||||
25 [label="Enter function test_2" style="filled" fillcolor=red];
|
||||
26 [label="Access variable R|<local>/x|"];
|
||||
27 [label="Type operator: x as? A"];
|
||||
27 [label="Type operator: (R|<local>/x| as? R|A|)"];
|
||||
28 [label="Enter safe call"];
|
||||
29 [label="Access variable R|<local>/x|"];
|
||||
30 [label="Function call: (R|<local>/x| as? R|A|)?.R|/A.bar|(R|<local>/x|)"];
|
||||
@@ -102,7 +102,7 @@ digraph safeCalls_kt {
|
||||
color=red
|
||||
33 [label="Enter function test_3" style="filled" fillcolor=red];
|
||||
34 [label="Access variable R|<local>/x|"];
|
||||
35 [label="Type operator: x as? A"];
|
||||
35 [label="Type operator: (R|<local>/x| as? R|A|)"];
|
||||
36 [label="Enter safe call"];
|
||||
37 [label="Access variable R|<local>/x|"];
|
||||
38 [label="Function call: (R|<local>/x| as? R|A|)?.R|/A.bar|(R|<local>/x|)"];
|
||||
|
||||
+2
-2
@@ -49,7 +49,7 @@ digraph overridenOpenVal_kt {
|
||||
color=blue
|
||||
12 [label="Enter when branch condition "];
|
||||
13 [label="Access variable R|/A.x|"];
|
||||
14 [label="Type operator: x is String"];
|
||||
14 [label="Type operator: (this@R|/B|.R|/A.x| is R|kotlin/String|)"];
|
||||
15 [label="Exit when branch condition"];
|
||||
}
|
||||
16 [label="Synthetic else branch"];
|
||||
@@ -93,7 +93,7 @@ digraph overridenOpenVal_kt {
|
||||
27 [label="Enter when branch condition "];
|
||||
28 [label="Access variable R|<local>/b|"];
|
||||
29 [label="Access variable R|/A.x|"];
|
||||
30 [label="Type operator: b.x is String"];
|
||||
30 [label="Type operator: (R|<local>/b|.R|/A.x| is R|kotlin/String|)"];
|
||||
31 [label="Exit when branch condition"];
|
||||
}
|
||||
32 [label="Synthetic else branch"];
|
||||
|
||||
+10
-10
@@ -7,13 +7,13 @@ digraph conditionalEffects_kt {
|
||||
color=red
|
||||
0 [label="Enter function test_1" style="filled" fillcolor=red];
|
||||
1 [label="Access variable R|<local>/x|"];
|
||||
2 [label="Type operator: x is Int"];
|
||||
2 [label="Type operator: (R|<local>/x| is R|kotlin/Int|)"];
|
||||
3 [label="Function call: R|kotlin/require|((R|<local>/x| is R|kotlin/Int|))"];
|
||||
subgraph cluster_1 {
|
||||
color=blue
|
||||
4 [label="Enter contract"];
|
||||
5 [label="Access variable R|<local>/x|"];
|
||||
6 [label="Type operator: x is Int"];
|
||||
6 [label="Type operator: (R|<local>/x| is R|kotlin/Int|)"];
|
||||
7 [label="Exit contract"];
|
||||
}
|
||||
8 [label="Access variable R|<local>/x|"];
|
||||
@@ -101,7 +101,7 @@ digraph conditionalEffects_kt {
|
||||
color=blue
|
||||
36 [label="Enter &&"];
|
||||
37 [label="Access variable R|<local>/x|"];
|
||||
38 [label="Type operator: x is String"];
|
||||
38 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
39 [label="Exit left part of &&"];
|
||||
40 [label="Enter right part of &&"];
|
||||
41 [label="Access variable R|<local>/y|"];
|
||||
@@ -117,7 +117,7 @@ digraph conditionalEffects_kt {
|
||||
color=blue
|
||||
47 [label="Enter &&"];
|
||||
48 [label="Access variable R|<local>/x|"];
|
||||
49 [label="Type operator: x is String"];
|
||||
49 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
50 [label="Exit left part of &&"];
|
||||
51 [label="Enter right part of &&"];
|
||||
52 [label="Access variable R|<local>/y|"];
|
||||
@@ -192,13 +192,13 @@ digraph conditionalEffects_kt {
|
||||
color=blue
|
||||
76 [label="Enter block"];
|
||||
77 [label="Access variable R|<local>/x|"];
|
||||
78 [label="Type operator: x is String"];
|
||||
78 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
79 [label="Function call: R|kotlin/require|((R|<local>/x| is R|kotlin/String|))"];
|
||||
subgraph cluster_16 {
|
||||
color=blue
|
||||
80 [label="Enter contract"];
|
||||
81 [label="Access variable R|<local>/x|"];
|
||||
82 [label="Type operator: x is String"];
|
||||
82 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
83 [label="Exit contract"];
|
||||
}
|
||||
84 [label="Access variable R|<local>/x|"];
|
||||
@@ -265,13 +265,13 @@ digraph conditionalEffects_kt {
|
||||
color=blue
|
||||
100 [label="Enter block"];
|
||||
101 [label="Access variable R|<local>/x|"];
|
||||
102 [label="Type operator: x is String"];
|
||||
102 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
103 [label="Function call: R|kotlin/require|((R|<local>/x| is R|kotlin/String|))"];
|
||||
subgraph cluster_22 {
|
||||
color=blue
|
||||
104 [label="Enter contract"];
|
||||
105 [label="Access variable R|<local>/x|"];
|
||||
106 [label="Type operator: x is String"];
|
||||
106 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
107 [label="Exit contract"];
|
||||
}
|
||||
108 [label="Access variable R|<local>/x|"];
|
||||
@@ -284,13 +284,13 @@ digraph conditionalEffects_kt {
|
||||
color=blue
|
||||
113 [label="Enter block"];
|
||||
114 [label="Access variable R|<local>/x|"];
|
||||
115 [label="Type operator: x is String"];
|
||||
115 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
116 [label="Function call: R|kotlin/require|((R|<local>/x| is R|kotlin/String|))"];
|
||||
subgraph cluster_24 {
|
||||
color=blue
|
||||
117 [label="Enter contract"];
|
||||
118 [label="Access variable R|<local>/x|"];
|
||||
119 [label="Type operator: x is String"];
|
||||
119 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
|
||||
120 [label="Exit contract"];
|
||||
}
|
||||
121 [label="Access variable R|<local>/x|"];
|
||||
|
||||
Reference in New Issue
Block a user