mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
Allow module level "use no forget"
Currently we only allow adding the directive to function bodies, but there may be cases where we want to always opt out an entire module from being compiled by Forget
This commit is contained in:
@@ -188,6 +188,11 @@ export function compileProgram(
|
||||
program: NodePath<t.Program>,
|
||||
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 ?? {});
|
||||
|
||||
|
||||
+29
@@ -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];
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
"use no forget";
|
||||
|
||||
export default function foo(x, y) {
|
||||
if (x) {
|
||||
return foo(false, y);
|
||||
}
|
||||
return [y * 10];
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user