mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
[test] Add test for capturing a ref before renaming
The renaming does not affect the lambda correctly.
This commit is contained in:
+66
@@ -0,0 +1,66 @@
|
||||
|
||||
## Input
|
||||
|
||||
```javascript
|
||||
function component(a, b) {
|
||||
let z = { a };
|
||||
(function () {
|
||||
mutate(z);
|
||||
})();
|
||||
let y = z;
|
||||
|
||||
{
|
||||
// z is shadowed & renamed but the lambda is unaffected.
|
||||
let z = { b };
|
||||
y = { y, z };
|
||||
}
|
||||
return y;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
## Code
|
||||
|
||||
```javascript
|
||||
function component(a, b) {
|
||||
const $ = React.unstable_useMemoCache(7);
|
||||
const c_0 = $[0] !== a;
|
||||
let z;
|
||||
if (c_0) {
|
||||
z = { a };
|
||||
(function () {
|
||||
mutate(z);
|
||||
})();
|
||||
$[0] = a;
|
||||
$[1] = z;
|
||||
} else {
|
||||
z = $[1];
|
||||
}
|
||||
let y = z;
|
||||
const c_2 = $[2] !== b;
|
||||
let t0;
|
||||
if (c_2) {
|
||||
t0 = { b };
|
||||
$[2] = b;
|
||||
$[3] = t0;
|
||||
} else {
|
||||
t0 = $[3];
|
||||
}
|
||||
const z_0 = t0;
|
||||
const c_4 = $[4] !== y;
|
||||
const c_5 = $[5] !== z_0;
|
||||
let t1;
|
||||
if (c_4 || c_5) {
|
||||
t1 = { y, z: z_0 };
|
||||
$[4] = y;
|
||||
$[5] = z_0;
|
||||
$[6] = t1;
|
||||
} else {
|
||||
t1 = $[6];
|
||||
}
|
||||
y = t1;
|
||||
return y;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
function component(a, b) {
|
||||
let z = { a };
|
||||
(function () {
|
||||
mutate(z);
|
||||
})();
|
||||
let y = z;
|
||||
|
||||
{
|
||||
// z is shadowed & renamed but the lambda is unaffected.
|
||||
let z = { b };
|
||||
y = { y, z };
|
||||
}
|
||||
return y;
|
||||
}
|
||||
Reference in New Issue
Block a user