mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
Support array pattern params
This commit is contained in:
@@ -102,7 +102,7 @@ export function lower(
|
||||
loc: param.node.loc ?? GeneratedSource,
|
||||
};
|
||||
params.push(place);
|
||||
} else if (param.isObjectPattern()) {
|
||||
} else if (param.isObjectPattern() || param.isArrayPattern()) {
|
||||
const place: Place = {
|
||||
kind: "Identifier",
|
||||
identifier: builder.makeTemporary(),
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
|
||||
## Input
|
||||
|
||||
```javascript
|
||||
function component([a, b]) {
|
||||
let y = { a };
|
||||
let z = { b };
|
||||
return [y, z];
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
## Code
|
||||
|
||||
```javascript
|
||||
function component(t16) {
|
||||
const $ = React.unstable_useMemoCache(7);
|
||||
const [a, b] = t16;
|
||||
const c_0 = $[0] !== a;
|
||||
let t0;
|
||||
if (c_0) {
|
||||
t0 = { a };
|
||||
$[0] = a;
|
||||
$[1] = t0;
|
||||
} else {
|
||||
t0 = $[1];
|
||||
}
|
||||
const y = t0;
|
||||
const c_2 = $[2] !== b;
|
||||
let t1;
|
||||
if (c_2) {
|
||||
t1 = { b };
|
||||
$[2] = b;
|
||||
$[3] = t1;
|
||||
} else {
|
||||
t1 = $[3];
|
||||
}
|
||||
const z = t1;
|
||||
const c_4 = $[4] !== y;
|
||||
const c_5 = $[5] !== z;
|
||||
let t2;
|
||||
if (c_4 || c_5) {
|
||||
t2 = [y, z];
|
||||
$[4] = y;
|
||||
$[5] = z;
|
||||
$[6] = t2;
|
||||
} else {
|
||||
t2 = $[6];
|
||||
}
|
||||
return t2;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
function component([a, b]) {
|
||||
let y = { a };
|
||||
let z = { b };
|
||||
return [y, z];
|
||||
}
|
||||
@@ -83,13 +83,6 @@ let moduleLocal = false;
|
||||
## Error
|
||||
|
||||
```
|
||||
[ReactForget] TodoError: (BuildHIR::lower) Handle ArrayPattern params
|
||||
> 1 | function foo([a, b], { c, d, e = "e" }, f = "f", ...args) {
|
||||
| ^^^^^^
|
||||
2 | let i = 0;
|
||||
3 | var x = [];
|
||||
4 |
|
||||
|
||||
[ReactForget] TodoError: (BuildHIR::lowerAssignment) Handle AssignmentPattern assignments
|
||||
> 1 | function foo([a, b], { c, d, e = "e" }, f = "f", ...args) {
|
||||
| ^^^^^^^
|
||||
@@ -192,15 +185,6 @@ let moduleLocal = false;
|
||||
22 | const j = function bar([quz, qux], ...args) {};
|
||||
23 |
|
||||
|
||||
[ReactForget] TodoError: (BuildHIR::lower) Handle ArrayPattern params
|
||||
20 | <DesignSystem.Button />;
|
||||
21 |
|
||||
> 22 | const j = function bar([quz, qux], ...args) {};
|
||||
| ^^^^^^^^^^
|
||||
23 |
|
||||
24 | for (; i < 3; i += 1) {
|
||||
25 | x.push(i);
|
||||
|
||||
[ReactForget] TodoError: (BuildHIR::lower) Handle RestElement params
|
||||
20 | <DesignSystem.Button />;
|
||||
21 |
|
||||
|
||||
Reference in New Issue
Block a user