dillon1000/react
Commit
Browse files Revamp compilation modes
We currently have multiple flags for targeting which functions to compile, but they are actually mutually exclusive. This PR consolidates to a single `compilationMode: 'annotation' | 'infer' | 'all'` flag: * Annotation compiles only functions that explicitly opt-in with "use forget" * Infer compiles explicitly opted-in functions (via "use forget") as well as any known/inferred components or hooks: * Component declarations * Component or hook-like functions (same rules as the ESLint plugin but with an extra check for whether it uses JSX or calls a hook) * All compiles all top-level functions. We should get rid of this in a follow-up and make tests use infer mode by default, and add explicit opt-ins where necessary. In all modes, "use no forget" always takes precedence and can be used to opt-out. The default mode is now "infer".
Changed paths45 files
First-parent comparisoncompiler/crates/forget_hermes_parser/tests/fixtures/codegen-instrument-forget-gating-test.js ModifiedM compiler/crates/forget_hermes_parser/tests/fixtures/codegen-instrument-forget-test.js ModifiedM compiler/crates/forget_hermes_parser/tests/fixtures/gating-test-export-default-function.js ModifiedM compiler/crates/forget_hermes_parser/tests/fixtures/gating-test-export-function-and-default.js ModifiedM compiler/crates/forget_hermes_parser/tests/fixtures/gating-test-export-function.js ModifiedM compiler/crates/forget_hermes_parser/tests/fixtures/gating-test.js ModifiedM compiler/crates/forget_hermes_parser/tests/snapshots/parser_test__fixtures@codegen-instrument-forget-gating-test.js.snap ModifiedM compiler/crates/forget_hermes_parser/tests/snapshots/[email protected] ModifiedM compiler/crates/forget_hermes_parser/tests/snapshots/parser_test__fixtures@gating-test-export-default-function.js.snap ModifiedM compiler/crates/forget_hermes_parser/tests/snapshots/parser_test__fixtures@gating-test-export-function-and-default.js.snap ModifiedM compiler/crates/forget_hermes_parser/tests/snapshots/[email protected] ModifiedM compiler/crates/forget_hermes_parser/tests/snapshots/[email protected] ModifiedM compiler/packages/babel-plugin-react-forget/src/Entrypoint/Options.ts ModifiedM compiler/packages/babel-plugin-react-forget/src/Entrypoint/Program.ts ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/codegen-instrument-forget-gating-test.expect.md ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/codegen-instrument-forget-gating-test.js ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/codegen-instrument-forget-test.expect.md ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/codegen-instrument-forget-test.js ModifiedR compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/reactscript-basic.flow.expect.md →compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/component-declaration-basic.flow.expect.md RenamedR compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/reactscript-basic.flow.js →compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/component-declaration-basic.flow.js RenamedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.todo.infer-function-assignment.expect.md ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.todo.infer-function-assignment.js ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/gating-test-export-default-function.expect.md ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/gating-test-export-default-function.js ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/gating-test-export-function-and-default.expect.md ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/gating-test-export-function-and-default.js ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/gating-test-export-function.expect.md ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/gating-test-export-function.js ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/gating-test.expect.md ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/gating-test.js ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/infer-function-React-memo.expect.md ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/infer-function-React-memo.js ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/infer-function-forwardRef.expect.md ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/infer-function-forwardRef.js ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/infer-functions-component-with-hook-call.expect.md ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/infer-functions-component-with-hook-call.js ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/infer-functions-component-with-jsx.expect.md ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/infer-functions-component-with-jsx.js ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/infer-functions-hook-with-hook-call.expect.md ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/infer-functions-hook-with-hook-call.js ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/infer-functions-hook-with-jsx.expect.md ModifiedM compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/infer-functions-hook-with-jsx.js ModifiedM compiler/packages/eslint-plugin-react-forget/src/rules/ReactForgetDiagnostics.ts ModifiedM compiler/packages/fixture-test-utils/src/compiler-utils.ts ModifiedM compiler/packages/sprout/src/SproutTodoFilter.ts ModifiedPatch
Files changed
Rendering syntax-highlighted changes…