From 21bb8f9e75be24a7730c890409a53bc2120eef68 Mon Sep 17 00:00:00 2001 From: Joe Savona Date: Thu, 21 Mar 2024 17:12:08 -0700 Subject: [PATCH] Repro for inconsistent context/local variable reference We currently assume JSX element tags are always locals, and need to check which load kind to use. Fixed in the next PR. --- ...text-variable-as-jsx-element-tag.expect.md | 29 +++++++++++++++++++ ...odo-context-variable-as-jsx-element-tag.js | 9 ++++++ 2 files changed, 38 insertions(+) create mode 100644 compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.todo-context-variable-as-jsx-element-tag.expect.md create mode 100644 compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.todo-context-variable-as-jsx-element-tag.js diff --git a/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.todo-context-variable-as-jsx-element-tag.expect.md b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.todo-context-variable-as-jsx-element-tag.expect.md new file mode 100644 index 0000000000..69a7bf2c1e --- /dev/null +++ b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.todo-context-variable-as-jsx-element-tag.expect.md @@ -0,0 +1,29 @@ + +## Input + +```javascript +function Component(props) { + let Component = Foo; + + Component = useMemo(() => { + return Component; + }); + + return ; +} + +``` + + +## Error + +``` + 6 | }); + 7 | +> 8 | return ; + | ^^^^^^^^^ [ReactForget] Invariant: Expected all references to a variable to be consistently local or context references. Identifier Component$2 is referenced as a local variable, but was previously referenced as a context variable (8:8) + 9 | } + 10 | +``` + + \ No newline at end of file diff --git a/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.todo-context-variable-as-jsx-element-tag.js b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.todo-context-variable-as-jsx-element-tag.js new file mode 100644 index 0000000000..355d85f235 --- /dev/null +++ b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.todo-context-variable-as-jsx-element-tag.js @@ -0,0 +1,9 @@ +function Component(props) { + let Component = Foo; + + Component = useMemo(() => { + return Component; + }); + + return ; +}