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