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
+};