Commit 805b1e6
committed
[compiler] Fix bug w functions depending on hoisted primitives (#35284)
Fixes an edge case where a function expression would fail to take a
dependency if it referenced a hoisted `const` inferred as a primitive
value. We were incorrectly skipping primitve-typed operands when
determing scopes for merging in InferReactiveScopeVariables.
This was super tricky to debug, for posterity the trick is that Context
variables (StoreContext etc) are modeled just like a mutable object,
where assignment to the variable is equivalent to `object.value = ...`
and reading the variable is equivalent to `object.value` property
access. Comparing to an equivalent version of the repro case replaced
with an object and property read/writes showed that everything was
exactly right, except that InferReactiveScopeVariables wasn't merging
the scopes of the function and the context variable, which led me right
to the problematic line.
Closes #35122
DiffTrain build for [2cb08e6](2cb08e6)1 parent d9dc8f1 commit 805b1e6
File tree
35 files changed
+86
-92
lines changed- compiled
- eslint-plugin-react-hooks
- facebook-www
35 files changed
+86
-92
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
33187 | 33187 | | |
33188 | 33188 | | |
33189 | 33189 | | |
33190 | | - | |
33191 | | - | |
33192 | | - | |
33193 | | - | |
33194 | | - | |
33195 | | - | |
33196 | 33190 | | |
33197 | 33191 | | |
33198 | 33192 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1499 | 1499 | | |
1500 | 1500 | | |
1501 | 1501 | | |
1502 | | - | |
| 1502 | + | |
1503 | 1503 | | |
1504 | 1504 | | |
1505 | 1505 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1499 | 1499 | | |
1500 | 1500 | | |
1501 | 1501 | | |
1502 | | - | |
| 1502 | + | |
1503 | 1503 | | |
1504 | 1504 | | |
1505 | 1505 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
606 | 606 | | |
607 | 607 | | |
608 | 608 | | |
609 | | - | |
| 609 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
606 | 606 | | |
607 | 607 | | |
608 | 608 | | |
609 | | - | |
| 609 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
610 | 610 | | |
611 | 611 | | |
612 | 612 | | |
613 | | - | |
| 613 | + | |
614 | 614 | | |
615 | 615 | | |
616 | 616 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
610 | 610 | | |
611 | 611 | | |
612 | 612 | | |
613 | | - | |
| 613 | + | |
614 | 614 | | |
615 | 615 | | |
616 | 616 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20468 | 20468 | | |
20469 | 20469 | | |
20470 | 20470 | | |
20471 | | - | |
| 20471 | + | |
20472 | 20472 | | |
20473 | 20473 | | |
20474 | | - | |
| 20474 | + | |
20475 | 20475 | | |
20476 | 20476 | | |
20477 | 20477 | | |
| |||
20506 | 20506 | | |
20507 | 20507 | | |
20508 | 20508 | | |
20509 | | - | |
| 20509 | + | |
20510 | 20510 | | |
20511 | 20511 | | |
20512 | 20512 | | |
| |||
0 commit comments