diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/ControlFlowGraphRenderer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/ControlFlowGraphRenderer.kt index d4a3104e264..dbbb315d617 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/ControlFlowGraphRenderer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/ControlFlowGraphRenderer.kt @@ -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()}" diff --git a/compiler/fir/resolve/testData/resolve/cfg/complex.dot b/compiler/fir/resolve/testData/resolve/cfg/complex.dot index 42c351749f6..bbc1c8bbce6 100644 --- a/compiler/fir/resolve/testData/resolve/cfg/complex.dot +++ b/compiler/fir/resolve/testData/resolve/cfg/complex.dot @@ -200,7 +200,7 @@ digraph complex_kt { color=blue 66 [label="Enter when branch condition "]; 67 [label="Access variable R|/element|"]; - 68 [label="Type operator: element is T"]; + 68 [label="Type operator: (R|/element| is R|T|)"]; 69 [label="Exit when branch condition"]; } 70 [label="Synthetic else branch"]; diff --git a/compiler/fir/resolve/testData/resolve/cfg/jumps.dot b/compiler/fir/resolve/testData/resolve/cfg/jumps.dot index 99d640b7fff..11949857d31 100644 --- a/compiler/fir/resolve/testData/resolve/cfg/jumps.dot +++ b/compiler/fir/resolve/testData/resolve/cfg/jumps.dot @@ -165,7 +165,7 @@ digraph jumps_kt { color=blue 58 [label="Enter block"]; 59 [label="Access variable R|/x|"]; - 60 [label="Type operator: x as Int"]; + 60 [label="Type operator: (R|/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|/x|"]; - 74 [label="Type operator: x as Int"]; + 74 [label="Type operator: (R|/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]; diff --git a/compiler/fir/resolve/testData/resolve/cfg/lambdas.dot b/compiler/fir/resolve/testData/resolve/cfg/lambdas.dot index 60ea7bda1b8..10af49c7089 100644 --- a/compiler/fir/resolve/testData/resolve/cfg/lambdas.dot +++ b/compiler/fir/resolve/testData/resolve/cfg/lambdas.dot @@ -23,7 +23,7 @@ digraph lambdas_kt { color=blue 5 [label="Enter when branch condition "]; 6 [label="Access variable R|/x|"]; - 7 [label="Type operator: x is Int"]; + 7 [label="Type operator: (R|/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|/x|"]; - 27 [label="Type operator: x is Int"]; + 27 [label="Type operator: (R|/x| is R|kotlin/Int|)"]; 28 [label="Exit when branch condition"]; } 29 [label="Synthetic else branch"]; diff --git a/compiler/fir/resolve/testData/resolve/cfg/loops.dot b/compiler/fir/resolve/testData/resolve/cfg/loops.dot index 9e7fec885d4..1431ec026f6 100644 --- a/compiler/fir/resolve/testData/resolve/cfg/loops.dot +++ b/compiler/fir/resolve/testData/resolve/cfg/loops.dot @@ -22,7 +22,7 @@ digraph loops_kt { color=blue 6 [label="Enter block"]; 7 [label="Access variable R|/x|"]; - 8 [label="Type operator: x is String"]; + 8 [label="Type operator: (R|/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|/x|"]; - 14 [label="Type operator: x is String"]; + 14 [label="Type operator: (R|/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|/x|"]; - 21 [label="Type operator: x is String"]; + 21 [label="Type operator: (R|/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|/x|"]; - 30 [label="Type operator: x is String"]; + 30 [label="Type operator: (R|/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|/|.R|kotlin/collections/IntIterator.next|()"]; 49 [label="Variable declaration: lval i: R|kotlin/Int|"]; 50 [label="Access variable R|/x|"]; - 51 [label="Type operator: x is String"]; + 51 [label="Type operator: (R|/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|/x|"]; - 57 [label="Type operator: x is String"]; + 57 [label="Type operator: (R|/x| is R|kotlin/String|)"]; 58 [label="Exit function testFor" style="filled" fillcolor=red]; } diff --git a/compiler/fir/resolve/testData/resolve/cfg/when.dot b/compiler/fir/resolve/testData/resolve/cfg/when.dot index 115780ab7cd..5ea3512e3fa 100644 --- a/compiler/fir/resolve/testData/resolve/cfg/when.dot +++ b/compiler/fir/resolve/testData/resolve/cfg/when.dot @@ -142,11 +142,11 @@ digraph when_kt { color=blue 50 [label="Enter &&"]; 51 [label="Access variable R|/x|"]; - 52 [label="Type operator: x is A"]; + 52 [label="Type operator: (R|/x| is R|A|)"]; 53 [label="Exit left part of &&"]; 54 [label="Enter right part of &&"]; 55 [label="Access variable R|/x|"]; - 56 [label="Type operator: x is B"]; + 56 [label="Type operator: (R|/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|/x|"]; - 63 [label="Type operator: x is A"]; + 63 [label="Type operator: (R|/x| is R|A|)"]; 64 [label="Exit block"]; } 65 [label="Exit when branch result"]; diff --git a/compiler/fir/resolve/testData/resolve/smartcasts/booleans/booleanOperators.dot b/compiler/fir/resolve/testData/resolve/smartcasts/booleans/booleanOperators.dot index 6fa9c82bd68..aeaf69af8bc 100644 --- a/compiler/fir/resolve/testData/resolve/smartcasts/booleans/booleanOperators.dot +++ b/compiler/fir/resolve/testData/resolve/smartcasts/booleans/booleanOperators.dot @@ -48,11 +48,11 @@ digraph booleanOperators_kt { color=blue 11 [label="Enter &&"]; 12 [label="Access variable R|/x|"]; - 13 [label="Type operator: x is B"]; + 13 [label="Type operator: (R|/x| is R|B|)"]; 14 [label="Exit left part of &&"]; 15 [label="Enter right part of &&"]; 16 [label="Access variable R|/x|"]; - 17 [label="Type operator: x is C"]; + 17 [label="Type operator: (R|/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|/x|"]; - 38 [label="Type operator: x is B"]; + 38 [label="Type operator: (R|/x| is R|B|)"]; 39 [label="Exit left part of ||"]; 40 [label="Enter right part of ||"]; 41 [label="Access variable R|/x|"]; - 42 [label="Type operator: x is C"]; + 42 [label="Type operator: (R|/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|/x|"]; - 62 [label="Type operator: x !is A"]; + 62 [label="Type operator: (R|/x| !is R|A|)"]; 63 [label="Function call: (R|/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|/x|"]; - 79 [label="Type operator: x !is String"]; + 79 [label="Type operator: (R|/x| !is R|kotlin/String|)"]; 80 [label="Exit left part of ||"]; 81 [label="Enter right part of ||"]; 82 [label="Access variable R|/x|"]; @@ -291,7 +291,7 @@ digraph booleanOperators_kt { color=blue 102 [label="Enter &&"]; 103 [label="Access variable R|/x|"]; - 104 [label="Type operator: x is A"]; + 104 [label="Type operator: (R|/x| is R|A|)"]; 105 [label="Exit left part of &&"]; 106 [label="Enter right part of &&"]; 107 [label="Access variable R|/x|"]; @@ -346,7 +346,7 @@ digraph booleanOperators_kt { color=blue 122 [label="Enter when branch condition "]; 123 [label="Access variable R|/x|"]; - 124 [label="Type operator: x !is A"]; + 124 [label="Type operator: (R|/x| !is R|A|)"]; 125 [label="Function call: (R|/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|/x|"]; - 141 [label="Type operator: x is A"]; + 141 [label="Type operator: (R|/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|/x|"]; - 164 [label="Type operator: x is A"]; + 164 [label="Type operator: (R|/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|/x|"]; - 181 [label="Type operator: x is A"]; + 181 [label="Type operator: (R|/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|/x|" style="filled" fillcolor=gray]; - 204 [label="Type operator: x is A" style="filled" fillcolor=gray]; + 204 [label="Type operator: (R|/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|/x|" style="filled" fillcolor=gray]; - 224 [label="Type operator: x is A" style="filled" fillcolor=gray]; + 224 [label="Type operator: (R|/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|/x|"]; - 241 [label="Type operator: x is A"]; + 241 [label="Type operator: (R|/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|/x|"]; - 264 [label="Type operator: x is A"]; + 264 [label="Type operator: (R|/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|/x|"]; - 281 [label="Type operator: x is A"]; + 281 [label="Type operator: (R|/x| is R|A|)"]; 282 [label="Exit left part of &&"]; 283 [label="Enter right part of &&"]; 284 [label="Const: Boolean(false)"]; diff --git a/compiler/fir/resolve/testData/resolve/smartcasts/boundSmartcasts/boundSmartcasts.dot b/compiler/fir/resolve/testData/resolve/smartcasts/boundSmartcasts/boundSmartcasts.dot index 42c31acfce4..80bf63a1b9e 100644 --- a/compiler/fir/resolve/testData/resolve/smartcasts/boundSmartcasts/boundSmartcasts.dot +++ b/compiler/fir/resolve/testData/resolve/smartcasts/boundSmartcasts/boundSmartcasts.dot @@ -31,7 +31,7 @@ digraph boundSmartcasts_kt { color=blue 8 [label="Enter when branch condition "]; 9 [label="Access variable R|/x|"]; - 10 [label="Type operator: x is A"]; + 10 [label="Type operator: (R|/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|/y|"]; - 29 [label="Type operator: y is A"]; + 29 [label="Type operator: (R|/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|/x|"]; - 48 [label="Type operator: x is A"]; + 48 [label="Type operator: (R|/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|/y|"]; - 63 [label="Type operator: y is B"]; + 63 [label="Type operator: (R|/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|/x|"]; - 80 [label="Type operator: x as Int"]; + 80 [label="Type operator: (R|/x| as R|kotlin/Int|)"]; 81 [label="Access variable R|/x|"]; 82 [label="Function call: R|/x|.R|kotlin/Int.inc|()"]; 83 [label="Access variable R|/y|"]; @@ -231,7 +231,7 @@ digraph boundSmartcasts_kt { color=blue 88 [label="Enter when branch condition "]; 89 [label="Access variable R|/y|"]; - 90 [label="Type operator: y is A"]; + 90 [label="Type operator: (R|/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|/d|.R|/D.any|.R|/baz|()"]; 141 [label="Access variable R|/a|"]; - 142 [label="Type operator: a as A"]; + 142 [label="Type operator: (R|/a| as R|A|)"]; 143 [label="Access variable R|/a|"]; 144 [label="Function call: R|/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|/a|"]; - 151 [label="Type operator: a as A"]; + 151 [label="Type operator: (R|/a| as R|A|)"]; 152 [label="Access variable R|/a|"]; 153 [label="Function call: R|/a|.R|/A.foo|()"]; 154 [label="Access variable R|/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|/a|"]; - 173 [label="Type operator: a as A"]; + 173 [label="Type operator: (R|/a| as R|A|)"]; 174 [label="Access variable R|/a|"]; 175 [label="Function call: R|/a|.R|/A.foo|()"]; 176 [label="Access variable R|/b|"]; - 177 [label="Type operator: b as B"]; + 177 [label="Type operator: (R|/b| as R|B|)"]; 178 [label="Access variable R|/b|"]; 179 [label="Function call: R|/b|.R|/B.bar|()"]; 180 [label="Exit function test_7" style="filled" fillcolor=red]; diff --git a/compiler/fir/resolve/testData/resolve/smartcasts/boundSmartcasts/boundSmartcastsInBranches.dot b/compiler/fir/resolve/testData/resolve/smartcasts/boundSmartcasts/boundSmartcastsInBranches.dot index e57901e5356..53bdc59a1e2 100644 --- a/compiler/fir/resolve/testData/resolve/smartcasts/boundSmartcasts/boundSmartcastsInBranches.dot +++ b/compiler/fir/resolve/testData/resolve/smartcasts/boundSmartcasts/boundSmartcastsInBranches.dot @@ -227,7 +227,7 @@ digraph boundSmartcastsInBranches_kt { 81 [label="Access variable R|/a|"]; 82 [label="Assignmenet: R|/x|"]; 83 [label="Access variable R|/a|"]; - 84 [label="Type operator: a as A"]; + 84 [label="Type operator: (R|/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|/a|"]; - 108 [label="Type operator: a as A"]; + 108 [label="Type operator: (R|/a| as R|A|)"]; 109 [label="Access variable R|/a|"]; 110 [label="Assignmenet: R|/x|"]; 111 [label="Exit block"]; @@ -383,7 +383,7 @@ digraph boundSmartcastsInBranches_kt { 143 [label="Exit when"]; } 144 [label="Access variable R|/x|"]; - 145 [label="Type operator: x as A"]; + 145 [label="Type operator: (R|/x| as R|A|)"]; 146 [label="Access variable R|/x|"]; 147 [label="Access variable R|/A.s|"]; 148 [label="Access variable R|/a|"]; @@ -458,7 +458,7 @@ digraph boundSmartcastsInBranches_kt { 171 [label="Exit when"]; } 172 [label="Access variable R|/a|"]; - 173 [label="Type operator: a as A"]; + 173 [label="Type operator: (R|/a| as R|A|)"]; 174 [label="Access variable R|/x|"]; 175 [label="Access variable R|/A.s|"]; 176 [label="Access variable R|/a|"]; diff --git a/compiler/fir/resolve/testData/resolve/smartcasts/casts.dot b/compiler/fir/resolve/testData/resolve/smartcasts/casts.dot index 491d09a6a47..b9d3a0e347a 100644 --- a/compiler/fir/resolve/testData/resolve/smartcasts/casts.dot +++ b/compiler/fir/resolve/testData/resolve/smartcasts/casts.dot @@ -7,7 +7,7 @@ digraph casts_kt { color=red 0 [label="Enter function test_1" style="filled" fillcolor=red]; 1 [label="Access variable R|/x|"]; - 2 [label="Type operator: x as String"]; + 2 [label="Type operator: (R|/x| as R|kotlin/String|)"]; 3 [label="Access variable R|/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|/x|"]; - 10 [label="Type operator: x as Boolean"]; + 10 [label="Type operator: (R|/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|/x|"]; - 31 [label="Type operator: x as Boolean"]; + 31 [label="Type operator: (R|/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|/x|"]; - 51 [label="Type operator: x as Boolean"]; + 51 [label="Type operator: (R|/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|/x|"]; - 73 [label="Type operator: x as Boolean"]; + 73 [label="Type operator: (R|/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|/b|"]; - 91 [label="Type operator: b as? Boolean"]; + 91 [label="Type operator: (R|/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|/b|"]; - 115 [label="Type operator: b as? Boolean"]; + 115 [label="Type operator: (R|/b| as? R|kotlin/Boolean|)"]; 116 [label="Const: Null(null)"]; 117 [label="Operator =="]; 118 [label="Exit when branch condition"]; diff --git a/compiler/fir/resolve/testData/resolve/smartcasts/controlStructures/elvis.dot b/compiler/fir/resolve/testData/resolve/smartcasts/controlStructures/elvis.dot index cc3050cff8b..5d61bc25364 100644 --- a/compiler/fir/resolve/testData/resolve/smartcasts/controlStructures/elvis.dot +++ b/compiler/fir/resolve/testData/resolve/smartcasts/controlStructures/elvis.dot @@ -140,7 +140,7 @@ digraph elvis_kt { color=blue 45 [label="Enter when branch condition "]; 46 [label="Access variable R|/b|"]; - 47 [label="Type operator: b !is String"]; + 47 [label="Type operator: (R|/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|/a|"]; - 61 [label="Type operator: a !is String?"]; + 61 [label="Type operator: (R|/a| !is R|kotlin/String?|)"]; 62 [label="Exit when branch condition"]; } 63 [label="Synthetic else branch"]; diff --git a/compiler/fir/resolve/testData/resolve/smartcasts/controlStructures/returns.dot b/compiler/fir/resolve/testData/resolve/smartcasts/controlStructures/returns.dot index 4cce3d9b2c7..1a12979d9f3 100644 --- a/compiler/fir/resolve/testData/resolve/smartcasts/controlStructures/returns.dot +++ b/compiler/fir/resolve/testData/resolve/smartcasts/controlStructures/returns.dot @@ -13,7 +13,7 @@ digraph returns_kt { color=blue 2 [label="Enter when branch condition "]; 3 [label="Access variable R|/x|"]; - 4 [label="Type operator: x is String"]; + 4 [label="Type operator: (R|/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|/x|"]; - 26 [label="Type operator: x is String"]; + 26 [label="Type operator: (R|/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|/x|"]; - 56 [label="Type operator: x is B"]; + 56 [label="Type operator: (R|/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|/x|"]; - 60 [label="Type operator: x is C"]; + 60 [label="Type operator: (R|/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|/x|"]; - 94 [label="Type operator: x is B"]; + 94 [label="Type operator: (R|/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|/x|"]; - 98 [label="Type operator: x is C"]; + 98 [label="Type operator: (R|/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|/a|"]; - 135 [label="Type operator: a as? String"]; + 135 [label="Type operator: (R|/a| as? R|kotlin/String|)"]; 136 [label="Variable declaration: lval s: R|kotlin/String?|"]; subgraph cluster_33 { color=blue diff --git a/compiler/fir/resolve/testData/resolve/smartcasts/controlStructures/simpleIf.dot b/compiler/fir/resolve/testData/resolve/smartcasts/controlStructures/simpleIf.dot index e335d10d40f..5c65c66dd28 100644 --- a/compiler/fir/resolve/testData/resolve/smartcasts/controlStructures/simpleIf.dot +++ b/compiler/fir/resolve/testData/resolve/smartcasts/controlStructures/simpleIf.dot @@ -13,7 +13,7 @@ digraph simpleIf_kt { color=blue 2 [label="Enter when branch condition "]; 3 [label="Access variable R|/x|"]; - 4 [label="Type operator: x is String"]; + 4 [label="Type operator: (R|/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|/x|"]; - 19 [label="Type operator: x is String"]; + 19 [label="Type operator: (R|/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|/x|"]; - 40 [label="Type operator: x !is String"]; + 40 [label="Type operator: (R|/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|/x|"]; - 44 [label="Type operator: x !is Int"]; + 44 [label="Type operator: (R|/x| !is R|kotlin/Int|)"]; 45 [label="Exit when branch condition"]; } subgraph cluster_12 { diff --git a/compiler/fir/resolve/testData/resolve/smartcasts/controlStructures/smartcastFromArgument.dot b/compiler/fir/resolve/testData/resolve/smartcasts/controlStructures/smartcastFromArgument.dot index 50f9c80e049..e404400c0fe 100644 --- a/compiler/fir/resolve/testData/resolve/smartcasts/controlStructures/smartcastFromArgument.dot +++ b/compiler/fir/resolve/testData/resolve/smartcasts/controlStructures/smartcastFromArgument.dot @@ -39,7 +39,7 @@ digraph smartcastFromArgument_kt { color=blue 10 [label="Enter when"]; 11 [label="Access variable R|/a|"]; - 12 [label="Type operator: a as? A"]; + 12 [label="Type operator: (R|/a| as? R|A|)"]; 13 [label="Variable declaration: lval : R|A?|"]; subgraph cluster_6 { color=blue diff --git a/compiler/fir/resolve/testData/resolve/smartcasts/controlStructures/when.dot b/compiler/fir/resolve/testData/resolve/smartcasts/controlStructures/when.dot index 267dbd4e5e9..8f057f2c730 100644 --- a/compiler/fir/resolve/testData/resolve/smartcasts/controlStructures/when.dot +++ b/compiler/fir/resolve/testData/resolve/smartcasts/controlStructures/when.dot @@ -29,14 +29,14 @@ digraph when_kt { color=blue 6 [label="Enter when branch condition "]; 7 [label="Access variable R|/x|"]; - 8 [label="Type operator: x is A"]; + 8 [label="Type operator: (R|/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|/x|"]; - 12 [label="Type operator: x is B"]; + 12 [label="Type operator: (R|/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|/x|"]; - 31 [label="Type operator: x !is A"]; + 31 [label="Type operator: (R|/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|/x|"]; - 35 [label="Type operator: x !is B"]; + 35 [label="Type operator: (R|/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|/x|"]; - 39 [label="Type operator: x is Int"]; + 39 [label="Type operator: (R|/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|/x|"]; - 226 [label="Type operator: x as Int"]; + 226 [label="Type operator: (R|/x| as R|kotlin/Int|)"]; subgraph cluster_49 { color=blue 227 [label="Enter when branch condition "]; diff --git a/compiler/fir/resolve/testData/resolve/smartcasts/lambdas/inPlaceLambdas.dot b/compiler/fir/resolve/testData/resolve/smartcasts/lambdas/inPlaceLambdas.dot index 188dc4b3dfc..09e9c4754e5 100644 --- a/compiler/fir/resolve/testData/resolve/smartcasts/lambdas/inPlaceLambdas.dot +++ b/compiler/fir/resolve/testData/resolve/smartcasts/lambdas/inPlaceLambdas.dot @@ -39,7 +39,7 @@ digraph inPlaceLambdas_kt { color=blue 9 [label="Enter when branch condition "]; 10 [label="Access variable R|/x|"]; - 11 [label="Type operator: x is A"]; + 11 [label="Type operator: (R|/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|/x|"]; - 31 [label="Type operator: x as B"]; + 31 [label="Type operator: (R|/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|/x|"]; - 42 [label="Type operator: x is A"]; + 42 [label="Type operator: (R|/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|/x|"]; 50 [label="Function call: R|/x|.R|/A.foo|()"]; 51 [label="Access variable R|/x|"]; - 52 [label="Type operator: x as B"]; + 52 [label="Type operator: (R|/x| as R|B|)"]; 53 [label="Exit function anonymousFunction"]; } 54 [label="Postponed exit from lambda"]; diff --git a/compiler/fir/resolve/testData/resolve/smartcasts/loops/dataFlowInfoFromWhileCondition.dot b/compiler/fir/resolve/testData/resolve/smartcasts/loops/dataFlowInfoFromWhileCondition.dot index e84738032d3..c8a5a57c7f2 100644 --- a/compiler/fir/resolve/testData/resolve/smartcasts/loops/dataFlowInfoFromWhileCondition.dot +++ b/compiler/fir/resolve/testData/resolve/smartcasts/loops/dataFlowInfoFromWhileCondition.dot @@ -26,11 +26,11 @@ digraph dataFlowInfoFromWhileCondition_kt { color=blue 7 [label="Enter ||"]; 8 [label="Access variable R|/a|"]; - 9 [label="Type operator: a is B"]; + 9 [label="Type operator: (R|/a| is R|B|)"]; 10 [label="Exit left part of ||"]; 11 [label="Enter right part of ||"]; 12 [label="Access variable R|/a|"]; - 13 [label="Type operator: a is C"]; + 13 [label="Type operator: (R|/a| is R|C|)"]; 14 [label="Exit ||"]; } 15 [label="Exit loop condition"]; diff --git a/compiler/fir/resolve/testData/resolve/smartcasts/loops/endlessLoops.dot b/compiler/fir/resolve/testData/resolve/smartcasts/loops/endlessLoops.dot index 5a8b69aa4a9..3458f3313e1 100644 --- a/compiler/fir/resolve/testData/resolve/smartcasts/loops/endlessLoops.dot +++ b/compiler/fir/resolve/testData/resolve/smartcasts/loops/endlessLoops.dot @@ -30,7 +30,7 @@ digraph endlessLoops_kt { color=blue 8 [label="Enter block"]; 9 [label="Access variable R|/x|"]; - 10 [label="Type operator: x as A"]; + 10 [label="Type operator: (R|/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|/x|"]; - 44 [label="Type operator: x as A"]; + 44 [label="Type operator: (R|/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|/x|"]; - 64 [label="Type operator: x as A"]; + 64 [label="Type operator: (R|/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|/x|"]; - 110 [label="Type operator: x as A"]; + 110 [label="Type operator: (R|/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|/x|"]; - 136 [label="Type operator: x as A"]; + 136 [label="Type operator: (R|/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|/x|"]; - 156 [label="Type operator: x as A"]; + 156 [label="Type operator: (R|/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|/x|"]; - 183 [label="Type operator: x as A"]; + 183 [label="Type operator: (R|/x| as R|A|)"]; 184 [label="Exit block"]; } 185 [label="Exit loop block"]; diff --git a/compiler/fir/resolve/testData/resolve/smartcasts/multipleCasts.dot b/compiler/fir/resolve/testData/resolve/smartcasts/multipleCasts.dot index 93589321a11..a735a7f4625 100644 --- a/compiler/fir/resolve/testData/resolve/smartcasts/multipleCasts.dot +++ b/compiler/fir/resolve/testData/resolve/smartcasts/multipleCasts.dot @@ -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|/a|"]; - 15 [label="Type operator: a as A"]; + 15 [label="Type operator: (R|/a| as R|A|)"]; 16 [label="Access variable R|/a|"]; 17 [label="Function call: R|/a|.R|/A.foo|()"]; 18 [label="Access variable R|/b|"]; - 19 [label="Type operator: b as B"]; + 19 [label="Type operator: (R|/b| as R|B|)"]; 20 [label="Access variable R|/b|"]; 21 [label="Function call: R|/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|/a|"]; - 32 [label="Type operator: a is A"]; + 32 [label="Type operator: (R|/a| is R|A|)"]; 33 [label="Exit left part of &&"]; 34 [label="Enter right part of &&"]; 35 [label="Access variable R|/b|"]; - 36 [label="Type operator: b is B"]; + 36 [label="Type operator: (R|/b| is R|B|)"]; 37 [label="Exit &&"]; } 38 [label="Exit when branch condition"]; diff --git a/compiler/fir/resolve/testData/resolve/smartcasts/receivers/implicitReceiverAsWhenSubject.dot b/compiler/fir/resolve/testData/resolve/smartcasts/receivers/implicitReceiverAsWhenSubject.dot index 3ca2a2424e3..2d4502b207c 100644 --- a/compiler/fir/resolve/testData/resolve/smartcasts/receivers/implicitReceiverAsWhenSubject.dot +++ b/compiler/fir/resolve/testData/resolve/smartcasts/receivers/implicitReceiverAsWhenSubject.dot @@ -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 { diff --git a/compiler/fir/resolve/testData/resolve/smartcasts/receivers/implicitReceivers.dot b/compiler/fir/resolve/testData/resolve/smartcasts/receivers/implicitReceivers.dot index 1f4c23bd9d0..7d413f4d1a1 100644 --- a/compiler/fir/resolve/testData/resolve/smartcasts/receivers/implicitReceivers.dot +++ b/compiler/fir/resolve/testData/resolve/smartcasts/receivers/implicitReceivers.dot @@ -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]; } diff --git a/compiler/fir/resolve/testData/resolve/smartcasts/receivers/thisOfExtensionProperty.dot b/compiler/fir/resolve/testData/resolve/smartcasts/receivers/thisOfExtensionProperty.dot index 75040b8ab88..34ff1a2f568 100644 --- a/compiler/fir/resolve/testData/resolve/smartcasts/receivers/thisOfExtensionProperty.dot +++ b/compiler/fir/resolve/testData/resolve/smartcasts/receivers/thisOfExtensionProperty.dot @@ -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|"]; diff --git a/compiler/fir/resolve/testData/resolve/smartcasts/safeCalls/assignSafeCall.dot b/compiler/fir/resolve/testData/resolve/smartcasts/safeCalls/assignSafeCall.dot index 98bbe530082..dcd2f28c095 100644 --- a/compiler/fir/resolve/testData/resolve/smartcasts/safeCalls/assignSafeCall.dot +++ b/compiler/fir/resolve/testData/resolve/smartcasts/safeCalls/assignSafeCall.dot @@ -169,7 +169,7 @@ digraph assignSafeCall_kt { color=blue 57 [label="Enter when"]; 58 [label="Access variable R|/x|"]; - 59 [label="Type operator: x as? A"]; + 59 [label="Type operator: (R|/x| as? R|A|)"]; 60 [label="Variable declaration: lval : 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|/x|"]; - 138 [label="Type operator: x as? B"]; + 138 [label="Type operator: (R|/x| as? R|B|)"]; 139 [label="Variable declaration: lval : R|B?|"]; subgraph cluster_33 { color=blue diff --git a/compiler/fir/resolve/testData/resolve/smartcasts/safeCalls/safeCalls.dot b/compiler/fir/resolve/testData/resolve/smartcasts/safeCalls/safeCalls.dot index 8d3df8aaeb6..899cbb8409f 100644 --- a/compiler/fir/resolve/testData/resolve/smartcasts/safeCalls/safeCalls.dot +++ b/compiler/fir/resolve/testData/resolve/smartcasts/safeCalls/safeCalls.dot @@ -82,7 +82,7 @@ digraph safeCalls_kt { color=red 25 [label="Enter function test_2" style="filled" fillcolor=red]; 26 [label="Access variable R|/x|"]; - 27 [label="Type operator: x as? A"]; + 27 [label="Type operator: (R|/x| as? R|A|)"]; 28 [label="Enter safe call"]; 29 [label="Access variable R|/x|"]; 30 [label="Function call: (R|/x| as? R|A|)?.R|/A.bar|(R|/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|/x|"]; - 35 [label="Type operator: x as? A"]; + 35 [label="Type operator: (R|/x| as? R|A|)"]; 36 [label="Enter safe call"]; 37 [label="Access variable R|/x|"]; 38 [label="Function call: (R|/x| as? R|A|)?.R|/A.bar|(R|/x|)"]; diff --git a/compiler/fir/resolve/testData/resolve/smartcasts/stability/overridenOpenVal.dot b/compiler/fir/resolve/testData/resolve/smartcasts/stability/overridenOpenVal.dot index d449afc5048..ae818bf50e9 100644 --- a/compiler/fir/resolve/testData/resolve/smartcasts/stability/overridenOpenVal.dot +++ b/compiler/fir/resolve/testData/resolve/smartcasts/stability/overridenOpenVal.dot @@ -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|/b|"]; 29 [label="Access variable R|/A.x|"]; - 30 [label="Type operator: b.x is String"]; + 30 [label="Type operator: (R|/b|.R|/A.x| is R|kotlin/String|)"]; 31 [label="Exit when branch condition"]; } 32 [label="Synthetic else branch"]; diff --git a/compiler/fir/resolve/testData/resolveWithStdlib/contracts/conditionalEffects.dot b/compiler/fir/resolve/testData/resolveWithStdlib/contracts/conditionalEffects.dot index 333f576cb0f..d14a1e32316 100644 --- a/compiler/fir/resolve/testData/resolveWithStdlib/contracts/conditionalEffects.dot +++ b/compiler/fir/resolve/testData/resolveWithStdlib/contracts/conditionalEffects.dot @@ -7,13 +7,13 @@ digraph conditionalEffects_kt { color=red 0 [label="Enter function test_1" style="filled" fillcolor=red]; 1 [label="Access variable R|/x|"]; - 2 [label="Type operator: x is Int"]; + 2 [label="Type operator: (R|/x| is R|kotlin/Int|)"]; 3 [label="Function call: R|kotlin/require|((R|/x| is R|kotlin/Int|))"]; subgraph cluster_1 { color=blue 4 [label="Enter contract"]; 5 [label="Access variable R|/x|"]; - 6 [label="Type operator: x is Int"]; + 6 [label="Type operator: (R|/x| is R|kotlin/Int|)"]; 7 [label="Exit contract"]; } 8 [label="Access variable R|/x|"]; @@ -101,7 +101,7 @@ digraph conditionalEffects_kt { color=blue 36 [label="Enter &&"]; 37 [label="Access variable R|/x|"]; - 38 [label="Type operator: x is String"]; + 38 [label="Type operator: (R|/x| is R|kotlin/String|)"]; 39 [label="Exit left part of &&"]; 40 [label="Enter right part of &&"]; 41 [label="Access variable R|/y|"]; @@ -117,7 +117,7 @@ digraph conditionalEffects_kt { color=blue 47 [label="Enter &&"]; 48 [label="Access variable R|/x|"]; - 49 [label="Type operator: x is String"]; + 49 [label="Type operator: (R|/x| is R|kotlin/String|)"]; 50 [label="Exit left part of &&"]; 51 [label="Enter right part of &&"]; 52 [label="Access variable R|/y|"]; @@ -192,13 +192,13 @@ digraph conditionalEffects_kt { color=blue 76 [label="Enter block"]; 77 [label="Access variable R|/x|"]; - 78 [label="Type operator: x is String"]; + 78 [label="Type operator: (R|/x| is R|kotlin/String|)"]; 79 [label="Function call: R|kotlin/require|((R|/x| is R|kotlin/String|))"]; subgraph cluster_16 { color=blue 80 [label="Enter contract"]; 81 [label="Access variable R|/x|"]; - 82 [label="Type operator: x is String"]; + 82 [label="Type operator: (R|/x| is R|kotlin/String|)"]; 83 [label="Exit contract"]; } 84 [label="Access variable R|/x|"]; @@ -265,13 +265,13 @@ digraph conditionalEffects_kt { color=blue 100 [label="Enter block"]; 101 [label="Access variable R|/x|"]; - 102 [label="Type operator: x is String"]; + 102 [label="Type operator: (R|/x| is R|kotlin/String|)"]; 103 [label="Function call: R|kotlin/require|((R|/x| is R|kotlin/String|))"]; subgraph cluster_22 { color=blue 104 [label="Enter contract"]; 105 [label="Access variable R|/x|"]; - 106 [label="Type operator: x is String"]; + 106 [label="Type operator: (R|/x| is R|kotlin/String|)"]; 107 [label="Exit contract"]; } 108 [label="Access variable R|/x|"]; @@ -284,13 +284,13 @@ digraph conditionalEffects_kt { color=blue 113 [label="Enter block"]; 114 [label="Access variable R|/x|"]; - 115 [label="Type operator: x is String"]; + 115 [label="Type operator: (R|/x| is R|kotlin/String|)"]; 116 [label="Function call: R|kotlin/require|((R|/x| is R|kotlin/String|))"]; subgraph cluster_24 { color=blue 117 [label="Enter contract"]; 118 [label="Access variable R|/x|"]; - 119 [label="Type operator: x is String"]; + 119 [label="Type operator: (R|/x| is R|kotlin/String|)"]; 120 [label="Exit contract"]; } 121 [label="Access variable R|/x|"];