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