diff --git a/compiler/forget/src/HIR/InferReactiveScopeDependencies.ts b/compiler/forget/src/HIR/InferReactiveScopeDependencies.ts
index 05f7bd6b80..a5385a52e1 100644
--- a/compiler/forget/src/HIR/InferReactiveScopeDependencies.ts
+++ b/compiler/forget/src/HIR/InferReactiveScopeDependencies.ts
@@ -127,6 +127,7 @@ class ScopeDependenciesVisitor
}
visitInstruction(instr: Instruction, _value: InstructionValue): void {
+ this.#visitId(instr.id);
const { lvalue, value } = instr;
if (lvalue !== null && lvalue.place.memberPath === null) {
if (!this.#identifiers.has(lvalue.place.identifier)) {
@@ -173,8 +174,6 @@ class ScopeDependenciesVisitor
}
}
}
-
- this.#visitId(instr.id);
}
enterBlock(): void {}
diff --git a/compiler/forget/src/__tests__/fixtures/hir/hook-call.expect.md b/compiler/forget/src/__tests__/fixtures/hir/hook-call.expect.md
index 365db2ff7d..5172e0398d 100644
--- a/compiler/forget/src/__tests__/fixtures/hir/hook-call.expect.md
+++ b/compiler/forget/src/__tests__/fixtures/hir/hook-call.expect.md
@@ -81,7 +81,6 @@ bb0:
[8] Return read $16_@2
scope1 [2:3]:
- dependency: freeze x$11_@0
- - dependency: read x$11_@0
scope2 [7:8]:
- dependency: read Component$0
- dependency: read $13
@@ -100,7 +99,7 @@ function Component(
scope @0 [1:2] deps=[] {
[1] Const mutate x$11_@0 = Array []
}
- scope @1 [2:3] deps=[freeze x$11_@0, read x$11_@0] {
+ scope @1 [2:3] deps=[freeze x$11_@0] {
[2] Const mutate y$12_@1 = Call read useFreeze$4:TFunction(freeze x$11_@0)
}
[3] Call mutate foo$5:TFunction(read y$12_@1, read x$11_@0)
diff --git a/compiler/forget/src/__tests__/fixtures/hir/overlapping-scopes-shadowed.expect.md b/compiler/forget/src/__tests__/fixtures/hir/overlapping-scopes-shadowed.expect.md
index 81f93b377b..caa5606488 100644
--- a/compiler/forget/src/__tests__/fixtures/hir/overlapping-scopes-shadowed.expect.md
+++ b/compiler/forget/src/__tests__/fixtures/hir/overlapping-scopes-shadowed.expect.md
@@ -21,11 +21,10 @@ bb0:
[4] Call mutate x$7_@0.push(read a$5)
[5] Return
scope0 [1:5]:
- - dependency: read b$6
- dependency: read a$5
+ - dependency: read b$6
scope1 [2:4]:
- dependency: read b$6
- - dependency: read a$5
```
## Reactive Scopes
@@ -35,9 +34,9 @@ function foo(
a,
b,
) {
- scope @0 [1:5] deps=[read b$6, read a$5] {
+ scope @0 [1:5] deps=[read a$5, read b$6] {
[1] Const mutate x$7_@0:TFunction[1:5] = Array []
- scope @1 [2:4] deps=[read b$6, read a$5] {
+ scope @1 [2:4] deps=[read b$6] {
[2] Const mutate y$8_@1:TFunction[2:4] = Array []
[3] Call mutate y$8_@1.push(read b$6)
}
diff --git a/compiler/forget/src/__tests__/fixtures/hir/reactive-scope-grouping.expect.md b/compiler/forget/src/__tests__/fixtures/hir/reactive-scope-grouping.expect.md
index ceffb04a01..946e0db868 100644
--- a/compiler/forget/src/__tests__/fixtures/hir/reactive-scope-grouping.expect.md
+++ b/compiler/forget/src/__tests__/fixtures/hir/reactive-scope-grouping.expect.md
@@ -24,10 +24,7 @@ bb0:
[4] Call mutate y$5_@1.push(mutate z$6_@1:TObject)
[5] Reassign mutate x$4_@0.y[1:6] = read y$5_@1:TFunction
[6] Return freeze x$4_@0:TObject
-scope0 [1:6]:
- - dependency: mutate x$4_@0.y
-scope1 [2:5]:
- - dependency: mutate x$4_@0.y
+
```
## Reactive Scopes
@@ -35,9 +32,9 @@ scope1 [2:5]:
```
function foo(
) {
- scope @0 [1:6] deps=[mutate x$4_@0.y] {
+ scope @0 [1:6] deps=[] {
[1] Const mutate x$4_@0:TObject[1:6] = Object { }
- scope @1 [2:5] deps=[mutate x$4_@0.y] {
+ scope @1 [2:5] deps=[] {
[2] Const mutate y$5_@1:TFunction[2:5] = Array []
[3] Const mutate z$6_@1:TObject[2:5] = Object { }
[4] Call mutate y$5_@1.push(mutate z$6_@1:TObject)
diff --git a/compiler/forget/src/__tests__/fixtures/hir/reassignment-conditional.expect.md b/compiler/forget/src/__tests__/fixtures/hir/reassignment-conditional.expect.md
index 38bb1a92d2..dc16c3fa9f 100644
--- a/compiler/forget/src/__tests__/fixtures/hir/reassignment-conditional.expect.md
+++ b/compiler/forget/src/__tests__/fixtures/hir/reassignment-conditional.expect.md
@@ -43,8 +43,6 @@ scope0 [1:7]:
scope1 [7:8]:
- dependency: read Component$0
- dependency: freeze x$7_@0:TFunction
- - dependency: read y$8.push
- - dependency: read props$6.p2
scope2 [9:10]:
- dependency: read Component$0
- dependency: read x$7_@0:TFunction
@@ -65,7 +63,7 @@ function Component(
[5] Reassign mutate x$7_@0:TFunction[1:7] = Array []
}
}
- scope @1 [7:8] deps=[read Component$0, freeze x$7_@0:TFunction, read y$8.push, read props$6.p2] {
+ scope @1 [7:8] deps=[read Component$0, freeze x$7_@0:TFunction] {
[7] Const mutate _$12_@1 = JSX
}
[8] Call read y$8.push(read props$6.p2)
diff --git a/compiler/forget/src/__tests__/fixtures/hir/reassignment.expect.md b/compiler/forget/src/__tests__/fixtures/hir/reassignment.expect.md
index 44c6af6f4c..320c519184 100644
--- a/compiler/forget/src/__tests__/fixtures/hir/reassignment.expect.md
+++ b/compiler/forget/src/__tests__/fixtures/hir/reassignment.expect.md
@@ -31,13 +31,12 @@ bb0:
[8] Return read $11_@3
scope0 [1:7]:
- dependency: read props$6.p0
+ - dependency: read props$6.p1
- dependency: read Component$0
- dependency: freeze x$9_@1
- - dependency: read props$6.p1
scope2 [5:6]:
- dependency: read Component$0
- dependency: freeze x$9_@1
- - dependency: read props$6.p1
scope3 [7:8]:
- dependency: read Component$0
- dependency: read x$9_@1
@@ -50,14 +49,14 @@ scope3 [7:8]:
function Component(
props,
) {
- scope @0 [1:7] deps=[read props$6.p0, read Component$0, freeze x$9_@1, read props$6.p1] {
+ scope @0 [1:7] deps=[read props$6.p0, read props$6.p1, read Component$0, freeze x$9_@1] {
[1] Const mutate x$7_@0:TFunction[1:7] = Array []
[2] Call mutate x$7_@0.push(read props$6.p0)
[3] Const mutate y$8_@0:TFunction[1:7] = read x$7_@0:TFunction
scope @1 [4:5] deps=[] {
[4] Const mutate x$9_@1 = Array []
}
- scope @2 [5:6] deps=[read Component$0, freeze x$9_@1, read props$6.p1] {
+ scope @2 [5:6] deps=[read Component$0, freeze x$9_@1] {
[5] Const mutate _$10_@2 = JSX
}
[6] Call mutate y$8_@0.push(read props$6.p1)
diff --git a/compiler/forget/src/__tests__/fixtures/hir/ssa-property-alias-if.expect.md b/compiler/forget/src/__tests__/fixtures/hir/ssa-property-alias-if.expect.md
index 0cfd14f33c..69d9eff800 100644
--- a/compiler/forget/src/__tests__/fixtures/hir/ssa-property-alias-if.expect.md
+++ b/compiler/forget/src/__tests__/fixtures/hir/ssa-property-alias-if.expect.md
@@ -37,12 +37,6 @@ bb1:
[9] Return freeze x$6_@0:TObject
scope0 [1:9]:
- dependency: read a$5
- - dependency: mutate x$6_@0.y
- - dependency: mutate x$6_@0.z
-scope1 [3:4]:
- - dependency: mutate x$6_@0.y
-scope2 [6:7]:
- - dependency: mutate x$6_@0.z
```
## Reactive Scopes
@@ -51,15 +45,15 @@ scope2 [6:7]:
function foo(
a,
) {
- scope @0 [1:9] deps=[read a$5, mutate x$6_@0.y, mutate x$6_@0.z] {
+ scope @0 [1:9] deps=[read a$5] {
[1] Const mutate x$6_@0:TObject[1:9] = Object { }
if (read a$5) {
- scope @1 [3:4] deps=[mutate x$6_@0.y] {
+ scope @1 [3:4] deps=[] {
[3] Const mutate y$7_@1:TObject = Object { }
}
[4] Reassign mutate x$6_@0.y[1:9] = read y$7_@1:TObject
} else {
- scope @2 [6:7] deps=[mutate x$6_@0.z] {
+ scope @2 [6:7] deps=[] {
[6] Const mutate z$8_@2:TObject = Object { }
}
[7] Reassign mutate x$6_@0.z[1:9] = read z$8_@2:TObject
diff --git a/compiler/forget/src/__tests__/fixtures/hir/ssa-property-alias-mutate-inside-if.expect.md b/compiler/forget/src/__tests__/fixtures/hir/ssa-property-alias-mutate-inside-if.expect.md
index 29ecf9a2a5..175da4727e 100644
--- a/compiler/forget/src/__tests__/fixtures/hir/ssa-property-alias-mutate-inside-if.expect.md
+++ b/compiler/forget/src/__tests__/fixtures/hir/ssa-property-alias-mutate-inside-if.expect.md
@@ -39,9 +39,6 @@ bb1:
[10] Return freeze x$7_@0:TObject
scope0 [1:10]:
- dependency: read a$6
- - dependency: mutate x$7_@0.z
-scope1 [7:8]:
- - dependency: mutate x$7_@0.z
```
## Reactive Scopes
@@ -50,14 +47,14 @@ scope1 [7:8]:
function foo(
a,
) {
- scope @0 [1:10] deps=[read a$6, mutate x$7_@0.z] {
+ scope @0 [1:10] deps=[read a$6] {
[1] Const mutate x$7_@0:TObject[1:10] = Object { }
if (read a$6) {
[3] Const mutate y$8_@0:TObject[1:10] = Object { }
[4] Reassign mutate x$7_@0.y[1:10] = read y$8_@0:TObject
[5] Call mutate mutate$4:TFunction(mutate y$8_@0:TObject)
} else {
- scope @1 [7:8] deps=[mutate x$7_@0.z] {
+ scope @1 [7:8] deps=[] {
[7] Const mutate z$9_@1:TObject = Object { }
}
[8] Reassign mutate x$7_@0.z[1:10] = read z$9_@1:TObject
diff --git a/compiler/forget/src/__tests__/fixtures/hir/switch-non-final-default.expect.md b/compiler/forget/src/__tests__/fixtures/hir/switch-non-final-default.expect.md
index 16d2bdc5be..737625cfc0 100644
--- a/compiler/forget/src/__tests__/fixtures/hir/switch-non-final-default.expect.md
+++ b/compiler/forget/src/__tests__/fixtures/hir/switch-non-final-default.expect.md
@@ -61,8 +61,6 @@ bb1:
scope2 [12:13]:
- dependency: read Component$0
- dependency: freeze x$10_@1:TFunction
- - dependency: read y$11_@1.push
- - dependency: read props$9.p4
scope3 [14:15]:
- dependency: read Component$0
- dependency: freeze y$11_@1:TPrimitive
@@ -98,7 +96,7 @@ function Component(
}
}
}
- scope @2 [12:13] deps=[read Component$0, freeze x$10_@1:TFunction, read y$11_@1.push, read props$9.p4] {
+ scope @2 [12:13] deps=[read Component$0, freeze x$10_@1:TFunction] {
[12] Const mutate child$19_@2 = JSX
}
[13] Call read y$11_@1.push(read props$9.p4)
diff --git a/compiler/forget/src/__tests__/fixtures/hir/switch.expect.md b/compiler/forget/src/__tests__/fixtures/hir/switch.expect.md
index a4eb3d3ea8..a37c1a59fc 100644
--- a/compiler/forget/src/__tests__/fixtures/hir/switch.expect.md
+++ b/compiler/forget/src/__tests__/fixtures/hir/switch.expect.md
@@ -56,8 +56,6 @@ bb1:
scope3 [12:13]:
- dependency: read Component$0
- dependency: freeze x$9_@1:TFunction
- - dependency: read y$10_@1.push
- - dependency: read props$8.p4
scope4 [14:15]:
- dependency: read Component$0
- dependency: read y$10_@1:TPrimitive
@@ -88,7 +86,7 @@ function Component(
}
}
}
- scope @3 [12:13] deps=[read Component$0, freeze x$9_@1:TFunction, read y$10_@1.push, read props$8.p4] {
+ scope @3 [12:13] deps=[read Component$0, freeze x$9_@1:TFunction] {
[12] Const mutate child$19_@3 = JSX
}
[13] Call read y$10_@1.push(read props$8.p4)
diff --git a/compiler/forget/src/__tests__/fixtures/hir/type-binary-operator.expect.md b/compiler/forget/src/__tests__/fixtures/hir/type-binary-operator.expect.md
index d93e0f9cc1..23adc01b74 100644
--- a/compiler/forget/src/__tests__/fixtures/hir/type-binary-operator.expect.md
+++ b/compiler/forget/src/__tests__/fixtures/hir/type-binary-operator.expect.md
@@ -27,8 +27,7 @@ bb2:
bb1:
predecessor blocks: bb2 bb0
[7] Return
-scope1 [2:3]:
- - dependency: read a$7_@0:TPrimitive
+
```
## Reactive Scopes
@@ -39,7 +38,7 @@ function component(
scope @0 [1:2] deps=[] {
[1] Const mutate a$7_@0:TPrimitive = Call mutate some$2:TFunction()
}
- scope @1 [2:3] deps=[read a$7_@0:TPrimitive] {
+ scope @1 [2:3] deps=[] {
[2] Const mutate b$8_@1:TPrimitive = Call mutate someOther$4:TFunction()
}
[3] Const mutate $9:TPrimitive = Binary read a$7_@0:TPrimitive > read b$8_@1:TPrimitive
diff --git a/compiler/forget/src/__tests__/fixtures/hir/type-test-field-store.expect.md b/compiler/forget/src/__tests__/fixtures/hir/type-test-field-store.expect.md
index faa84d881a..d501e48768 100644
--- a/compiler/forget/src/__tests__/fixtures/hir/type-test-field-store.expect.md
+++ b/compiler/forget/src/__tests__/fixtures/hir/type-test-field-store.expect.md
@@ -20,10 +20,7 @@ bb0:
[3] Reassign mutate x$4_@0.t[1:4] = read q$5_@1:TObject
[4] Const mutate z$6:TObject = read x$4_@0.t
[5] Return
-scope0 [1:4]:
- - dependency: mutate x$4_@0.t
-scope1 [2:3]:
- - dependency: mutate x$4_@0.t
+
```
## Reactive Scopes
@@ -31,9 +28,9 @@ scope1 [2:3]:
```
function component(
) {
- scope @0 [1:4] deps=[mutate x$4_@0.t] {
+ scope @0 [1:4] deps=[] {
[1] Const mutate x$4_@0:TObject[1:4] = Object { }
- scope @1 [2:3] deps=[mutate x$4_@0.t] {
+ scope @1 [2:3] deps=[] {
[2] Const mutate q$5_@1:TObject = Object { }
}
[3] Reassign mutate x$4_@0.t[1:4] = read q$5_@1:TObject
diff --git a/compiler/forget/src/__tests__/fixtures/hir/type-test-return-type-inference.expect.md b/compiler/forget/src/__tests__/fixtures/hir/type-test-return-type-inference.expect.md
index e36dd715a1..225679a966 100644
--- a/compiler/forget/src/__tests__/fixtures/hir/type-test-return-type-inference.expect.md
+++ b/compiler/forget/src/__tests__/fixtures/hir/type-test-return-type-inference.expect.md
@@ -30,8 +30,7 @@ bb1:
predecessor blocks: bb2 bb0
[7] Const mutate z$12_@3:TPrimitive = Call mutate foo$2:TFunction()
[8] Return
-scope1 [2:3]:
- - dependency: read x$7_@0:TPrimitive
+
```
## Reactive Scopes
@@ -42,7 +41,7 @@ function component(
scope @0 [1:2] deps=[] {
[1] Const mutate x$7_@0:TPrimitive = Call mutate foo$2:TFunction()
}
- scope @1 [2:3] deps=[read x$7_@0:TPrimitive] {
+ scope @1 [2:3] deps=[] {
[2] Const mutate y$8_@1:TPrimitive = Call mutate foo$2:TFunction()
}
[3] Const mutate $9:TPrimitive = Binary read x$7_@0:TPrimitive > read y$8_@1:TPrimitive