From a0aa66ca8f68bdc66f04e8aa55a7f41a52c41f0d Mon Sep 17 00:00:00 2001 From: Lauren Tan Date: Thu, 1 Feb 2024 11:02:30 -0500 Subject: [PATCH] Add test for function property mutation There were no previous test paths that tested it, so I'm adding the example from https://github.com/facebookexternal/forget-feedback/issues/32 as a fixture --- .../error.mutate-function-property.expect.md | 21 +++++++++++++++++++ .../error.mutate-function-property.js | 6 ++++++ 2 files changed, 27 insertions(+) create mode 100644 compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.mutate-function-property.expect.md create mode 100644 compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.mutate-function-property.js diff --git a/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.mutate-function-property.expect.md b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.mutate-function-property.expect.md new file mode 100644 index 0000000000..863bf529ea --- /dev/null +++ b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.mutate-function-property.expect.md @@ -0,0 +1,21 @@ + +## Input + +```javascript +export function ViewModeSelector(props) { + const renderIcon = () => ; + renderIcon.displayName = "AcceptIcon"; + + return ; +} + +``` + + +## Error + +``` +[ReactForget] InvalidReact: This mutates a global or a variable after it was passed to React, which means that React cannot observe changes to it. (3:3) +``` + + \ No newline at end of file diff --git a/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.mutate-function-property.js b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.mutate-function-property.js new file mode 100644 index 0000000000..1c545c9f61 --- /dev/null +++ b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.mutate-function-property.js @@ -0,0 +1,6 @@ +export function ViewModeSelector(props) { + const renderIcon = () => ; + renderIcon.displayName = "AcceptIcon"; + + return ; +}