[HIR] fix missing read reference to switch test value
Unless I'm mistaken, the switch operand is missing here.
Jan Kassens committed
Nov 7, 2022 at 16:38 UTC
7c094af34e01e7e5cd0af668107cfff49811f624
5 files changed
+5
-4
compiler/forget/src/HIR/InferReferenceEffects.ts
+1
@@ -641,6 +641,7 @@ function inferBlock(env: Environment, block: BasicBlock) {
641
break;
642
}
643
case "switch": {
644
+ env.reference(block.terminal.test, Effect.Read);
645
for (const case_ of block.terminal.cases) {
646
if (case_.test !== null) {
647
env.reference(case_.test, Effect.Read);
compiler/forget/src/__tests__/fixtures/hir/reverse-postorder.expect.md
+1
-1
@@ -43,7 +43,7 @@ bb2:
43
[2] Const mutate $8 = 2
44
[3] Const mutate $9 = 1
45
[4] Const mutate $10 = 0
46
- Switch (<unknown> props$6.test)
46
+ Switch (read props$6.test)
47
Case read $10: bb8
48
Case read $9: bb6
49
Case read $8: bb4
compiler/forget/src/__tests__/fixtures/hir/ssa-switch.expect.md
+1
-1
@@ -33,7 +33,7 @@ bb0:
33
[3] Const mutate $12 = Binary read x$10 === read $11
34
[4] Const mutate $13 = 1
35
[5] Const mutate $14 = Binary read x$10 === read $13
36
- Switch (<unknown> x$10)
36
+ Switch (read x$10)
37
Case read $14: bb5
38
Case read $12: bb3
39
Default: bb2
compiler/forget/src/__tests__/fixtures/hir/switch-non-final-default.expect.md
+1
-1
@@ -37,7 +37,7 @@ bb0:
37
[3] Const mutate $12 = false
38
[4] Const mutate $13 = true
39
[5] Const mutate $14 = 1
40
- Switch (<unknown> props$9.p0)
40
+ Switch (read props$9.p0)
41
Case read $14: bb1
42
Case read $13: bb6
43
Default: bb1
compiler/forget/src/__tests__/fixtures/hir/switch.expect.md
+1
-1
@@ -32,7 +32,7 @@ bb0:
32
[2] Let mutate y$10 = undefined
33
[3] Const mutate $11 = false
34
[4] Const mutate $12 = true
35
- Switch (<unknown> props$8.p0)
35
+ Switch (read props$8.p0)
36
Case read $12: bb4
37
Case read $11: bb2
38
Default: bb1