@samitouri / QOS-React-2 / commits / a6b3adbe68

Repro for unsupported recursive function expressions

Joe Savona committed Mar 21, 2024 at 14:11 UTC a6b3adbe68b0ee1e50fd4f0d632e5e1ce60dedcd
6 files changed +89 -22
compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.todo-recursive-function-expression.expect.md new
+30
@@ -0,0 +1,30 @@
1 +
2 +## Input
3 +
4 +```javascript
5 +function Component() {
6 + function callback(x) {
7 + if (x == 0) {
8 + return null;
9 + }
10 + return callback(x - 1);
11 + }
12 + return callback(10);
13 +}
14 +
15 +```
16 +
17 +
18 +## Error
19 +
20 +```
21 + 4 | return null;
22 + 5 | }
23 +> 6 | return callback(x - 1);
24 + | ^^^^^^^^^^^^^^^ [ReactForget] Todo: Unsupported declaration type for hoisting. variable "callback" declared with FunctionDeclaration (6:6)
25 + 7 | }
26 + 8 | return callback(10);
27 + 9 | }
28 +```
29 +
30 +
\ No newline at end of file
compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.todo-recursive-function-expression.js new
+9
@@ -0,0 +1,9 @@
1 +function Component() {
2 + function callback(x) {
3 + if (x == 0) {
4 + return null;
5 + }
6 + return callback(x - 1);
7 + }
8 + return callback(10);
9 +}
compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/recursive-function-expr.expect.md deleted
-19
@@ -1,19 +0,0 @@
1 -
2 -## Input
3 -
4 -```javascript
5 -function foo() {
6 - (() => foo())();
7 -}
8 -
9 -```
10 -
11 -## Code
12 -
13 -```javascript
14 -function foo() {
15 - foo();
16 -}
17 -
18 -```
19 -
\ No newline at end of file
compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/recursive-function-expr.js deleted
-3
@@ -1,3 +0,0 @@
1 -function foo() {
2 - (() => foo())();
3 -}
compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/recursive-function.expect.md new
+39
@@ -0,0 +1,39 @@
1 +
2 +## Input
3 +
4 +```javascript
5 +function foo(x) {
6 + if (x <= 0) {
7 + return 0;
8 + }
9 + return x + foo(x - 1) + (() => foo(x - 2))();
10 +}
11 +
12 +export const FIXTURE_ENTRYPOINT = {
13 + fn: foo,
14 + params: [10],
15 +};
16 +
17 +```
18 +
19 +## Code
20 +
21 +```javascript
22 +function foo(x) {
23 + if (x <= 0) {
24 + return 0;
25 + }
26 + let t0;
27 + t0 = foo(x - 2);
28 + return x + foo(x - 1) + t0;
29 +}
30 +
31 +export const FIXTURE_ENTRYPOINT = {
32 + fn: foo,
33 + params: [10],
34 +};
35 +
36 +```
37 +
38 +### Eval output
39 +(kind: ok) 364
\ No newline at end of file
compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/recursive-function.js new
+11
@@ -0,0 +1,11 @@
1 +function foo(x) {
2 + if (x <= 0) {
3 + return 0;
4 + }
5 + return x + foo(x - 1) + (() => foo(x - 2))();
6 +}
7 +
8 +export const FIXTURE_ENTRYPOINT = {
9 + fn: foo,
10 + params: [10],
11 +};