From 2c8725fdfd13705487d13dce008d62c605cd7f73 Mon Sep 17 00:00:00 2001 From: Joseph Savona <6425824+josephsavona@users.noreply.github.com> Date: Fri, 23 Jan 2026 10:38:40 -0800 Subject: [PATCH] [compiler] snap fails if nothing compiled, unless @expectNothingCompiled (#35615) A few times an agent has constructed fixtures that are silently skipped because the component has no jsx or hook calls. This PR updates snap to ensure that for each fixture either: 1) There are at least one compile success/failure *and* the `@expectNothingCompiled` pragma is missing 2) OR there are zero success/failures *and* the `@expectNothingCompiled` pragma is present This ensures we are intentional about fixtures that are expected not to have compilation, and know if that expectation breaks. --- ...ass-component-with-render-helper.expect.md | 4 +- .../class-component-with-render-helper.js | 2 +- .../custom-opt-out-directive.expect.md | 4 +- .../compiler/custom-opt-out-directive.tsx | 2 +- ...itive-function-call-non-escaping.expect.md | 4 +- ...ze-primitive-function-call-non-escaping.js | 2 +- ...mport-without-compiled-functions.expect.md | 4 +- ...ating-import-without-compiled-functions.js | 2 +- ...-components-with-multiple-params.expect.md | 4 +- ...compile-components-with-multiple-params.js | 2 +- .../infer-no-component-annot.expect.md | 4 +- .../compiler/infer-no-component-annot.ts | 2 +- .../infer-no-component-nested-jsx.expect.md | 4 +- .../compiler/infer-no-component-nested-jsx.js | 2 +- .../infer-no-component-obj-return.expect.md | 4 +- .../compiler/infer-no-component-obj-return.js | 2 +- ...-components-without-hooks-or-jsx.expect.md | 4 +- ...er-skip-components-without-hooks-or-jsx.js | 2 +- .../rules-of-hooks-0592bd574811.expect.md | 4 +- .../rules-of-hooks-0592bd574811.js | 2 +- .../rules-of-hooks-2bec02ac982b.expect.md | 4 +- .../rules-of-hooks-2bec02ac982b.js | 2 +- .../rules-of-hooks-33a6e23edac1.expect.md | 4 +- .../rules-of-hooks-33a6e23edac1.js | 2 +- .../rules-of-hooks-8f1c2c3f71c9.expect.md | 4 +- .../rules-of-hooks-8f1c2c3f71c9.js | 2 +- .../rules-of-hooks-df4d750736f3.expect.md | 2 + .../rules-of-hooks-df4d750736f3.js | 1 + .../rules-of-hooks-dfde14171fcd.expect.md | 2 + .../rules-of-hooks-dfde14171fcd.js | 1 + .../rules-of-hooks-fe6042f7628b.expect.md | 4 +- .../rules-of-hooks-fe6042f7628b.js | 2 +- ...alid-rules-of-hooks-191029ac48c8.expect.md | 4 +- ...lid.invalid-rules-of-hooks-191029ac48c8.js | 2 +- ...alid-rules-of-hooks-206e2811c87c.expect.md | 4 +- ...lid.invalid-rules-of-hooks-206e2811c87c.js | 2 +- ...alid-rules-of-hooks-28a7111f56a7.expect.md | 4 +- ...lid.invalid-rules-of-hooks-28a7111f56a7.js | 2 +- ...alid-rules-of-hooks-2c51251df67a.expect.md | 4 +- ...lid.invalid-rules-of-hooks-2c51251df67a.js | 2 +- ...alid-rules-of-hooks-8303403b8e4c.expect.md | 4 +- ...lid.invalid-rules-of-hooks-8303403b8e4c.js | 2 +- ...alid-rules-of-hooks-99b5c750d1d1.expect.md | 4 +- ...lid.invalid-rules-of-hooks-99b5c750d1d1.js | 2 +- ...alid-rules-of-hooks-9c79feec4b9b.expect.md | 4 +- ...lid.invalid-rules-of-hooks-9c79feec4b9b.js | 2 +- ...alid-rules-of-hooks-acb56658fe7e.expect.md | 4 +- ...lid.invalid-rules-of-hooks-acb56658fe7e.js | 2 +- ...alid-rules-of-hooks-ddeca9708b63.expect.md | 4 +- ...lid.invalid-rules-of-hooks-ddeca9708b63.js | 2 +- ...alid-rules-of-hooks-e69ffce323c3.expect.md | 4 +- ...lid.invalid-rules-of-hooks-e69ffce323c3.js | 2 +- .../compiler/skip-useMemoCache.expect.md | 2 + .../fixtures/compiler/skip-useMemoCache.js | 1 + .../use-no-forget-with-no-errors.expect.md | 2 + .../compiler/use-no-forget-with-no-errors.js | 1 + .../compiler/use-no-memo-simple.expect.md | 2 + .../fixtures/compiler/use-no-memo-simple.js | 1 + compiler/packages/snap/src/compiler.ts | 38 ++++++++++++++----- 59 files changed, 116 insertions(+), 81 deletions(-) diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/class-component-with-render-helper.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/class-component-with-render-helper.expect.md index 093a88b1de..175a590be5 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/class-component-with-render-helper.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/class-component-with-render-helper.expect.md @@ -2,7 +2,7 @@ ## Input ```javascript -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" class Component { _renderMessage = () => { const Message = () => { @@ -22,7 +22,7 @@ class Component { ## Code ```javascript -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" class Component { _renderMessage = () => { const Message = () => { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/class-component-with-render-helper.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/class-component-with-render-helper.js index 0786c82d6e..324945eb2a 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/class-component-with-render-helper.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/class-component-with-render-helper.js @@ -1,4 +1,4 @@ -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" class Component { _renderMessage = () => { const Message = () => { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/custom-opt-out-directive.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/custom-opt-out-directive.expect.md index 7875137a88..ca69b5a092 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/custom-opt-out-directive.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/custom-opt-out-directive.expect.md @@ -2,7 +2,7 @@ ## Input ```javascript -// @customOptOutDirectives:["use todo memo"] +// @expectNothingCompiled @customOptOutDirectives:["use todo memo"] function Component() { 'use todo memo'; return
hello world!
; @@ -18,7 +18,7 @@ export const FIXTURE_ENTRYPOINT = { ## Code ```javascript -// @customOptOutDirectives:["use todo memo"] +// @expectNothingCompiled @customOptOutDirectives:["use todo memo"] function Component() { "use todo memo"; return
hello world!
; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/custom-opt-out-directive.tsx b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/custom-opt-out-directive.tsx index 2255596183..85e1583eb7 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/custom-opt-out-directive.tsx +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/custom-opt-out-directive.tsx @@ -1,4 +1,4 @@ -// @customOptOutDirectives:["use todo memo"] +// @expectNothingCompiled @customOptOutDirectives:["use todo memo"] function Component() { 'use todo memo'; return
hello world!
; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/dont-memoize-primitive-function-call-non-escaping.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/dont-memoize-primitive-function-call-non-escaping.expect.md index e2f6c9e6c2..0abd02f412 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/dont-memoize-primitive-function-call-non-escaping.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/dont-memoize-primitive-function-call-non-escaping.expect.md @@ -2,7 +2,7 @@ ## Input ```javascript -// @compilationMode:"infer" @enablePreserveExistingMemoizationGuarantees @validatePreserveExistingMemoizationGuarantees +// @expectNothingCompiled @compilationMode:"infer" @enablePreserveExistingMemoizationGuarantees @validatePreserveExistingMemoizationGuarantees import {useMemo} from 'react'; import {makeObject_Primitives, ValidateMemoization} from 'shared-runtime'; @@ -37,7 +37,7 @@ export const FIXTURE_ENTRYPOINT = { ## Code ```javascript -// @compilationMode:"infer" @enablePreserveExistingMemoizationGuarantees @validatePreserveExistingMemoizationGuarantees +// @expectNothingCompiled @compilationMode:"infer" @enablePreserveExistingMemoizationGuarantees @validatePreserveExistingMemoizationGuarantees import { useMemo } from "react"; import { makeObject_Primitives, ValidateMemoization } from "shared-runtime"; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/dont-memoize-primitive-function-call-non-escaping.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/dont-memoize-primitive-function-call-non-escaping.js index b4d8d34444..7477ee0a9d 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/dont-memoize-primitive-function-call-non-escaping.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/dont-memoize-primitive-function-call-non-escaping.js @@ -1,4 +1,4 @@ -// @compilationMode:"infer" @enablePreserveExistingMemoizationGuarantees @validatePreserveExistingMemoizationGuarantees +// @expectNothingCompiled @compilationMode:"infer" @enablePreserveExistingMemoizationGuarantees @validatePreserveExistingMemoizationGuarantees import {useMemo} from 'react'; import {makeObject_Primitives, ValidateMemoization} from 'shared-runtime'; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/gating/repro-no-gating-import-without-compiled-functions.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/gating/repro-no-gating-import-without-compiled-functions.expect.md index 9a858d91f4..06288dd2be 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/gating/repro-no-gating-import-without-compiled-functions.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/gating/repro-no-gating-import-without-compiled-functions.expect.md @@ -2,7 +2,7 @@ ## Input ```javascript -// @gating +// @expectNothingCompiled @gating import {isForgetEnabled_Fixtures} from 'ReactForgetFeatureFlag'; export default 42; @@ -12,7 +12,7 @@ export default 42; ## Code ```javascript -// @gating +// @expectNothingCompiled @gating import { isForgetEnabled_Fixtures } from "ReactForgetFeatureFlag"; export default 42; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/gating/repro-no-gating-import-without-compiled-functions.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/gating/repro-no-gating-import-without-compiled-functions.js index f3c07f9e09..56dc609107 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/gating/repro-no-gating-import-without-compiled-functions.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/gating/repro-no-gating-import-without-compiled-functions.js @@ -1,4 +1,4 @@ -// @gating +// @expectNothingCompiled @gating import {isForgetEnabled_Fixtures} from 'ReactForgetFeatureFlag'; export default 42; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-dont-compile-components-with-multiple-params.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-dont-compile-components-with-multiple-params.expect.md index 9b35a83801..5f1f1f7662 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-dont-compile-components-with-multiple-params.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-dont-compile-components-with-multiple-params.expect.md @@ -2,7 +2,7 @@ ## Input ```javascript -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" // Takes multiple parameters - not a component! function Component(foo, bar) { return
; @@ -18,7 +18,7 @@ export const FIXTURE_ENTRYPOINT = { ## Code ```javascript -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" // Takes multiple parameters - not a component! function Component(foo, bar) { return
; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-dont-compile-components-with-multiple-params.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-dont-compile-components-with-multiple-params.js index 442c367fde..19406072fc 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-dont-compile-components-with-multiple-params.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-dont-compile-components-with-multiple-params.js @@ -1,4 +1,4 @@ -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" // Takes multiple parameters - not a component! function Component(foo, bar) { return
; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-no-component-annot.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-no-component-annot.expect.md index 1334ab1f0a..0472063a7c 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-no-component-annot.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-no-component-annot.expect.md @@ -2,7 +2,7 @@ ## Input ```javascript -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" import {useIdentity, identity} from 'shared-runtime'; function Component(fakeProps: number) { @@ -20,7 +20,7 @@ export const FIXTURE_ENTRYPOINT = { ## Code ```javascript -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" import { useIdentity, identity } from "shared-runtime"; function Component(fakeProps: number) { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-no-component-annot.ts b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-no-component-annot.ts index e628f9c685..0fed616060 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-no-component-annot.ts +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-no-component-annot.ts @@ -1,4 +1,4 @@ -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" import {useIdentity, identity} from 'shared-runtime'; function Component(fakeProps: number) { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-no-component-nested-jsx.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-no-component-nested-jsx.expect.md index 28672a1da1..2f7e63d771 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-no-component-nested-jsx.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-no-component-nested-jsx.expect.md @@ -2,7 +2,7 @@ ## Input ```javascript -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" function Component(props) { const result = f(props); function helper() { @@ -26,7 +26,7 @@ export const FIXTURE_ENTRYPOINT = { ## Code ```javascript -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" function Component(props) { const result = f(props); function helper() { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-no-component-nested-jsx.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-no-component-nested-jsx.js index 11a21ab56e..c4b75bd058 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-no-component-nested-jsx.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-no-component-nested-jsx.js @@ -1,4 +1,4 @@ -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" function Component(props) { const result = f(props); function helper() { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-no-component-obj-return.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-no-component-obj-return.expect.md index 27d7ee1c1e..9e442088d4 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-no-component-obj-return.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-no-component-obj-return.expect.md @@ -2,7 +2,7 @@ ## Input ```javascript -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" function Component(props) { const ignore = ; return {foo: f(props)}; @@ -22,7 +22,7 @@ export const FIXTURE_ENTRYPOINT = { ## Code ```javascript -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" function Component(props) { const ignore = ; return { foo: f(props) }; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-no-component-obj-return.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-no-component-obj-return.js index 950988ef63..f8b44e8abf 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-no-component-obj-return.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-no-component-obj-return.js @@ -1,4 +1,4 @@ -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" function Component(props) { const ignore = ; return {foo: f(props)}; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-skip-components-without-hooks-or-jsx.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-skip-components-without-hooks-or-jsx.expect.md index d4d4c1bc0e..3b512a8b59 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-skip-components-without-hooks-or-jsx.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-skip-components-without-hooks-or-jsx.expect.md @@ -2,7 +2,7 @@ ## Input ```javascript -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" // This component is skipped bc it doesn't call any hooks or // use JSX: function Component(props) { @@ -14,7 +14,7 @@ function Component(props) { ## Code ```javascript -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" // This component is skipped bc it doesn't call any hooks or // use JSX: function Component(props) { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-skip-components-without-hooks-or-jsx.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-skip-components-without-hooks-or-jsx.js index c1396aca94..dee75b5741 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-skip-components-without-hooks-or-jsx.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-skip-components-without-hooks-or-jsx.js @@ -1,4 +1,4 @@ -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" // This component is skipped bc it doesn't call any hooks or // use JSX: function Component(props) { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-0592bd574811.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-0592bd574811.expect.md index 82b6998634..b75e2a5da5 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-0592bd574811.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-0592bd574811.expect.md @@ -2,7 +2,7 @@ ## Input ```javascript -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" // Regression test for some internal code. // This shows how the "callback rule" is more relaxed, // and doesn't kick in unless we're confident we're in @@ -20,7 +20,7 @@ function makeListener(instance) { ## Code ```javascript -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" // Regression test for some internal code. // This shows how the "callback rule" is more relaxed, // and doesn't kick in unless we're confident we're in diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-0592bd574811.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-0592bd574811.js index 360593a570..c062150b63 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-0592bd574811.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-0592bd574811.js @@ -1,4 +1,4 @@ -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" // Regression test for some internal code. // This shows how the "callback rule" is more relaxed, // and doesn't kick in unless we're confident we're in diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-2bec02ac982b.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-2bec02ac982b.expect.md index f5bd1a042a..e0c6871e19 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-2bec02ac982b.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-2bec02ac982b.expect.md @@ -2,7 +2,7 @@ ## Input ```javascript -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" // Valid because hooks can call hooks. function createHook() { return function useHook() { @@ -16,7 +16,7 @@ function createHook() { ## Code ```javascript -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" // Valid because hooks can call hooks. function createHook() { return function useHook() { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-2bec02ac982b.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-2bec02ac982b.js index fcdf80d224..e4ff95bfe4 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-2bec02ac982b.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-2bec02ac982b.js @@ -1,4 +1,4 @@ -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" // Valid because hooks can call hooks. function createHook() { return function useHook() { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-33a6e23edac1.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-33a6e23edac1.expect.md index 11330a9c4d..a65b46afa2 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-33a6e23edac1.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-33a6e23edac1.expect.md @@ -2,7 +2,7 @@ ## Input ```javascript -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" // Valid because hooks can use hooks. function createHook() { return function useHookWithHook() { @@ -15,7 +15,7 @@ function createHook() { ## Code ```javascript -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" // Valid because hooks can use hooks. function createHook() { return function useHookWithHook() { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-33a6e23edac1.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-33a6e23edac1.js index 3f3a4c0576..3a7ee7b034 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-33a6e23edac1.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-33a6e23edac1.js @@ -1,4 +1,4 @@ -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" // Valid because hooks can use hooks. function createHook() { return function useHookWithHook() { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-8f1c2c3f71c9.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-8f1c2c3f71c9.expect.md index c0f5ad939d..04eef9c50f 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-8f1c2c3f71c9.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-8f1c2c3f71c9.expect.md @@ -2,7 +2,7 @@ ## Input ```javascript -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" // Valid because components can use hooks. function createComponentWithHook() { return function ComponentWithHook() { @@ -15,7 +15,7 @@ function createComponentWithHook() { ## Code ```javascript -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" // Valid because components can use hooks. function createComponentWithHook() { return function ComponentWithHook() { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-8f1c2c3f71c9.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-8f1c2c3f71c9.js index 31a5d85356..f9dcb240c4 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-8f1c2c3f71c9.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-8f1c2c3f71c9.js @@ -1,4 +1,4 @@ -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" // Valid because components can use hooks. function createComponentWithHook() { return function ComponentWithHook() { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-df4d750736f3.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-df4d750736f3.expect.md index 116baa88bb..dc7e23c859 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-df4d750736f3.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-df4d750736f3.expect.md @@ -2,6 +2,7 @@ ## Input ```javascript +// @expectNothingCompiled // Valid because they're not matching use[A-Z]. fooState(); _use(); @@ -15,6 +16,7 @@ jest.useFakeTimer(); ## Code ```javascript +// @expectNothingCompiled // Valid because they're not matching use[A-Z]. fooState(); _use(); diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-df4d750736f3.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-df4d750736f3.js index f5438b9032..eeb8fc549d 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-df4d750736f3.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-df4d750736f3.js @@ -1,3 +1,4 @@ +// @expectNothingCompiled // Valid because they're not matching use[A-Z]. fooState(); _use(); diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-dfde14171fcd.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-dfde14171fcd.expect.md index 73471b1a5c..4dcc14502b 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-dfde14171fcd.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-dfde14171fcd.expect.md @@ -2,6 +2,7 @@ ## Input ```javascript +// @expectNothingCompiled // Valid because classes can call functions. // We don't consider these to be hooks. class C { @@ -16,6 +17,7 @@ class C { ## Code ```javascript +// @expectNothingCompiled // Valid because classes can call functions. // We don't consider these to be hooks. class C { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-dfde14171fcd.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-dfde14171fcd.js index 76a3d0cf12..a301da630c 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-dfde14171fcd.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-dfde14171fcd.js @@ -1,3 +1,4 @@ +// @expectNothingCompiled // Valid because classes can call functions. // We don't consider these to be hooks. class C { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-fe6042f7628b.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-fe6042f7628b.expect.md index ce42d44a0c..ec0ebb5fb1 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-fe6042f7628b.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-fe6042f7628b.expect.md @@ -2,7 +2,7 @@ ## Input ```javascript -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" // This is valid because "use"-prefixed functions called in // unnamed function arguments are not assumed to be hooks. unknownFunction(function (foo, bar) { @@ -16,7 +16,7 @@ unknownFunction(function (foo, bar) { ## Code ```javascript -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" // This is valid because "use"-prefixed functions called in // unnamed function arguments are not assumed to be hooks. unknownFunction(function (foo, bar) { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-fe6042f7628b.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-fe6042f7628b.js index b7744c5ff7..95a724663a 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-fe6042f7628b.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/rules-of-hooks-fe6042f7628b.js @@ -1,4 +1,4 @@ -// @compilationMode:"infer" +// @expectNothingCompiled @compilationMode:"infer" // This is valid because "use"-prefixed functions called in // unnamed function arguments are not assumed to be hooks. unknownFunction(function (foo, bar) { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-191029ac48c8.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-191029ac48c8.expect.md index 2ec80a9fc9..b1f8550330 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-191029ac48c8.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-191029ac48c8.expect.md @@ -2,7 +2,7 @@ ## Input ```javascript -// @skip +// @expectNothingCompiled @skip // Passed but should have failed // Invalid because it's dangerous. @@ -22,7 +22,7 @@ useCustomHook(); ## Code ```javascript -// @skip +// @expectNothingCompiled @skip // Passed but should have failed // Invalid because it's dangerous. diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-191029ac48c8.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-191029ac48c8.js index 0f00a827ea..e1a391a45f 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-191029ac48c8.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-191029ac48c8.js @@ -1,4 +1,4 @@ -// @skip +// @expectNothingCompiled @skip // Passed but should have failed // Invalid because it's dangerous. diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-206e2811c87c.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-206e2811c87c.expect.md index ebc33e5ccf..223984b16d 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-206e2811c87c.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-206e2811c87c.expect.md @@ -2,7 +2,7 @@ ## Input ```javascript -// @skip +// @expectNothingCompiled @skip // Passed but should have failed // This is a false positive (it's valid) that unfortunately @@ -20,7 +20,7 @@ class Foo extends Component { ## Code ```javascript -// @skip +// @expectNothingCompiled @skip // Passed but should have failed // This is a false positive (it's valid) that unfortunately diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-206e2811c87c.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-206e2811c87c.js index 872f5805ba..42172c4a29 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-206e2811c87c.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-206e2811c87c.js @@ -1,4 +1,4 @@ -// @skip +// @expectNothingCompiled @skip // Passed but should have failed // This is a false positive (it's valid) that unfortunately diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-28a7111f56a7.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-28a7111f56a7.expect.md index 9c7fe66d45..00cdc93300 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-28a7111f56a7.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-28a7111f56a7.expect.md @@ -2,7 +2,7 @@ ## Input ```javascript -// @skip +// @expectNothingCompiled @skip // Passed but should have failed // Technically this is a false positive. @@ -23,7 +23,7 @@ const browserHistory = useBasename(createHistory)({ ## Code ```javascript -// @skip +// @expectNothingCompiled @skip // Passed but should have failed // Technically this is a false positive. diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-28a7111f56a7.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-28a7111f56a7.js index e3b940b3ac..bf1818fcd0 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-28a7111f56a7.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-28a7111f56a7.js @@ -1,4 +1,4 @@ -// @skip +// @expectNothingCompiled @skip // Passed but should have failed // Technically this is a false positive. diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-2c51251df67a.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-2c51251df67a.expect.md index c0649482d8..841e00a8de 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-2c51251df67a.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-2c51251df67a.expect.md @@ -2,7 +2,7 @@ ## Input ```javascript -// @skip +// @expectNothingCompiled @skip // Passed but should have failed (class { @@ -16,7 +16,7 @@ ## Code ```javascript -// @skip +// @expectNothingCompiled @skip // Passed but should have failed (class { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-2c51251df67a.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-2c51251df67a.js index fe81885397..b19cc40461 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-2c51251df67a.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-2c51251df67a.js @@ -1,4 +1,4 @@ -// @skip +// @expectNothingCompiled @skip // Passed but should have failed (class { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-8303403b8e4c.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-8303403b8e4c.expect.md index 26c4a63175..abc4a6e311 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-8303403b8e4c.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-8303403b8e4c.expect.md @@ -2,7 +2,7 @@ ## Input ```javascript -// @skip +// @expectNothingCompiled @skip // Passed but should have failed class ClassComponentWithHook extends React.Component { @@ -16,7 +16,7 @@ class ClassComponentWithHook extends React.Component { ## Code ```javascript -// @skip +// @expectNothingCompiled @skip // Passed but should have failed class ClassComponentWithHook extends React.Component { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-8303403b8e4c.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-8303403b8e4c.js index b373065d7c..33772904be 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-8303403b8e4c.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-8303403b8e4c.js @@ -1,4 +1,4 @@ -// @skip +// @expectNothingCompiled @skip // Passed but should have failed class ClassComponentWithHook extends React.Component { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-99b5c750d1d1.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-99b5c750d1d1.expect.md index fdba1ca765..ac850326cd 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-99b5c750d1d1.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-99b5c750d1d1.expect.md @@ -2,7 +2,7 @@ ## Input ```javascript -// @skip +// @expectNothingCompiled @skip // Passed but should have failed class ClassComponentWithFeatureFlag extends React.Component { @@ -18,7 +18,7 @@ class ClassComponentWithFeatureFlag extends React.Component { ## Code ```javascript -// @skip +// @expectNothingCompiled @skip // Passed but should have failed class ClassComponentWithFeatureFlag extends React.Component { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-99b5c750d1d1.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-99b5c750d1d1.js index da52cf2ac5..ceba22aab5 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-99b5c750d1d1.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-99b5c750d1d1.js @@ -1,4 +1,4 @@ -// @skip +// @expectNothingCompiled @skip // Passed but should have failed class ClassComponentWithFeatureFlag extends React.Component { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-9c79feec4b9b.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-9c79feec4b9b.expect.md index ecdca8a2a8..ea4618a3ae 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-9c79feec4b9b.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-9c79feec4b9b.expect.md @@ -2,7 +2,7 @@ ## Input ```javascript -// @skip +// @expectNothingCompiled @skip // Passed but should have failed (class { @@ -16,7 +16,7 @@ ## Code ```javascript -// @skip +// @expectNothingCompiled @skip // Passed but should have failed (class { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-9c79feec4b9b.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-9c79feec4b9b.js index 6f974e4919..85becd79c0 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-9c79feec4b9b.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-9c79feec4b9b.js @@ -1,4 +1,4 @@ -// @skip +// @expectNothingCompiled @skip // Passed but should have failed (class { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-acb56658fe7e.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-acb56658fe7e.expect.md index 20b1fd657b..b02d4618ab 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-acb56658fe7e.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-acb56658fe7e.expect.md @@ -2,7 +2,7 @@ ## Input ```javascript -// @skip +// @expectNothingCompiled @skip // Passed but should have failed class C { @@ -17,7 +17,7 @@ class C { ## Code ```javascript -// @skip +// @expectNothingCompiled @skip // Passed but should have failed class C { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-acb56658fe7e.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-acb56658fe7e.js index 6f0bf274ca..1ffb432d2f 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-acb56658fe7e.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-acb56658fe7e.js @@ -1,4 +1,4 @@ -// @skip +// @expectNothingCompiled @skip // Passed but should have failed class C { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-ddeca9708b63.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-ddeca9708b63.expect.md index 10080ab54f..6df2619e7c 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-ddeca9708b63.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-ddeca9708b63.expect.md @@ -2,7 +2,7 @@ ## Input ```javascript -// @skip +// @expectNothingCompiled @skip // Passed but should have failed (class { @@ -16,7 +16,7 @@ ## Code ```javascript -// @skip +// @expectNothingCompiled @skip // Passed but should have failed (class { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-ddeca9708b63.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-ddeca9708b63.js index bbf89905a8..40f21937a5 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-ddeca9708b63.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-ddeca9708b63.js @@ -1,4 +1,4 @@ -// @skip +// @expectNothingCompiled @skip // Passed but should have failed (class { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-e69ffce323c3.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-e69ffce323c3.expect.md index 3b57c7a398..5f826b9709 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-e69ffce323c3.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-e69ffce323c3.expect.md @@ -2,7 +2,7 @@ ## Input ```javascript -// @skip +// @expectNothingCompiled @skip // Passed but should have failed (class { @@ -16,7 +16,7 @@ ## Code ```javascript -// @skip +// @expectNothingCompiled @skip // Passed but should have failed (class { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-e69ffce323c3.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-e69ffce323c3.js index 48d03d62bc..adf9e80002 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-e69ffce323c3.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/todo.invalid.invalid-rules-of-hooks-e69ffce323c3.js @@ -1,4 +1,4 @@ -// @skip +// @expectNothingCompiled @skip // Passed but should have failed (class { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/skip-useMemoCache.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/skip-useMemoCache.expect.md index 9c7248a4c9..accf3475a7 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/skip-useMemoCache.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/skip-useMemoCache.expect.md @@ -2,6 +2,7 @@ ## Input ```javascript +// @expectNothingCompiled import {c as useMemoCache} from 'react/compiler-runtime'; function Component(props) { @@ -26,6 +27,7 @@ export const FIXTURE_ENTRYPOINT = { ## Code ```javascript +// @expectNothingCompiled import { c as useMemoCache } from "react/compiler-runtime"; function Component(props) { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/skip-useMemoCache.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/skip-useMemoCache.js index fe342b111d..2ef71aca58 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/skip-useMemoCache.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/skip-useMemoCache.js @@ -1,3 +1,4 @@ +// @expectNothingCompiled import {c as useMemoCache} from 'react/compiler-runtime'; function Component(props) { diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-no-forget-with-no-errors.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-no-forget-with-no-errors.expect.md index 20acbe0153..da77446a4f 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-no-forget-with-no-errors.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-no-forget-with-no-errors.expect.md @@ -2,6 +2,7 @@ ## Input ```javascript +// @expectNothingCompiled function Component() { 'use no forget'; return
Hello World
; @@ -18,6 +19,7 @@ export const FIXTURE_ENTRYPOINT = { ## Code ```javascript +// @expectNothingCompiled function Component() { "use no forget"; return
Hello World
; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-no-forget-with-no-errors.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-no-forget-with-no-errors.js index 934487160d..0361c5efe8 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-no-forget-with-no-errors.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-no-forget-with-no-errors.js @@ -1,3 +1,4 @@ +// @expectNothingCompiled function Component() { 'use no forget'; return
Hello World
; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-no-memo-simple.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-no-memo-simple.expect.md index b1ab8030bc..dff0f514f9 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-no-memo-simple.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-no-memo-simple.expect.md @@ -2,6 +2,7 @@ ## Input ```javascript +// @expectNothingCompiled function Component(props) { 'use no memo'; let x = [props.foo]; @@ -19,6 +20,7 @@ export const FIXTURE_ENTRYPOINT = { ## Code ```javascript +// @expectNothingCompiled function Component(props) { "use no memo"; let x = [props.foo]; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-no-memo-simple.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-no-memo-simple.js index 5070368e8b..fb370a29bf 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-no-memo-simple.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-no-memo-simple.js @@ -1,3 +1,4 @@ +// @expectNothingCompiled function Component(props) { 'use no memo'; let x = [props.foo]; diff --git a/compiler/packages/snap/src/compiler.ts b/compiler/packages/snap/src/compiler.ts index cafe869244..1ad2b81ef3 100644 --- a/compiler/packages/snap/src/compiler.ts +++ b/compiler/packages/snap/src/compiler.ts @@ -52,7 +52,11 @@ function makePluginOptions( EffectEnum: typeof Effect, ValueKindEnum: typeof ValueKind, ValueReasonEnum: typeof ValueReason, -): [PluginOptions, Array<{filename: string | null; event: LoggerEvent}>] { +): { + options: PluginOptions; + loggerTestOnly: boolean; + logs: Array<{filename: string | null; event: LoggerEvent}>; +} { // TODO(@mofeiZ) rewrite snap fixtures to @validatePreserveExistingMemo:false let validatePreserveExistingMemoizationGuarantees = false; let target: CompilerReactTarget = '19'; @@ -69,13 +73,12 @@ function makePluginOptions( validatePreserveExistingMemoizationGuarantees = true; } + const loggerTestOnly = firstLine.includes('@loggerTestOnly'); const logs: Array<{filename: string | null; event: LoggerEvent}> = []; const logger: Logger = { - logEvent: firstLine.includes('@loggerTestOnly') - ? (filename, event) => { - logs.push({filename, event}); - } - : () => {}, + logEvent: (filename, event) => { + logs.push({filename, event}); + }, debugLogIRs: debugIRLogger, }; @@ -96,7 +99,7 @@ function makePluginOptions( enableReanimatedCheck: false, target, }; - return [options, logs]; + return {options, loggerTestOnly, logs}; } export function parseInput( @@ -245,7 +248,7 @@ export async function transformFixtureInput( /** * Get Forget compiled code */ - const [options, logs] = makePluginOptions( + const {options, loggerTestOnly, logs} = makePluginOptions( firstLine, parseConfigPragmaFn, debugIRLogger, @@ -342,7 +345,7 @@ export async function transformFixtureInput( } const forgetOutput = await format(forgetCode, language); let formattedLogs = null; - if (logs.length !== 0) { + if (loggerTestOnly && logs.length !== 0) { formattedLogs = logs .map(({event}) => { return JSON.stringify(event, (key, value) => { @@ -358,6 +361,23 @@ export async function transformFixtureInput( }) .join('\n'); } + const expectNothingCompiled = + firstLine.indexOf('@expectNothingCompiled') !== -1; + const successFailures = logs.filter( + log => + log.event.kind === 'CompileSuccess' || log.event.kind === 'CompileError', + ); + if (successFailures.length === 0 && !expectNothingCompiled) { + return { + kind: 'err', + msg: 'No success/failure events, add `// @expectNothingCompiled` to the first line if this is expected', + }; + } else if (successFailures.length !== 0 && expectNothingCompiled) { + return { + kind: 'err', + msg: 'Expected nothing to be compiled (from `// @expectNothingCompiled`), but some functions compiled or errored', + }; + } return { kind: 'ok', value: {