diff --git a/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.todo-recursive-function-expression.expect.md b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.todo-recursive-function-expression.expect.md new file mode 100644 index 0000000000..98588f3b5c --- /dev/null +++ b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.todo-recursive-function-expression.expect.md @@ -0,0 +1,30 @@ + +## Input + +```javascript +function Component() { + function callback(x) { + if (x == 0) { + return null; + } + return callback(x - 1); + } + return callback(10); +} + +``` + + +## Error + +``` + 4 | return null; + 5 | } +> 6 | return callback(x - 1); + | ^^^^^^^^^^^^^^^ [ReactForget] Todo: Unsupported declaration type for hoisting. variable "callback" declared with FunctionDeclaration (6:6) + 7 | } + 8 | return callback(10); + 9 | } +``` + + \ No newline at end of file diff --git a/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.todo-recursive-function-expression.js b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.todo-recursive-function-expression.js new file mode 100644 index 0000000000..f1b95e5105 --- /dev/null +++ b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.todo-recursive-function-expression.js @@ -0,0 +1,9 @@ +function Component() { + function callback(x) { + if (x == 0) { + return null; + } + return callback(x - 1); + } + return callback(10); +} diff --git a/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/recursive-function-expr.expect.md b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/recursive-function-expr.expect.md deleted file mode 100644 index 2d931d03fb..0000000000 --- a/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/recursive-function-expr.expect.md +++ /dev/null @@ -1,19 +0,0 @@ - -## Input - -```javascript -function foo() { - (() => foo())(); -} - -``` - -## Code - -```javascript -function foo() { - foo(); -} - -``` - \ No newline at end of file diff --git a/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/recursive-function-expr.js b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/recursive-function-expr.js deleted file mode 100644 index fcd835a0fa..0000000000 --- a/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/recursive-function-expr.js +++ /dev/null @@ -1,3 +0,0 @@ -function foo() { - (() => foo())(); -} diff --git a/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/recursive-function.expect.md b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/recursive-function.expect.md new file mode 100644 index 0000000000..023e129625 --- /dev/null +++ b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/recursive-function.expect.md @@ -0,0 +1,39 @@ + +## Input + +```javascript +function foo(x) { + if (x <= 0) { + return 0; + } + return x + foo(x - 1) + (() => foo(x - 2))(); +} + +export const FIXTURE_ENTRYPOINT = { + fn: foo, + params: [10], +}; + +``` + +## Code + +```javascript +function foo(x) { + if (x <= 0) { + return 0; + } + let t0; + t0 = foo(x - 2); + return x + foo(x - 1) + t0; +} + +export const FIXTURE_ENTRYPOINT = { + fn: foo, + params: [10], +}; + +``` + +### Eval output +(kind: ok) 364 \ No newline at end of file diff --git a/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/recursive-function.js b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/recursive-function.js new file mode 100644 index 0000000000..cfc5ee6cc5 --- /dev/null +++ b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/recursive-function.js @@ -0,0 +1,11 @@ +function foo(x) { + if (x <= 0) { + return 0; + } + return x + foo(x - 1) + (() => foo(x - 2))(); +} + +export const FIXTURE_ENTRYPOINT = { + fn: foo, + params: [10], +};