Skip to content

Commit c129c24

Browse files
authored
[compiler][repro] Nested fbt test fixture (#32779)
Ideally we should detect and bail out on this case to avoid babel build failures.
1 parent 0c1575c commit c129c24

File tree

2 files changed

+94
-0
lines changed

2 files changed

+94
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
2+
## Input
3+
4+
```javascript
5+
import fbt from 'fbt';
6+
import {Stringify} from 'shared-runtime';
7+
8+
/**
9+
* MemoizeFbtAndMacroOperands needs to account for nested fbt calls.
10+
* Expected fixture `fbt-param-call-arguments` to succeed but it failed with error:
11+
* /fbt-param-call-arguments.ts: Line 19 Column 11: fbt: unsupported babel node: Identifier
12+
* ---
13+
* t3
14+
* ---
15+
*/
16+
function Component({firstname, lastname}) {
17+
'use memo';
18+
return (
19+
<Stringify>
20+
{fbt(
21+
[
22+
'Name: ',
23+
fbt.param('firstname', <Stringify key={0} name={firstname} />),
24+
', ',
25+
fbt.param(
26+
'lastname',
27+
<Stringify key={0} name={lastname}>
28+
{fbt('(inner fbt)', 'Inner fbt value')}
29+
</Stringify>
30+
),
31+
],
32+
'Name'
33+
)}
34+
</Stringify>
35+
);
36+
}
37+
38+
export const FIXTURE_ENTRYPOINT = {
39+
fn: Component,
40+
params: [{firstname: 'first', lastname: 'last'}],
41+
sequentialRenders: [{firstname: 'first', lastname: 'last'}],
42+
};
43+
44+
```
45+
46+
47+
## Error
48+
49+
```
50+
Line 19 Column 11: fbt: unsupported babel node: Identifier
51+
---
52+
t3
53+
---
54+
```
55+
56+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import fbt from 'fbt';
2+
import {Stringify} from 'shared-runtime';
3+
4+
/**
5+
* MemoizeFbtAndMacroOperands needs to account for nested fbt calls.
6+
* Expected fixture `fbt-param-call-arguments` to succeed but it failed with error:
7+
* /fbt-param-call-arguments.ts: Line 19 Column 11: fbt: unsupported babel node: Identifier
8+
* ---
9+
* t3
10+
* ---
11+
*/
12+
function Component({firstname, lastname}) {
13+
'use memo';
14+
return (
15+
<Stringify>
16+
{fbt(
17+
[
18+
'Name: ',
19+
fbt.param('firstname', <Stringify key={0} name={firstname} />),
20+
', ',
21+
fbt.param(
22+
'lastname',
23+
<Stringify key={0} name={lastname}>
24+
{fbt('(inner fbt)', 'Inner fbt value')}
25+
</Stringify>
26+
),
27+
],
28+
'Name'
29+
)}
30+
</Stringify>
31+
);
32+
}
33+
34+
export const FIXTURE_ENTRYPOINT = {
35+
fn: Component,
36+
params: [{firstname: 'first', lastname: 'last'}],
37+
sequentialRenders: [{firstname: 'first', lastname: 'last'}],
38+
};

0 commit comments

Comments
 (0)