diff --git a/compiler/packages/babel-plugin-react-compiler/src/Entrypoint/Program.ts b/compiler/packages/babel-plugin-react-compiler/src/Entrypoint/Program.ts index 2880e9283c77..75b54a7dc7ec 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/Entrypoint/Program.ts +++ b/compiler/packages/babel-plugin-react-compiler/src/Entrypoint/Program.ts @@ -895,7 +895,7 @@ function hasMemoCacheFunctionImport( } function isHookName(s: string): boolean { - return /^use[A-Z0-9]/.test(s); + return /^use[A-Z0-9]/.test(s) || s === 'use'; } /* diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-operator-in-hook.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-operator-in-hook.expect.md new file mode 100644 index 000000000000..a22fc4e54100 --- /dev/null +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-operator-in-hook.expect.md @@ -0,0 +1,52 @@ + +## Input + +```javascript +// @compilationMode:"infer" +import {use} from 'react'; + +const MyContext = React.createContext(null); + +function useMyContext() { + const context = use(MyContext); + return [context]; +} + +export const FIXTURE_ENTRYPOINT = { + fn: useMyContext, + params: [], +}; + +``` + +## Code + +```javascript +import { c as _c } from "react/compiler-runtime"; // @compilationMode:"infer" +import { use } from "react"; + +const MyContext = React.createContext(null); + +function useMyContext() { + const $ = _c(2); + const context = use(MyContext); + let t0; + if ($[0] !== context) { + t0 = [context]; + $[0] = context; + $[1] = t0; + } else { + t0 = $[1]; + } + return t0; +} + +export const FIXTURE_ENTRYPOINT = { + fn: useMyContext, + params: [], +}; + +``` + +### Eval output +(kind: ok) [null] \ No newline at end of file diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-operator-in-hook.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-operator-in-hook.js new file mode 100644 index 000000000000..dfa92b78bf08 --- /dev/null +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/use-operator-in-hook.js @@ -0,0 +1,14 @@ +// @compilationMode:"infer" +import {use} from 'react'; + +const MyContext = React.createContext(null); + +function useMyContext() { + const context = use(MyContext); + return [context]; +} + +export const FIXTURE_ENTRYPOINT = { + fn: useMyContext, + params: [], +};