diff --git a/compiler/packages/babel-plugin-react-forget/src/Entrypoint/Program.ts b/compiler/packages/babel-plugin-react-forget/src/Entrypoint/Program.ts index 934ca5fa74..f2572dd77c 100644 --- a/compiler/packages/babel-plugin-react-forget/src/Entrypoint/Program.ts +++ b/compiler/packages/babel-plugin-react-forget/src/Entrypoint/Program.ts @@ -188,6 +188,11 @@ export function compileProgram( program: NodePath, pass: CompilerPass ): void { + // Top level "use no forget", skip this file entirely + if (findUseNoForgetDirective(program.node.directives) != null) { + return; + } + const options = parsePluginOptions(pass.opts); const environment = parseEnvironmentConfig(pass.opts.environment ?? {}); diff --git a/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/use-no-forget-module-level.expect.md b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/use-no-forget-module-level.expect.md new file mode 100644 index 0000000000..b749b15e64 --- /dev/null +++ b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/use-no-forget-module-level.expect.md @@ -0,0 +1,29 @@ + +## Input + +```javascript +"use no forget"; + +export default function foo(x, y) { + if (x) { + return foo(false, y); + } + return [y * 10]; +} + +``` + +## Code + +```javascript +"use no forget"; + +export default function foo(x, y) { + if (x) { + return foo(false, y); + } + return [y * 10]; +} + +``` + \ No newline at end of file diff --git a/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/use-no-forget-module-level.js b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/use-no-forget-module-level.js new file mode 100644 index 0000000000..802ea035e8 --- /dev/null +++ b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/use-no-forget-module-level.js @@ -0,0 +1,8 @@ +"use no forget"; + +export default function foo(x, y) { + if (x) { + return foo(false, y); + } + return [y * 10]; +} diff --git a/compiler/packages/sprout/src/SproutTodoFilter.ts b/compiler/packages/sprout/src/SproutTodoFilter.ts index c319e42ad8..d7ce84f7dc 100644 --- a/compiler/packages/sprout/src/SproutTodoFilter.ts +++ b/compiler/packages/sprout/src/SproutTodoFilter.ts @@ -384,6 +384,7 @@ const skipFilter = new Set([ "useMemo-named-function", "useMemo-return-empty", "useMemo-simple", + "use-no-forget-module-level", // defines multiple functions "alias-while", "babel-existing-react-import",