@samitouri / QOS-React-2 / commits / c8bb9ea0af

Move pretty printing Scopes into PrintHIR

Lauren Tan committed Dec 9, 2022 at 17:12 UTC c8bb9ea0af2320455a2bc39f3fefe6c9650a2996
65 files changed +303 -297
compiler/forget/src/HIR/HIR.ts
-1
@@ -63,7 +63,6 @@ export type HIRFunction = {
63 body: HIR;
64 generator: boolean;
65 async: boolean;
66 - extra?: string;
66 };
67
68 /**
compiler/forget/src/HIR/InferReactiveScopeDependencies.ts
+4 -19
@@ -18,7 +18,6 @@ import {
18 ReactiveScope,
19 } from "./HIR";
20 import { BlockTerminal, Visitor, visitTree } from "./HIRTreeVisitor";
21 -import { printPlace } from "./PrintHIR";
21 import { eachInstructionValueOperand } from "./visitors";
22
23 export function inferReactiveScopeDependencies(fn: HIRFunction) {
@@ -26,23 +25,12 @@ export function inferReactiveScopeDependencies(fn: HIRFunction) {
25 // that only visits and replacing this usage
26 const visitor = new ScopeDependenciesVisitor(fn);
27 visitTree(fn, visitor);
29 -
30 - const output = [];
31 - for (const scope of visitor.allScopes) {
32 - if (scope.dependencies.size > 0) {
33 - output.push(
34 - `scope${scope.id} [${scope.range.start}:${
35 - scope.range.end
36 - }]:\n${Array.from(scope.dependencies)
37 - .map((p) => " - " + printPlace(p))
38 - .join("\n")}`
39 - );
40 - }
41 - }
42 - fn.extra = output.join("\n");
28 }
29
45 -function instructionInScope(instrId: InstructionId, scope: ReactiveScope) {
30 +export function instructionInScope(
31 + instrId: InstructionId,
32 + scope: ReactiveScope
33 +) {
34 return instrId >= scope.range.start && instrId < scope.range.end;
35 }
36
@@ -52,8 +40,6 @@ class ScopeDependenciesVisitor
40 #identifiers: Map<Identifier, InstructionId> = new Map();
41 // Scopes that are currently active at this point in the traversal
42 #activeScopes: Set<ReactiveScope> = new Set();
55 - // All scopes encountered during the traversal
56 - allScopes: Set<ReactiveScope> = new Set();
43
44 get #lastActiveScope(): ReactiveScope | null {
45 const scopes = [...this.#activeScopes];
@@ -71,7 +57,6 @@ class ScopeDependenciesVisitor
57
58 #recordActiveScope(scope: ReactiveScope) {
59 this.#activeScopes.add(scope);
74 - this.allScopes.add(scope);
60 }
61
62 /**
compiler/forget/src/HIR/PrintHIR.ts
+24 -3
@@ -24,6 +24,7 @@ import {
24 Terminal,
25 } from "./HIR";
26 import { buildAliasSets } from "./InferAlias";
27 +import { eachReactiveScope } from "./visitors";
28
29 export type Options = {
30 indent: number;
@@ -32,9 +33,7 @@ export type Options = {
33 export function printFunction(fn: HIRFunction): string {
34 const output = [];
35 output.push(printHIR(fn.body));
35 - if (fn.extra !== undefined) {
36 - output.push(fn.extra);
37 - }
36 + output.push(printReactiveScopes(fn.body));
37 return output.join("\n");
38 }
39
@@ -345,3 +344,25 @@ export function printAliases(aliases: DisjointSet<Identifier>): string {
344
345 return items.join("\n");
346 }
347 +
348 +export function printReactiveScopes(ir: HIR) {
349 + const output = [];
350 + for (const scope of eachReactiveScope(ir)) {
351 + let shouldOutput = false;
352 + const line = [
353 + `scope${scope.id} [${scope.range.start}:${scope.range.end}]:`,
354 + ];
355 + if (scope.dependencies.size > 0) {
356 + shouldOutput = true;
357 + line.push(
358 + `${Array.from(scope.dependencies)
359 + .map((p) => " - dependency: " + printPlace(p))
360 + .join("\n")}`
361 + );
362 + }
363 + if (shouldOutput) {
364 + output.push(line.join("\n"));
365 + }
366 + }
367 + return output.join("\n");
368 +}
compiler/forget/src/HIR/visitors.ts
+19
@@ -9,10 +9,13 @@ import { assertExhaustive } from "../Common/utils";
9 import {
10 BasicBlock,
11 BlockId,
12 + HIR,
13 Instruction,
14 InstructionValue,
15 makeInstructionId,
16 Place,
17 + ReactiveScope,
18 + ScopeId,
19 Terminal,
20 } from "./HIR";
21
@@ -375,3 +378,19 @@ export function* eachBlockOperand(block: BasicBlock): Iterable<Place> {
378 }
379 yield* eachTerminalOperand(block.terminal);
380 }
381 +
382 +export function* eachReactiveScope(ir: HIR): Iterable<ReactiveScope> {
383 + const seenScopes: Set<ScopeId> = new Set();
384 + for (const [, block] of ir.blocks) {
385 + for (const operand of eachBlockOperand(block)) {
386 + const scope = operand.identifier.scope;
387 + if (scope != null) {
388 + if (seenScopes.has(scope.id)) {
389 + continue;
390 + }
391 + seenScopes.add(scope.id);
392 + yield scope;
393 + }
394 + }
395 + }
396 +}
compiler/forget/src/__tests__/fixtures/hir/_bug_expression-with-assignment.expect.md
+4 -4
@@ -21,11 +21,11 @@ bb0:
21 [4] Const mutate $7_@3 = Binary read $6_@2 + read x$5_@1
22 [5] Return read $7_@3
23 scope2 [3:4]:
24 - - read x$5_@1
25 - - read x$5_@1
24 + - dependency: read x$5_@1
25 + - dependency: read x$5_@1
26 scope3 [4:5]:
27 - - read $6_@2
28 - - read x$5_@1
27 + - dependency: read $6_@2
28 + - dependency: read x$5_@1
29 ```
30
31 ### CFG
compiler/forget/src/__tests__/fixtures/hir/_bug_inverted-if-else.expect.md
+2 -2
@@ -34,9 +34,9 @@ bb1:
34 predecessor blocks: bb3 bb2
35 [7] Return read x$11
36 scope1 [3:4]:
37 - - read b$6
37 + - dependency: read b$6
38 scope2 [5:6]:
39 - - read c$7
39 + - dependency: read c$7
40 ```
41
42 ### CFG
compiler/forget/src/__tests__/fixtures/hir/assignment-variations.expect.md
+7 -7
@@ -29,14 +29,14 @@ bb0:
29 [7] Const mutate x$11_@6 = Binary read x$9_@4 >>> read $10_@5
30 [8] Return
31 scope2 [3:4]:
32 - - read x$5_@0
33 - - read $6_@1
32 + - dependency: read x$5_@0
33 + - dependency: read $6_@1
34 scope4 [5:6]:
35 - - read x$7_@2
36 - - read $8_@3
35 + - dependency: read x$7_@2
36 + - dependency: read $8_@3
37 scope6 [7:8]:
38 - - read x$9_@4
39 - - read $10_@5
38 + - dependency: read x$9_@4
39 + - dependency: read $10_@5
40 ```
41
42 ### CFG
@@ -82,7 +82,7 @@ bb0:
82 [4] Reassign mutate a$4_@1.b.c[0:5] = Binary read a$4_@1.b.c * read $6_@2
83 [5] Return
84 scope2 [3:4]:
85 - - mutate a$4_@1.b.c
85 + - dependency: mutate a$4_@1.b.c
86 ```
87
88 ### CFG
compiler/forget/src/__tests__/fixtures/hir/call.expect.md
+4 -4
@@ -56,11 +56,11 @@ bb0:
56 [8] Const mutate $15_@4 = JSX <read $14_@3 a={read a$10_@0} b={freeze b$11_@0} ></read $14_@3>
57 [9] Return read $15_@4
58 scope2 [5:6]:
59 - - read $12_@1
59 + - dependency: read $12_@1
60 scope4 [8:9]:
61 - - read $14_@3
62 - - read a$10_@0
63 - - freeze b$11_@0
61 + - dependency: read $14_@3
62 + - dependency: read a$10_@0
63 + - dependency: freeze b$11_@0
64 ```
65
66 ### CFG
compiler/forget/src/__tests__/fixtures/hir/component.expect.md
+2 -2
@@ -89,9 +89,9 @@ bb2:
89 [33] Const mutate $60_@18 = JSX <read $53_@11>{read $54_@12}{read $57_@15}{read $58_@16}{freeze renderedItems$29_@2}{read $59_@17}</read $53_@11>
90 [34] Return read $60_@18
91 scope0 [1:2]:
92 - - read props$26.items
92 + - dependency: read props$26.items
93 scope1 [2:3]:
94 - - read props$26.maxItems
94 + - dependency: read props$26.maxItems
95 ```
96
97 ### CFG
compiler/forget/src/__tests__/fixtures/hir/conditional-break.expect.md
+18 -18
@@ -90,9 +90,9 @@ bb1:
90 [6] Call mutate a_DEBUG$5_@0.push(read props$4.d)
91 [7] Return freeze a_DEBUG$5_@0
92 scope0 [1:7]:
93 - - read props$4.a
94 - - read props$4.b
95 - - read props$4.d
93 + - dependency: read props$4.a
94 + - dependency: read props$4.b
95 + - dependency: read props$4.d
96 ```
97
98 ### CFG
@@ -157,10 +157,10 @@ bb1:
157 [6] Call mutate a$4_@0.push(read props$3.d)
158 [7] Return freeze a$4_@0
159 scope0 [1:7]:
160 - - read props$3.a
161 - - read props$3.c
162 - - read props$3.b
163 - - read props$3.d
160 + - dependency: read props$3.a
161 + - dependency: read props$3.c
162 + - dependency: read props$3.b
163 + - dependency: read props$3.d
164 ```
165
166 ### CFG
@@ -227,10 +227,10 @@ bb1:
227 [7] Call mutate a$5_@0.push(read props$4.d)
228 [8] Return freeze a$5_@0
229 scope0 [1:8]:
230 - - read props$4.a
231 - - read props$4.c
232 - - read props$4.b
233 - - read props$4.d
230 + - dependency: read props$4.a
231 + - dependency: read props$4.c
232 + - dependency: read props$4.b
233 + - dependency: read props$4.d
234 ```
235
236 ### CFG
@@ -297,10 +297,10 @@ bb1:
297 [6] Call mutate a$4_@0.push(read props$3.d)
298 [7] Return freeze a$4_@0
299 scope0 [1:7]:
300 - - read props$3.a
301 - - read props$3.c
302 - - read props$3.b
303 - - read props$3.d
300 + - dependency: read props$3.a
301 + - dependency: read props$3.c
302 + - dependency: read props$3.b
303 + - dependency: read props$3.d
304 ```
305
306 ### CFG
@@ -366,9 +366,9 @@ bb1:
366 [6] Call mutate a$4_@0.push(read props$3.d)
367 [7] Return freeze a$4_@0
368 scope0 [1:7]:
369 - - read props$3.a
370 - - read props$3.d
371 - - read props$3.c
369 + - dependency: read props$3.a
370 + - dependency: read props$3.d
371 + - dependency: read props$3.c
372 ```
373
374 ### CFG
compiler/forget/src/__tests__/fixtures/hir/conditional-on-mutable.expect.md
+4 -8
@@ -53,13 +53,9 @@ bb3:
53 predecessor blocks: bb4 bb1
54 [9] Const mutate $16_@2 = JSX <read Foo$4 a={freeze a$7_@0} b={freeze b$8_@0} ></read Foo$4>
55 [10] Return read $16_@2
56 -scope0 [1:9]:
57 - - read props$6.p0
58 - - read props$6.p2
59 - - read props$6.p1
56 scope2 [9:10]:
61 - - freeze a$7_@0
62 - - freeze b$8_@0
57 + - dependency: freeze a$7_@0
58 + - dependency: freeze b$8_@0
59 ```
60
61 ### CFG
@@ -148,8 +144,8 @@ bb3:
144 [10] Const mutate $19_@2 = JSX <read Foo$6 a={freeze a$9_@0} b={freeze b$10_@0} ></read Foo$6>
145 [11] Return read $19_@2
146 scope2 [10:11]:
151 - - freeze a$9_@0
152 - - freeze b$10_@0
147 + - dependency: freeze a$9_@0
148 + - dependency: freeze b$10_@0
149 ```
150
151 ### CFG
compiler/forget/src/__tests__/fixtures/hir/constructor.expect.md
+4 -4
@@ -56,11 +56,11 @@ bb0:
56 [8] Const mutate $15_@4 = JSX <read $14_@3 a={read a$10_@0} b={freeze b$11_@0} ></read $14_@3>
57 [9] Return read $15_@4
58 scope2 [5:6]:
59 - - read $12_@1
59 + - dependency: read $12_@1
60 scope4 [8:9]:
61 - - read $14_@3
62 - - read a$10_@0
63 - - freeze b$11_@0
61 + - dependency: read $14_@3
62 + - dependency: read a$10_@0
63 + - dependency: freeze b$11_@0
64 ```
65
66 ### CFG
compiler/forget/src/__tests__/fixtures/hir/dependencies-outputs.expect.md
+6 -6
@@ -43,14 +43,14 @@ bb3:
43 predecessor blocks: bb4 bb1
44 [12] Return
45 scope0 [1:3]:
46 - - read a$6
46 + - dependency: read a$6
47 scope1 [3:4]:
48 - - freeze x$8_@0
48 + - dependency: freeze x$8_@0
49 scope2 [5:12]:
50 - - read x$8_@0
51 - - read x$8_@0.length
52 - - read b$7
53 - - read b$7
50 + - dependency: read x$8_@0
51 + - dependency: read x$8_@0.length
52 + - dependency: read b$7
53 + - dependency: read b$7
54 ```
55
56 ### CFG
compiler/forget/src/__tests__/fixtures/hir/dependencies.expect.md
+6 -6
@@ -43,13 +43,13 @@ bb3:
43 predecessor blocks: bb4 bb1
44 [10] Return freeze items2$10_@1
45 scope0 [1:10]:
46 - - read z$8
47 - - read x$6
48 - - read x$6
49 - - read y$7
46 + - dependency: read z$8
47 + - dependency: read x$6
48 + - dependency: read x$6
49 + - dependency: read y$7
50 scope1 [3:7]:
51 - - read y$7
52 - - read x$6
51 + - dependency: read y$7
52 + - dependency: read x$6
53 ```
54
55 ### CFG
compiler/forget/src/__tests__/fixtures/hir/extend-scopes-if.expect.md
+3 -3
@@ -47,9 +47,9 @@ bb7:
47 [10] Const mutate $13_@2 = null
48 [11] Return read $13_@2
49 scope0 [1:8]:
50 - - read c$9
51 - - read b$8
52 - - read a$7
50 + - dependency: read c$9
51 + - dependency: read b$8
52 + - dependency: read a$7
53 ```
54
55 ### CFG
compiler/forget/src/__tests__/fixtures/hir/frozen-after-alias.expect.md
+2 -2
@@ -24,8 +24,8 @@ bb0:
24 [4] Call mutate foo$4_@2(read b$6_@1)
25 [5] Return
26 scope1 [2:3]:
27 - - read a$5_@0
28 - - freeze a$5_@0
27 + - dependency: read a$5_@0
28 + - dependency: freeze a$5_@0
29 ```
30
31 ### CFG
compiler/forget/src/__tests__/fixtures/hir/hook-call.expect.md
+7 -7
@@ -86,14 +86,14 @@ bb0:
86 [7] Const mutate $16_@6 = JSX <read Component$0>{read $13_@3}{read x$11_@0}{read $14_@4}{read y$12_@1}{read $15_@5}</read Component$0>
87 [8] Return read $16_@6
88 scope1 [2:3]:
89 - - freeze x$11_@0
89 + - dependency: freeze x$11_@0
90 scope6 [7:8]:
91 - - read Component$0
92 - - read $13_@3
93 - - read x$11_@0
94 - - read $14_@4
95 - - read y$12_@1
96 - - read $15_@5
91 + - dependency: read Component$0
92 + - dependency: read $13_@3
93 + - dependency: read x$11_@0
94 + - dependency: read $14_@4
95 + - dependency: read y$12_@1
96 + - dependency: read $15_@5
97 ```
98
99 ### CFG
compiler/forget/src/__tests__/fixtures/hir/hooks-freeze-possibly-mutable-arguments.expect.md
+4 -4
@@ -46,12 +46,12 @@ bb1:
46 [11] Call mutate call$6_@4(read a$11_@3)
47 [12] Return read a$11_@3
48 scope0 [1:2]:
49 - - read props$7.cond
49 + - dependency: read props$7.cond
50 scope1 [2:3]:
51 - - read props$7.x
51 + - dependency: read props$7.x
52 scope3 [4:9]:
53 - - read x$9_@1
54 - - read cond$8_@0
53 + - dependency: read x$9_@1
54 + - dependency: read cond$8_@0
55 ```
56
57 ### CFG
compiler/forget/src/__tests__/fixtures/hir/independent-across-if.expect.md
+2 -2
@@ -158,8 +158,8 @@ bb1:
158 [7] Const mutate $14_@1 = JSX <read Foo$6 a={freeze a$9_@0} b={freeze b$10_@0} ></read Foo$6>
159 [8] Return read $14_@1
160 scope1 [7:8]:
161 - - freeze a$9_@0
162 - - freeze b$10_@0
161 + - dependency: freeze a$9_@0
162 + - dependency: freeze b$10_@0
163 ```
164
165 ### CFG
compiler/forget/src/__tests__/fixtures/hir/independent.expect.md
+2 -2
@@ -33,8 +33,8 @@ bb0:
33 [3] Const mutate $10_@1 = JSX <read Foo$5 a={freeze a$8_@0} b={freeze b$9_@0} ></read Foo$5>
34 [4] Return read $10_@1
35 scope1 [3:4]:
36 - - freeze a$8_@0
37 - - freeze b$9_@0
36 + - dependency: freeze a$8_@0
37 + - dependency: freeze b$9_@0
38 ```
39
40 ### CFG
compiler/forget/src/__tests__/fixtures/hir/interdependent-across-if.expect.md
+2 -2
@@ -124,8 +124,8 @@ bb1:
124 [6] Const mutate $14_@1 = JSX <read Foo$6 a={freeze a$9_@0} b={freeze b$10_@0} ></read Foo$6>
125 [7] Return read $14_@1
126 scope1 [6:7]:
127 - - freeze a$9_@0
128 - - freeze b$10_@0
127 + - dependency: freeze a$9_@0
128 + - dependency: freeze b$10_@0
129 ```
130
131 ### CFG
compiler/forget/src/__tests__/fixtures/hir/interdependent.expect.md
+2 -2
@@ -34,8 +34,8 @@ bb0:
34 [4] Const mutate $11_@1 = JSX <read Foo$6 a={freeze a$9_@0} b={freeze b$10_@0} ></read Foo$6>
35 [5] Return read $11_@1
36 scope1 [4:5]:
37 - - freeze a$9_@0
38 - - freeze b$10_@0
37 + - dependency: freeze a$9_@0
38 + - dependency: freeze b$10_@0
39 ```
40
41 ### CFG
compiler/forget/src/__tests__/fixtures/hir/inverted-if.expect.md
+3 -3
@@ -31,9 +31,9 @@ bb1:
31 predecessor blocks: bb5 bb3 bb0
32 [6] Return
33 scope0 [1:6]:
34 - - read c$7
35 - - read b$6
36 - - read a$5
34 + - dependency: read c$7
35 + - dependency: read b$6
36 + - dependency: read a$5
37 ```
38
39 ### CFG
compiler/forget/src/__tests__/fixtures/hir/issue852.expect.md
+2 -2
@@ -21,9 +21,9 @@ bb0:
21 [4] Const mutate b$9_@2 = read a$8_@1
22 [5] Return
23 scope1 [3:4]:
24 - - read x$7_@0
24 + - dependency: read x$7_@0
25 scope2 [4:5]:
26 - - read a$8_@1
26 + - dependency: read a$8_@1
27 ```
28
29 ### CFG
compiler/forget/src/__tests__/fixtures/hir/jsx-fragment.expect.md
+11 -11
@@ -32,19 +32,19 @@ bb0:
32 [11] Const mutate $24_@10 = JsxFragment [read $14_@0, read props$13.greeting, read $15_@1, read $16_@2, read $22_@8, read $23_@9]
33 [12] Return read $24_@10
34 scope6 [7:8]:
35 - - read $19_@5
35 + - dependency: read $19_@5
36 scope8 [9:10]:
37 - - read $17_@3
38 - - read $18_@4
39 - - read $20_@6
40 - - read $21_@7
37 + - dependency: read $17_@3
38 + - dependency: read $18_@4
39 + - dependency: read $20_@6
40 + - dependency: read $21_@7
41 scope10 [11:12]:
42 - - read $14_@0
43 - - read props$13.greeting
44 - - read $15_@1
45 - - read $16_@2
46 - - read $22_@8
47 - - read $23_@9
42 + - dependency: read $14_@0
43 + - dependency: read props$13.greeting
44 + - dependency: read $15_@1
45 + - dependency: read $16_@2
46 + - dependency: read $22_@8
47 + - dependency: read $23_@9
48 ```
49
50 ### CFG
compiler/forget/src/__tests__/fixtures/hir/logical-expression.expect.md
+2 -2
@@ -178,8 +178,8 @@ bb1:
178 predecessor blocks: bb2 bb3
179 [9] Return freeze $12_@3
180 scope2 [3:4]:
181 - - read $9_@0
182 - - read $10_@1
181 + - dependency: read $9_@0
182 + - dependency: read $10_@1
183 ```
184
185 ### CFG
compiler/forget/src/__tests__/fixtures/hir/overlapping-scopes-interleaved-by-terminal.expect.md
+1 -3
@@ -27,9 +27,7 @@ bb1:
27 [4] Call mutate y$10_@0.push(read a$6)
28 [5] Call mutate x$9_@0.push(read b$7)
29 [6] Return
30 -scope0 [1:6]:
31 - - read a$6
32 - - read b$7
30 +
31 ```
32
33 ### CFG
compiler/forget/src/__tests__/fixtures/hir/overlapping-scopes-interleaved.expect.md
+1 -3
@@ -20,9 +20,7 @@ bb0:
20 [3] Call mutate x$7_@0.push(read a$5)
21 [4] Call mutate y$8_@0.push(read b$6)
22 [5] Return
23 -scope0 [1:5]:
24 - - read a$5
25 - - read b$6
23 +
24 ```
25
26 ### CFG
compiler/forget/src/__tests__/fixtures/hir/overlapping-scopes-shadowed.expect.md
+2 -2
@@ -21,8 +21,8 @@ bb0:
21 [4] Call mutate x$7_@0.push(read a$5)
22 [5] Return
23 scope1 [2:4]:
24 - - read b$6
25 - - read a$5
24 + - dependency: read b$6
25 + - dependency: read a$5
26 ```
27
28 ### CFG
compiler/forget/src/__tests__/fixtures/hir/overlapping-scopes-shadowing-within-block.expect.md
+5 -5
@@ -41,13 +41,13 @@ bb1:
41 predecessor blocks: bb3 bb0
42 [11] Return freeze x$11_@0
43 scope0 [1:11]:
44 - - read a$8
44 + - dependency: read a$8
45 scope1 [3:7]:
46 - - read c$10
47 - - read b$9
46 + - dependency: read c$10
47 + - dependency: read b$9
48 scope3 [8:9]:
49 - - read $13_@2
50 - - freeze y$12_@1
49 + - dependency: read $13_@2
50 + - dependency: freeze y$12_@1
51 ```
52
53 ### CFG
compiler/forget/src/__tests__/fixtures/hir/overlapping-scopes-while.expect.md
+1 -4
@@ -31,10 +31,7 @@ bb3:
31 bb2:
32 predecessor blocks: bb1
33 [8] Return
34 -scope0 [1:8]:
35 - - read b$7
36 - - read a$6
37 - - read c$8
34 +
35 ```
36
37 ### CFG
compiler/forget/src/__tests__/fixtures/hir/overlapping-scopes-within-block.expect.md
+3 -3
@@ -39,9 +39,9 @@ bb1:
39 predecessor blocks: bb3 bb0
40 [9] Return freeze x$9_@0
41 scope0 [1:9]:
42 - - read c$8
43 - - read b$7
44 - - read a$6
42 + - dependency: read c$8
43 + - dependency: read b$7
44 + - dependency: read a$6
45 ```
46
47 ### CFG
compiler/forget/src/__tests__/fixtures/hir/property-assignment.expect.md
+5 -5
@@ -25,12 +25,12 @@ bb0:
25 [6] Const mutate $10_@1 = JSX <read Component$0 data={freeze x$7_@0} >{read child$9_@0}</read Component$0>
26 [7] Return read $10_@1
27 scope0 [1:6]:
28 - - read Component$0
29 - - read props$6.p0
28 + - dependency: read Component$0
29 + - dependency: read props$6.p0
30 scope1 [6:7]:
31 - - read Component$0
32 - - freeze x$7_@0
33 - - read child$9_@0
31 + - dependency: read Component$0
32 + - dependency: freeze x$7_@0
33 + - dependency: read child$9_@0
34 ```
35
36 ### CFG
compiler/forget/src/__tests__/fixtures/hir/reactive-scope-grouping.expect.md
+1 -1
@@ -25,7 +25,7 @@ bb0:
25 [5] Reassign mutate x$4_@0.y[1:6] = read y$5_@1
26 [6] Return freeze x$4_@0
27 scope1 [2:5]:
28 - - mutate x$4_@0.y
28 + - dependency: mutate x$4_@0.y
29 ```
30
31 ### CFG
compiler/forget/src/__tests__/fixtures/hir/reactive-scopes.expect.md
+6 -6
@@ -36,14 +36,14 @@ bb1:
36 [9] Const mutate $15_@4 = JSX <read $13_@3>{freeze x$10_@0}</read $13_@3>
37 [10] Return read $15_@4
38 scope0 [1:8]:
39 - - read b$9
40 - - read b$9
39 + - dependency: read b$9
40 + - dependency: read b$9
41 scope2 [3:4]:
42 - - read a$8.length
43 - - read $11_@1
42 + - dependency: read a$8.length
43 + - dependency: read $11_@1
44 scope4 [9:10]:
45 - - read $13_@3
46 - - freeze x$10_@0
45 + - dependency: read $13_@3
46 + - dependency: freeze x$10_@0
47 ```
48
49 ### CFG
compiler/forget/src/__tests__/fixtures/hir/reassignment-conditional.expect.md
+9 -9
@@ -38,17 +38,17 @@ bb1:
38 [9] Const mutate $15_@2 = JSX <read Component$0 x={read x$7_@0} y={read y$8_@0} ></read Component$0>
39 [10] Return read $15_@2
40 scope0 [1:7]:
41 - - read props$6.p0
42 - - read props$6.p1
41 + - dependency: read props$6.p0
42 + - dependency: read props$6.p1
43 scope1 [7:8]:
44 - - read Component$0
45 - - freeze x$7_@0
46 - - read y$8_@0.push
47 - - read props$6.p2
44 + - dependency: read Component$0
45 + - dependency: freeze x$7_@0
46 + - dependency: read y$8_@0.push
47 + - dependency: read props$6.p2
48 scope2 [9:10]:
49 - - read Component$0
50 - - read x$7_@0
51 - - read y$8_@0
49 + - dependency: read Component$0
50 + - dependency: read x$7_@0
51 + - dependency: read y$8_@0
52 ```
53
54 ### CFG
compiler/forget/src/__tests__/fixtures/hir/reassignment-separate-scopes.expect.md
+13 -13
@@ -69,22 +69,22 @@ bb3:
69 [19] Const mutate $31_@9 = JSX <read $25_@5>{read $26_@6}{read y$19_@2}{read $27_@7}{freeze x$22_@4}{read $28_@8}</read $25_@5>
70 [20] Return read $31_@9
71 scope0 [1:5]:
72 - - read a$13
73 - - read a$13
72 + - dependency: read a$13
73 + - dependency: read a$13
74 scope2 [6:7]:
75 - - read $17_@1
76 - - freeze x$16_@0
75 + - dependency: read $17_@1
76 + - dependency: freeze x$16_@0
77 scope4 [8:15]:
78 - - read c$15
79 - - read b$14
80 - - read b$14
78 + - dependency: read c$15
79 + - dependency: read b$14
80 + - dependency: read b$14
81 scope9 [19:20]:
82 - - read $25_@5
83 - - read $26_@6
84 - - read y$19_@2
85 - - read $27_@7
86 - - freeze x$22_@4
87 - - read $28_@8
82 + - dependency: read $25_@5
83 + - dependency: read $26_@6
84 + - dependency: read y$19_@2
85 + - dependency: read $27_@7
86 + - dependency: freeze x$22_@4
87 + - dependency: read $28_@8
88 ```
89
90 ### CFG
compiler/forget/src/__tests__/fixtures/hir/reassignment.expect.md
+7 -7
@@ -30,15 +30,15 @@ bb0:
30 [7] Const mutate $11_@3 = JSX <read Component$0 x={read x$9_@1} y={freeze y$8_@0} ></read Component$0>
31 [8] Return read $11_@3
32 scope0 [1:7]:
33 - - read props$6.p0
33 + - dependency: read props$6.p0
34 scope2 [5:6]:
35 - - read Component$0
36 - - freeze x$9_@1
37 - - read props$6.p1
35 + - dependency: read Component$0
36 + - dependency: freeze x$9_@1
37 + - dependency: read props$6.p1
38 scope3 [7:8]:
39 - - read Component$0
40 - - read x$9_@1
41 - - freeze y$8_@0
39 + - dependency: read Component$0
40 + - dependency: read x$9_@1
41 + - dependency: freeze y$8_@0
42 ```
43
44 ### CFG
compiler/forget/src/__tests__/fixtures/hir/reverse-postorder.expect.md
+8 -8
@@ -78,14 +78,14 @@ bb1:
78 [18] read x$11_@1
79 [19] Return
80 scope1 [2:18]:
81 - - read props$6.v2
82 - - read props$6.v1
83 - - read props$6.v0
84 - - read props$6.test
85 - - read props$6.b
86 - - read props$6.c
87 - - read props$6.cond2
88 - - read props$6.cond
81 + - dependency: read props$6.v2
82 + - dependency: read props$6.v1
83 + - dependency: read props$6.v0
84 + - dependency: read props$6.test
85 + - dependency: read props$6.b
86 + - dependency: read props$6.c
87 + - dependency: read props$6.cond2
88 + - dependency: read props$6.cond
89 ```
90
91 ### CFG
compiler/forget/src/__tests__/fixtures/hir/simple.expect.md
+6 -6
@@ -28,14 +28,14 @@ bb1:
28 [7] Const mutate $14_@4 = Array [read $13_@3]
29 [8] Return freeze $14_@4
30 scope1 [3:4]:
31 - - read foo$0
32 - - read $10_@0
33 - - read y$9
31 + - dependency: read foo$0
32 + - dependency: read $10_@0
33 + - dependency: read y$9
34 scope3 [6:7]:
35 - - read y$9
36 - - read $12_@2
35 + - dependency: read y$9
36 + - dependency: read $12_@2
37 scope4 [7:8]:
38 - - read $13_@3
38 + - dependency: read $13_@3
39 ```
40
41 ### CFG
compiler/forget/src/__tests__/fixtures/hir/ssa-arrayexpression.expect.md
+2 -2
@@ -20,8 +20,8 @@ bb0:
20 [3] Const mutate x$8_@2 = Array [read a$6_@0, read b$7_@1]
21 [4] Return freeze x$8_@2
22 scope2 [3:4]:
23 - - read a$6_@0
24 - - read b$7_@1
23 + - dependency: read a$6_@0
24 + - dependency: read b$7_@1
25 ```
26
27 ### CFG
compiler/forget/src/__tests__/fixtures/hir/ssa-call-jsx-2.expect.md
+4 -4
@@ -66,11 +66,11 @@ bb1:
66 [11] Const mutate $20_@4 = JSX <read $19_@3 a={freeze a$11_@0} b={freeze b$12_@0} ></read $19_@3>
67 [12] Return read $20_@4
68 scope2 [7:8]:
69 - - read $14_@1
69 + - dependency: read $14_@1
70 scope4 [11:12]:
71 - - read $19_@3
72 - - freeze a$11_@0
73 - - freeze b$12_@0
71 + - dependency: read $19_@3
72 + - dependency: freeze a$11_@0
73 + - dependency: freeze b$12_@0
74 ```
75
76 ### CFG
compiler/forget/src/__tests__/fixtures/hir/ssa-call-jsx.expect.md
+4 -4
@@ -56,11 +56,11 @@ bb0:
56 [8] Const mutate $15_@4 = JSX <read $14_@3 a={read a$10_@0} b={freeze b$11_@0} ></read $14_@3>
57 [9] Return read $15_@4
58 scope2 [5:6]:
59 - - read $12_@1
59 + - dependency: read $12_@1
60 scope4 [8:9]:
61 - - read $14_@3
62 - - read a$10_@0
63 - - freeze b$11_@0
61 + - dependency: read $14_@3
62 + - dependency: read a$10_@0
63 + - dependency: freeze b$11_@0
64 ```
65
66 ### CFG
compiler/forget/src/__tests__/fixtures/hir/ssa-complex-multiple-if.expect.md
+5 -5
@@ -44,13 +44,13 @@ bb3:
44 [13] Const mutate y$18_@6 = read x$7_@0
45 [14] Return
46 scope3 [4:5]:
47 - - read y$8_@1
48 - - read $9_@2
47 + - dependency: read y$8_@1
48 + - dependency: read $9_@2
49 scope5 [9:10]:
50 - - read y$8_@1
51 - - read $12_@4
50 + - dependency: read y$8_@1
51 + - dependency: read $12_@4
52 scope6 [13:14]:
53 - - read x$7_@0
53 + - dependency: read x$7_@0
54 ```
55
56 ### CFG
compiler/forget/src/__tests__/fixtures/hir/ssa-complex-single-if.expect.md
+3 -3
@@ -32,10 +32,10 @@ bb1:
32 [8] Const mutate y$11_@4 = read x$5_@0
33 [9] Return
34 scope3 [4:5]:
35 - - read y$6_@1
36 - - read $7_@2
35 + - dependency: read y$6_@1
36 + - dependency: read $7_@2
37 scope4 [8:9]:
38 - - read x$5_@0
38 + - dependency: read x$5_@0
39 ```
40
41 ### CFG
compiler/forget/src/__tests__/fixtures/hir/ssa-for.expect.md
+1 -1
@@ -40,7 +40,7 @@ bb2:
40 predecessor blocks: bb1
41 [13] Return read x$7_@0
42 scope3 [6:8]:
43 - - read $9_@2
43 + - dependency: read $9_@2
44 ```
45
46 ### CFG
compiler/forget/src/__tests__/fixtures/hir/ssa-if-else.expect.md
+3 -3
@@ -34,10 +34,10 @@ bb1:
34 predecessor blocks: bb2 bb3
35 [8] Return
36 scope2 [4:5]:
37 - - read x$5_@0
38 - - read y$6_@1
37 + - dependency: read x$5_@0
38 + - dependency: read y$6_@1
39 scope3 [6:7]:
40 - - read x$5_@0
40 + - dependency: read x$5_@0
41 ```
42
43 ### CFG
compiler/forget/src/__tests__/fixtures/hir/ssa-multiple-phis.expect.md
+5 -5
@@ -69,11 +69,11 @@ bb1:
69 [20] read x$18_@2
70 [21] Return
71 scope2 [3:20]:
72 - - read a$9
73 - - read b$10
74 - - read c$11
75 - - read d$12
76 - - read $14_@1
72 + - dependency: read a$9
73 + - dependency: read b$10
74 + - dependency: read c$11
75 + - dependency: read d$12
76 + - dependency: read $14_@1
77 ```
78
79 ### CFG
compiler/forget/src/__tests__/fixtures/hir/ssa-nested-loops-no-reassign.expect.md
+1 -1
@@ -53,7 +53,7 @@ bb2:
53 predecessor blocks: bb1
54 [13] Return read x$9_@0
55 scope1 [8:9]:
56 - - read x$9_@0
56 + - dependency: read x$9_@0
57 ```
58
59 ### CFG
compiler/forget/src/__tests__/fixtures/hir/ssa-nested-partial-phi.expect.md
+4 -4
@@ -35,10 +35,10 @@ bb1:
35 predecessor blocks: bb3 bb0
36 [8] Return
37 scope0 [1:8]:
38 - - read a$5
39 - - read c$7
40 - - read c$7
41 - - read b$6
38 + - dependency: read a$5
39 + - dependency: read c$7
40 + - dependency: read c$7
41 + - dependency: read b$6
42 ```
43
44 ### CFG
compiler/forget/src/__tests__/fixtures/hir/ssa-nested-partial-reassignment.expect.md
+4 -4
@@ -37,10 +37,10 @@ bb1:
37 predecessor blocks: bb2 bb5 bb3
38 [8] Return read x$12_@0
39 scope0 [1:8]:
40 - - read b$8
41 - - read d$10
42 - - read c$9
43 - - read a$7
40 + - dependency: read b$8
41 + - dependency: read d$10
42 + - dependency: read c$9
43 + - dependency: read a$7
44 ```
45
46 ### CFG
compiler/forget/src/__tests__/fixtures/hir/ssa-objectexpression-phi.expect.md
+2 -2
@@ -40,8 +40,8 @@ bb1:
40 [10] Const mutate t$14_@3 = Object { x: read x$6_@0, y: read y$7_@0 }
41 [11] Return freeze t$14_@3
42 scope3 [10:11]:
43 - - read x$6_@0
44 - - read y$7_@0
43 + - dependency: read x$6_@0
44 + - dependency: read y$7_@0
45 ```
46
47 ### CFG
compiler/forget/src/__tests__/fixtures/hir/ssa-objectexpression.expect.md
+2 -2
@@ -20,8 +20,8 @@ bb0:
20 [3] Const mutate x$8_@2 = Object { a: read a$6_@0, b: read b$7_@1 }
21 [4] Return freeze x$8_@2
22 scope2 [3:4]:
23 - - read a$6_@0
24 - - read b$7_@1
23 + - dependency: read a$6_@0
24 + - dependency: read b$7_@1
25 ```
26
27 ### CFG
compiler/forget/src/__tests__/fixtures/hir/ssa-property-alias-if.expect.md
+3 -3
@@ -36,11 +36,11 @@ bb1:
36 predecessor blocks: bb2 bb3
37 [9] Return freeze x$6_@0
38 scope0 [1:9]:
39 - - read a$5
39 + - dependency: read a$5
40 scope1 [3:4]:
41 - - mutate x$6_@0.y
41 + - dependency: mutate x$6_@0.y
42 scope2 [6:7]:
43 - - mutate x$6_@0.z
43 + - dependency: mutate x$6_@0.z
44 ```
45
46 ### CFG
compiler/forget/src/__tests__/fixtures/hir/ssa-property-alias-mutate-inside-if.expect.md
+1 -1
@@ -38,7 +38,7 @@ bb1:
38 predecessor blocks: bb2 bb3
39 [10] Return freeze x$7_@0
40 scope1 [7:8]:
41 - - mutate x$7_@0.z
41 + - dependency: mutate x$7_@0.z
42 ```
43
44 ### CFG
compiler/forget/src/__tests__/fixtures/hir/ssa-property-call.expect.md
+1 -1
@@ -21,7 +21,7 @@ bb0:
21 [4] Call mutate y$5_@1.x.push(mutate $6_@1)
22 [5] Return freeze y$5_@1
23 scope1 [2:5]:
24 - - read x$4_@0
24 + - dependency: read x$4_@0
25 ```
26
27 ### CFG
compiler/forget/src/__tests__/fixtures/hir/ssa-property.expect.md
+1 -1
@@ -20,7 +20,7 @@ bb0:
20 [3] Reassign mutate y$4_@1.x[2:4] = read x$3_@0
21 [4] Return freeze y$4_@1
22 scope1 [2:4]:
23 - - read x$3_@0
23 + - dependency: read x$3_@0
24 ```
25
26 ### CFG
compiler/forget/src/__tests__/fixtures/hir/ssa-reassign.expect.md
+3 -3
@@ -22,11 +22,11 @@ bb0:
22 [4] Const mutate x$11_@3 = read c$7
23 [5] Return read x$11_@3
24 scope1 [2:3]:
25 - - read a$5
25 + - dependency: read a$5
26 scope2 [3:4]:
27 - - read b$6
27 + - dependency: read b$6
28 scope3 [4:5]:
29 - - read c$7
29 + - dependency: read c$7
30 ```
31
32 ### CFG
compiler/forget/src/__tests__/fixtures/hir/ssa-sibling-phis.expect.md
+6 -6
@@ -69,13 +69,13 @@ bb1:
69 predecessor blocks: bb3 bb7
70 [20] Return
71 scope3 [5:10]:
72 - - read a$9
73 - - read b$10
74 - - read $15_@2
72 + - dependency: read a$9
73 + - dependency: read b$10
74 + - dependency: read $15_@2
75 scope5 [13:18]:
76 - - read c$11
77 - - read d$12
78 - - read $19_@4
76 + - dependency: read c$11
77 + - dependency: read d$12
78 + - dependency: read $19_@4
79 ```
80
81 ### CFG
compiler/forget/src/__tests__/fixtures/hir/ssa-simple-phi.expect.md
+4 -4
@@ -38,12 +38,12 @@ bb1:
38 [9] Const mutate x$11_@4 = read y$8_@3
39 [10] Return
40 scope2 [3:4]:
41 - - read y$5_@0
42 - - read $6_@1
41 + - dependency: read y$5_@0
42 + - dependency: read $6_@1
43 scope3 [4:9]:
44 - - read $7_@2
44 + - dependency: read $7_@2
45 scope4 [9:10]:
46 - - read y$8_@3
46 + - dependency: read y$8_@3
47 ```
48
49 ### CFG
compiler/forget/src/__tests__/fixtures/hir/ssa-single-if.expect.md
+2 -2
@@ -28,8 +28,8 @@ bb1:
28 predecessor blocks: bb2 bb0
29 [6] Return
30 scope2 [4:5]:
31 - - read x$4_@0
32 - - read y$5_@1
31 + - dependency: read x$4_@0
32 + - dependency: read y$5_@1
33 ```
34
35 ### CFG
compiler/forget/src/__tests__/fixtures/hir/ssa-switch.expect.md
+11 -11
@@ -59,21 +59,21 @@ bb1:
59 [16] Const mutate y$22_@9 = read x$16_@5
60 [17] Return
61 scope2 [3:4]:
62 - - read x$10_@0
63 - - read $11_@1
62 + - dependency: read x$10_@0
63 + - dependency: read $11_@1
64 scope4 [5:6]:
65 - - read x$10_@0
66 - - read $13_@3
65 + - dependency: read x$10_@0
66 + - dependency: read $13_@3
67 scope5 [6:16]:
68 - - read x$10_@0
69 -scope8 [13:14]:
70 - - read x$10_@0
71 -scope7 [10:11]:
72 - - read x$10_@0
68 + - dependency: read x$10_@0
69 scope6 [7:8]:
74 - - read x$10_@0
70 + - dependency: read x$10_@0
71 +scope7 [10:11]:
72 + - dependency: read x$10_@0
73 +scope8 [13:14]:
74 + - dependency: read x$10_@0
75 scope9 [16:17]:
76 - - read x$16_@5
76 + - dependency: read x$16_@5
77 ```
78
79 ### CFG
compiler/forget/src/__tests__/fixtures/hir/ssa-while-no-reassign.expect.md
+3 -3
@@ -33,10 +33,10 @@ bb2:
33 predecessor blocks: bb1
34 [9] Return read x$5_@0
35 scope2 [4:6]:
36 - - read x$5_@0
37 - - read $6_@1
36 + - dependency: read x$5_@0
37 + - dependency: read $6_@1
38 scope3 [6:7]:
39 - - read x$5_@0
39 + - dependency: read x$5_@0
40 ```
41
42 ### CFG
compiler/forget/src/__tests__/fixtures/hir/switch-non-final-default.expect.md
+7 -10
@@ -58,18 +58,15 @@ bb1:
58 [13] Call read y$11_@1.push(read props$9.p4)
59 [14] Const mutate $22_@6 = JSX <read Component$0 data={freeze y$11_@1} >{read child$19_@5}</read Component$0>
60 [15] Return read $22_@6
61 -scope1 [1:12]:
62 - - read props$9.p2
63 - - read props$9.p0
61 scope5 [12:13]:
65 - - read Component$0
66 - - freeze x$10_@1
67 - - read y$11_@1.push
68 - - read props$9.p4
62 + - dependency: read Component$0
63 + - dependency: freeze x$10_@1
64 + - dependency: read y$11_@1.push
65 + - dependency: read props$9.p4
66 scope6 [14:15]:
70 - - read Component$0
71 - - freeze y$11_@1
72 - - read child$19_@5
67 + - dependency: read Component$0
68 + - dependency: freeze y$11_@1
69 + - dependency: read child$19_@5
70 ```
71
72 ### CFG
compiler/forget/src/__tests__/fixtures/hir/switch.expect.md
+7 -11
@@ -53,19 +53,15 @@ bb1:
53 [13] Call read y$10_@1.push(read props$8.p4)
54 [14] Const mutate $23_@6 = JSX <read Component$0 data={read y$10_@1} >{read child$19_@5}</read Component$0>
55 [15] Return read $23_@6
56 -scope1 [1:12]:
57 - - read props$8.p2
58 - - read props$8.p3
59 - - read props$8.p0
56 scope5 [12:13]:
61 - - read Component$0
62 - - freeze x$9_@1
63 - - read y$10_@1.push
64 - - read props$8.p4
57 + - dependency: read Component$0
58 + - dependency: freeze x$9_@1
59 + - dependency: read y$10_@1.push
60 + - dependency: read props$8.p4
61 scope6 [14:15]:
66 - - read Component$0
67 - - read y$10_@1
68 - - read child$19_@5
62 + - dependency: read Component$0
63 + - dependency: read y$10_@1
64 + - dependency: read child$19_@5
65 ```
66
67 ### CFG