From d6a967cc89a2e5737369006dae49c5d4c8eb313b Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Mon, 3 Mar 2025 13:40:34 -0500 Subject: [PATCH] [compiler][fire] Fire syntax changes --- .../src/Transform/TransformFire.ts | 165 ++++++++++++------ .../bailout-capitalized-fn-call.expect.md | 6 +- .../bailout-capitalized-fn-call.js | 6 +- .../bailout-eslint-suppressions.expect.md | 6 +- .../bailout-eslint-suppressions.js | 6 +- .../bailout-validate-preserve-memo.expect.md | 6 +- .../bailout-validate-preserve-memo.js | 6 +- .../bailout-validate-prop-write.expect.md | 2 +- .../bailout-validate-prop-write.js | 2 +- ...lout-validate-ref-current-access.expect.md | 4 +- .../bailout-validate-ref-current-access.js | 4 +- .../bailout-retry/error.todo-syntax.expect.md | 4 +- .../bailout-retry/error.todo-syntax.js | 2 +- .../bailout-retry/todo-use-no-memo.expect.md | 12 +- .../bailout-retry/todo-use-no-memo.js | 6 +- ...ailout-validate-conditional-hook.expect.md | 2 +- .../bailout-validate-conditional-hook.js | 2 +- .../compiler/transform-fire/basic.expect.md | 2 +- .../fixtures/compiler/transform-fire/basic.js | 2 +- .../transform-fire/deep-scope.expect.md | 2 +- .../compiler/transform-fire/deep-scope.js | 2 +- ...ror.invalid-mix-fire-and-no-fire.expect.md | 4 +- .../error.invalid-mix-fire-and-no-fire.js | 2 +- .../error.invalid-multiple-args.expect.md | 6 +- .../error.invalid-multiple-args.js | 2 +- .../error.invalid-not-call.expect.md | 18 +- .../transform-fire/error.invalid-not-call.js | 4 +- .../error.invalid-outside-effect.expect.md | 8 +- .../error.invalid-outside-effect.js | 4 +- ...id-rewrite-deps-no-array-literal.expect.md | 4 +- ...r.invalid-rewrite-deps-no-array-literal.js | 2 +- ...rror.invalid-rewrite-deps-spread.expect.md | 4 +- .../error.invalid-rewrite-deps-spread.js | 2 +- .../error.invalid-spread.expect.md | 6 +- .../transform-fire/error.invalid-spread.js | 2 +- .../error.todo-method.expect.md | 6 +- .../transform-fire/error.todo-method.js | 2 +- .../fire-and-autodeps.expect.md | 2 +- .../transform-fire/fire-and-autodeps.js | 2 +- .../transform-fire/multiple-scope.expect.md | 6 +- .../compiler/transform-fire/multiple-scope.js | 6 +- .../transform-fire/repeated-calls.expect.md | 4 +- .../compiler/transform-fire/repeated-calls.js | 4 +- .../transform-fire/rewrite-deps.expect.md | 2 +- .../compiler/transform-fire/rewrite-deps.js | 2 +- .../shared-hook-calls.expect.md | 6 +- .../transform-fire/shared-hook-calls.js | 6 +- 47 files changed, 219 insertions(+), 146 deletions(-) diff --git a/compiler/packages/babel-plugin-react-compiler/src/Transform/TransformFire.ts b/compiler/packages/babel-plugin-react-compiler/src/Transform/TransformFire.ts index a480b5d7c78de..eea17bd9c4b99 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/Transform/TransformFire.ts +++ b/compiler/packages/babel-plugin-react-compiler/src/Transform/TransformFire.ts @@ -34,7 +34,7 @@ import { import {createTemporaryPlace, markInstructionIds} from '../HIR/HIRBuilder'; import {getOrInsertWith} from '../Utils/utils'; import {BuiltInFireId, DefaultNonmutatingHook} from '../HIR/ObjectShape'; -import {eachInstructionOperand} from '../HIR/visitors'; +import {eachCallArgument, eachInstructionOperand} from '../HIR/visitors'; import {printSourceLocationLine} from '../HIR/PrintHIR'; /* @@ -48,6 +48,8 @@ const CANNOT_COMPILE_FIRE = 'Cannot compile `fire`'; export function transformFire(fn: HIRFunction): void { const context = new Context(fn.env); + ensureSecondClassUsage(fn, context); + context.throwIfErrorsFound(); replaceFireFunctions(fn, context); if (!context.hasErrors()) { ensureNoMoreFireUses(fn, context); @@ -186,7 +188,7 @@ function replaceFireFunctions(fn: HIRFunction, context: Context): void { context.inUseEffectLambda() ) { /* - * We found a fire(callExpr()) call. We remove the `fire()` call and replace the callExpr() + * We found a fire(identifier) call. We remove the `fire()` call and replace the callExpr() * with a freshly generated fire function binding. We'll insert the useFire call before the * useEffect call, which happens in the CallExpression (useEffect) case above. */ @@ -196,48 +198,36 @@ function replaceFireFunctions(fn: HIRFunction, context: Context): void { * TODO: add support for method calls: `fire(this.method())` */ if (value.args.length === 1 && value.args[0].kind === 'Identifier') { - const callExpr = context.getCallExpression( - value.args[0].identifier.id, - ); - - if (callExpr != null) { - const calleeId = callExpr.callee.identifier.id; - const loadLocal = context.getLoadLocalInstr(calleeId); - if (loadLocal == null) { - context.pushError({ - loc: value.loc, - description: null, - severity: ErrorSeverity.Invariant, - reason: - '[InsertFire] No loadLocal found for fire call argument', - suggestions: null, - }); - continue; - } - - const fireFunctionBinding = - context.getOrGenerateFireFunctionBinding( - loadLocal.place, - value.loc, - ); - - loadLocal.place = {...fireFunctionBinding}; - - // Delete the fire call expression - deleteInstrs.add(instr.id); - } else { + const callee = value.args[0]; + // TODO: This value must be captured by the useEffect lambda + const loadLocal = context.getLoadLocalInstr(callee.identifier.id); + if (loadLocal == null) { context.pushError({ loc: value.loc, - description: - '`fire()` can only receive a function call such as `fire(fn(a,b)). Method calls and other expressions are not allowed', + description: `fire() can only be called with an identifier as an argument, like fire(myFunction)(myArgument)`, severity: ErrorSeverity.InvalidReact, reason: CANNOT_COMPILE_FIRE, suggestions: null, }); + continue; } + + const fireFunctionBinding = context.getOrGenerateFireFunctionBinding( + loadLocal.place, + value.loc, + ); + + context.addFireCallResultToReplacedBinding( + instr.lvalue.identifier.id, + fireFunctionBinding, + ); + + loadLocal.place = {...fireFunctionBinding}; + + deleteInstrs.add(instr.id); } else { let description: string = - 'fire() can only take in a single call expression as an argument'; + 'fire() can only take in a single identifier as an argument'; if (value.args.length === 0) { description += ' but received none'; } else if (value.args.length > 1) { @@ -254,7 +244,12 @@ function replaceFireFunctions(fn: HIRFunction, context: Context): void { }); } } else if (value.kind === 'CallExpression') { - context.addCallExpression(lvalue.identifier.id, value); + const callToFire = context.getFireCallResultToReplacedBinding( + value.callee.identifier.id, + ); + if (callToFire != null) { + value.callee = callToFire; + } } else if ( value.kind === 'FunctionExpression' && context.inUseEffectLambda() @@ -404,6 +399,80 @@ function ensureNoMoreFireUses(fn: HIRFunction, context: Context): void { } } +/* + * Fire calls must be linearly consumed as the callee of another call expression. All + * of these usages are syntax errors: + * 1. fire(props); + * 2. f(fire(props)); + * 3 const fireFunction = fire(props); + * 4. fire(fire(props)); + * + * We run this check *before* we do the transform because it is much simpler to implement + * by ensuring that a fire call lvalue is only ever used as a callee. + */ +function ensureSecondClassUsage(fn: HIRFunction, context: Context): void { + const fireCallLvalues = new Map(); + const consumedFireCallLvalues = new Set(); + const addInvalidUseError = (id: IdentifierId, loc: SourceLocation): void => { + consumedFireCallLvalues.add(id); + context.pushError({ + loc, + description: + '`fire()` expressions can only be called, like fire(myFunction)(myArguments)', + severity: ErrorSeverity.InvalidReact, + reason: CANNOT_COMPILE_FIRE, + suggestions: null, + }); + }; + for (const [, block] of fn.body.blocks) { + for (const instr of block.instructions) { + const {value, lvalue} = instr; + if (value.kind === 'CallExpression') { + if ( + value.callee.identifier.type.kind === 'Function' && + value.callee.identifier.type.shapeId === BuiltInFireId + ) { + fireCallLvalues.set(lvalue.identifier.id, lvalue.loc); + } else { + if (fireCallLvalues.has(value.callee.identifier.id)) { + consumedFireCallLvalues.add(value.callee.identifier.id); + } + } + for (const argPlace of eachCallArgument(value.args)) { + if (fireCallLvalues.has(argPlace.identifier.id)) { + addInvalidUseError(argPlace.identifier.id, argPlace.loc); + } + } + } else if ( + value.kind === 'FunctionExpression' || + value.kind === 'ObjectMethod' + ) { + ensureSecondClassUsage(value.loweredFunc.func, context); + } else { + for (const place of eachInstructionOperand(instr)) { + if (fireCallLvalues.has(place.identifier.id)) { + addInvalidUseError(place.identifier.id, place.loc); + } + } + } + } + } + + // Ensure every fire call was consumed + for (const [fireCallId, loc] of fireCallLvalues.entries()) { + if (!consumedFireCallLvalues.has(fireCallId)) { + context.pushError({ + loc: loc, + description: + '`fire(myFunction)` will not do anything on its own, you need to call the result like `fire(myFunction)(myArgument)`', + severity: ErrorSeverity.InvalidReact, + reason: CANNOT_COMPILE_FIRE, + suggestions: null, + }); + } + } +} + function makeLoadUseFireInstruction(env: Environment): Instruction { const useFirePlace = createTemporaryPlace(env, GeneratedSource); useFirePlace.effect = Effect.Read; @@ -515,12 +584,6 @@ class Context { #errors: CompilerError = new CompilerError(); - /* - * Used to look up the call expression passed to a `fire(callExpr())`. Gives back - * the `callExpr()`. - */ - #callExpressions = new Map(); - /* * We keep track of function expressions so that we can traverse them when * we encounter a lambda passed to a useEffect call @@ -565,10 +628,20 @@ class Context { */ #loadGlobalInstructionIds = new Map(); + #fireCallResultsToReplacedBindings = new Map(); + constructor(env: Environment) { this.#env = env; } + addFireCallResultToReplacedBinding(id: IdentifierId, binding: Place): void { + this.#fireCallResultsToReplacedBindings.set(id, binding); + } + + getFireCallResultToReplacedBinding(id: IdentifierId): Place | undefined { + return this.#fireCallResultsToReplacedBindings.get(id); + } + /* * We keep track of array expressions so we can rewrite dependency arrays passed to useEffect * to use the fire functions @@ -599,14 +672,6 @@ class Context { return resultCapturedCalleeIdentifierIds; } - addCallExpression(id: IdentifierId, callExpr: CallExpression): void { - this.#callExpressions.set(id, callExpr); - } - - getCallExpression(id: IdentifierId): CallExpression | undefined { - return this.#callExpressions.get(id); - } - addLoadLocalInstr(id: IdentifierId, loadLocal: LoadLocal): void { this.#loadLocals.set(id, loadLocal); } diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-capitalized-fn-call.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-capitalized-fn-call.expect.md index f7f413dedf906..56962319924db 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-capitalized-fn-call.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-capitalized-fn-call.expect.md @@ -11,9 +11,9 @@ function Component({prop1, bar}) { console.log(prop1); }; useEffect(() => { - fire(foo(prop1)); - fire(foo()); - fire(bar()); + fire(foo)(prop1); + fire(foo)(); + fire(bar)(); }); return CapitalizedCall(); diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-capitalized-fn-call.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-capitalized-fn-call.js index b872fd8670e8e..352975ea46f3c 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-capitalized-fn-call.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-capitalized-fn-call.js @@ -7,9 +7,9 @@ function Component({prop1, bar}) { console.log(prop1); }; useEffect(() => { - fire(foo(prop1)); - fire(foo()); - fire(bar()); + fire(foo)(prop1); + fire(foo)(); + fire(bar)(); }); return CapitalizedCall(); diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-eslint-suppressions.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-eslint-suppressions.expect.md index ad7f0ab467b00..529aa5c106eef 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-eslint-suppressions.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-eslint-suppressions.expect.md @@ -10,9 +10,9 @@ function Component({props, bar}) { console.log(props); }; useEffect(() => { - fire(foo(props)); - fire(foo()); - fire(bar()); + fire(foo)(props); + fire(foo)(); + fire(bar)(); }); const ref = useRef(null); diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-eslint-suppressions.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-eslint-suppressions.js index 7145fef03b1d4..0dbeb1ef55240 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-eslint-suppressions.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-eslint-suppressions.js @@ -6,9 +6,9 @@ function Component({props, bar}) { console.log(props); }; useEffect(() => { - fire(foo(props)); - fire(foo()); - fire(bar()); + fire(foo)(props); + fire(foo)(); + fire(bar)(); }); const ref = useRef(null); diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-validate-preserve-memo.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-validate-preserve-memo.expect.md index 9f8db6265f064..6655b52306b13 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-validate-preserve-memo.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-validate-preserve-memo.expect.md @@ -11,9 +11,9 @@ function Component({prop1, bar}) { console.log(prop1); }; useEffect(() => { - fire(foo(prop1)); - fire(foo()); - fire(bar()); + fire(foo)(prop1); + fire(foo)(); + fire(bar)(); }); return useMemo(() => sum(bar), []); diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-validate-preserve-memo.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-validate-preserve-memo.js index b7c01e40ac2a5..1c0e91fd97dd9 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-validate-preserve-memo.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-validate-preserve-memo.js @@ -7,9 +7,9 @@ function Component({prop1, bar}) { console.log(prop1); }; useEffect(() => { - fire(foo(prop1)); - fire(foo()); - fire(bar()); + fire(foo)(prop1); + fire(foo)(); + fire(bar)(); }); return useMemo(() => sum(bar), []); diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-validate-prop-write.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-validate-prop-write.expect.md index 74d9f679c4ffd..bbf060c6f8b51 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-validate-prop-write.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-validate-prop-write.expect.md @@ -10,7 +10,7 @@ function Component({prop1}) { console.log(prop1); }; useEffect(() => { - fire(foo(prop1)); + fire(foo)(prop1); }); prop1.value += 1; } diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-validate-prop-write.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-validate-prop-write.js index 4fac46f78e81c..f4acaf07fbe76 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-validate-prop-write.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-validate-prop-write.js @@ -6,7 +6,7 @@ function Component({prop1}) { console.log(prop1); }; useEffect(() => { - fire(foo(prop1)); + fire(foo)(prop1); }); prop1.value += 1; } diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-validate-ref-current-access.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-validate-ref-current-access.expect.md index af0fc7b5a2f26..3c9cb2c9c77b2 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-validate-ref-current-access.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-validate-ref-current-access.expect.md @@ -11,9 +11,9 @@ component Component(prop1, ref) { console.log(prop1); }; useEffect(() => { - fire(foo(prop1)); + fire(foo)(prop1); bar(); - fire(foo()); + fire(foo)(); }); print(ref.current); diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-validate-ref-current-access.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-validate-ref-current-access.js index 96ccf0b161e93..0eefa46705a65 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-validate-ref-current-access.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/bailout-validate-ref-current-access.js @@ -7,9 +7,9 @@ component Component(prop1, ref) { console.log(prop1); }; useEffect(() => { - fire(foo(prop1)); + fire(foo)(prop1); bar(); - fire(foo()); + fire(foo)(); }); print(ref.current); diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/error.todo-syntax.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/error.todo-syntax.expect.md index 86836d86b6092..7ae42a4b054dc 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/error.todo-syntax.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/error.todo-syntax.expect.md @@ -19,7 +19,7 @@ function Component({prop1}) { } }; useEffect(() => { - fire(foo()); + fire(foo)(); }); } @@ -43,7 +43,7 @@ function Component({prop1}) { | ^^^^^^ Todo: (BuildHIR::lowerStatement) Handle TryStatement without a catch clause (11:15) 16 | }; 17 | useEffect(() => { - 18 | fire(foo()); + 18 | fire(foo)(); ``` \ No newline at end of file diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/error.todo-syntax.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/error.todo-syntax.js index ec50ed84c5780..f481a941fd590 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/error.todo-syntax.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/error.todo-syntax.js @@ -15,6 +15,6 @@ function Component({prop1}) { } }; useEffect(() => { - fire(foo()); + fire(foo)(); }); } diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/todo-use-no-memo.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/todo-use-no-memo.expect.md index 907501228b10b..cede72ca4ba18 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/todo-use-no-memo.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/todo-use-no-memo.expect.md @@ -11,9 +11,9 @@ function Component({props, bar}) { console.log(props); }; useEffect(() => { - fire(foo(props)); - fire(foo()); - fire(bar()); + fire(foo)(props); + fire(foo)(); + fire(bar)(); }); return null; @@ -33,9 +33,9 @@ function Component({ props, bar }) { console.log(props); }; useEffect(() => { - fire(foo(props)); - fire(foo()); - fire(bar()); + fire(foo)(props); + fire(foo)(); + fire(bar)(); }); return null; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/todo-use-no-memo.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/todo-use-no-memo.js index 2587e24ee1170..ad42a1052d1c8 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/todo-use-no-memo.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-retry/todo-use-no-memo.js @@ -7,9 +7,9 @@ function Component({props, bar}) { console.log(props); }; useEffect(() => { - fire(foo(props)); - fire(foo()); - fire(bar()); + fire(foo)(props); + fire(foo)(); + fire(bar)(); }); return null; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-validate-conditional-hook.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-validate-conditional-hook.expect.md index c20f89d3af8d2..2460c35031256 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-validate-conditional-hook.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-validate-conditional-hook.expect.md @@ -17,7 +17,7 @@ function Component(props) { if (props.cond) { useEffect(() => { - fire(foo(props)); + fire(foo)(props); }); } diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-validate-conditional-hook.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-validate-conditional-hook.js index 0a29fd852c030..8a93f4a55cea5 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-validate-conditional-hook.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/bailout-validate-conditional-hook.js @@ -13,7 +13,7 @@ function Component(props) { if (props.cond) { useEffect(() => { - fire(foo(props)); + fire(foo)(props); }); } diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/basic.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/basic.expect.md index 8d8bc179a245a..277dad731e9e6 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/basic.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/basic.expect.md @@ -10,7 +10,7 @@ function Component(props) { console.log(props); }; useEffect(() => { - fire(foo(props)); + fire(foo)(props); }); return null; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/basic.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/basic.js index 2f7a72e4eed51..a1d86b3da28dd 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/basic.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/basic.js @@ -6,7 +6,7 @@ function Component(props) { console.log(props); }; useEffect(() => { - fire(foo(props)); + fire(foo)(props); }); return null; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/deep-scope.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/deep-scope.expect.md index a335fea8867b9..cabc62edeada1 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/deep-scope.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/deep-scope.expect.md @@ -13,7 +13,7 @@ function Component(props) { function nested() { function nestedAgain() { function nestedThrice() { - fire(foo(props)); + fire(foo)(props); } nestedThrice(); } diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/deep-scope.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/deep-scope.js index b056c3f53a85a..f92250473fab6 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/deep-scope.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/deep-scope.js @@ -9,7 +9,7 @@ function Component(props) { function nested() { function nestedAgain() { function nestedThrice() { - fire(foo(props)); + fire(foo)(props); } nestedThrice(); } diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-mix-fire-and-no-fire.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-mix-fire-and-no-fire.expect.md index e73451a896ee4..54b12f9a0f25a 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-mix-fire-and-no-fire.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-mix-fire-and-no-fire.expect.md @@ -11,7 +11,7 @@ function Component(props) { }; useEffect(() => { function nested() { - fire(foo(props)); + fire(foo)(props); foo(props); } @@ -28,7 +28,7 @@ function Component(props) { ``` 9 | function nested() { - 10 | fire(foo(props)); + 10 | fire(foo)(props); > 11 | foo(props); | ^^^ InvalidReact: Cannot compile `fire`. All uses of foo must be either used with a fire() call in this effect or not used with a fire() call at all. foo was used with fire() on line 10:10 in this effect (11:11) 12 | } diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-mix-fire-and-no-fire.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-mix-fire-and-no-fire.js index ee2f915a34ed5..d122d211951b1 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-mix-fire-and-no-fire.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-mix-fire-and-no-fire.js @@ -7,7 +7,7 @@ function Component(props) { }; useEffect(() => { function nested() { - fire(foo(props)); + fire(foo)(props); foo(props); } diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-multiple-args.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-multiple-args.expect.md index 8329717cb3939..d94ec58c3f784 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-multiple-args.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-multiple-args.expect.md @@ -10,7 +10,7 @@ function Component({bar, baz}) { console.log(bar, baz); }; useEffect(() => { - fire(foo(bar), baz); + fire(foo(bar), baz)(); }); return null; @@ -24,8 +24,8 @@ function Component({bar, baz}) { ``` 7 | }; 8 | useEffect(() => { -> 9 | fire(foo(bar), baz); - | ^^^^^^^^^^^^^^^^^^^ InvalidReact: Cannot compile `fire`. fire() can only take in a single call expression as an argument but received multiple arguments (9:9) +> 9 | fire(foo(bar), baz)(); + | ^^^^^^^^^^^^^^^^^^^ InvalidReact: Cannot compile `fire`. fire() can only take in a single identifier as an argument but received multiple arguments (9:9) 10 | }); 11 | 12 | return null; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-multiple-args.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-multiple-args.js index 980b0dfcb5e78..38bd773613de4 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-multiple-args.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-multiple-args.js @@ -6,7 +6,7 @@ function Component({bar, baz}) { console.log(bar, baz); }; useEffect(() => { - fire(foo(bar), baz); + fire(foo(bar), baz)(); }); return null; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-not-call.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-not-call.expect.md index 855c7b7d706cb..e05a6a3bf3c0b 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-not-call.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-not-call.expect.md @@ -10,7 +10,9 @@ function Component(props) { console.log(props); }; useEffect(() => { - fire(props); + foo(fire(props)); // Can't be used as a function argument + const stored = fire(foo); // Cannot be assigned + fire(props); // Invalid as an expression statement }); return null; @@ -24,11 +26,15 @@ function Component(props) { ``` 7 | }; 8 | useEffect(() => { -> 9 | fire(props); - | ^^^^^^^^^^^ InvalidReact: Cannot compile `fire`. `fire()` can only receive a function call such as `fire(fn(a,b)). Method calls and other expressions are not allowed (9:9) - 10 | }); - 11 | - 12 | return null; +> 9 | foo(fire(props)); // Can't be used as a function argument + | ^^^^^^^^^^^ InvalidReact: Cannot compile `fire`. `fire()` expressions can only be called, like fire(myFunction)(myArguments) (9:9) + +InvalidReact: Cannot compile `fire`. `fire()` expressions can only be called, like fire(myFunction)(myArguments) (10:10) + +InvalidReact: Cannot compile `fire`. `fire(myFunction)` will not do anything on its own, you need to call the result like `fire(myFunction)(myArgument)` (11:11) + 10 | const stored = fire(foo); // Cannot be assigned + 11 | fire(props); // Invalid as an expression statement + 12 | }); ``` \ No newline at end of file diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-not-call.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-not-call.js index 3d1ae3658fd20..6edf9842a29d7 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-not-call.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-not-call.js @@ -6,7 +6,9 @@ function Component(props) { console.log(props); }; useEffect(() => { - fire(props); + foo(fire(props)); // Can't be used as a function argument + const stored = fire(foo); // Cannot be assigned + fire(props); // Invalid as an expression statement }); return null; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-outside-effect.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-outside-effect.expect.md index 687a21f98cdb4..ddd76a4073aac 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-outside-effect.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-outside-effect.expect.md @@ -9,10 +9,10 @@ function Component({props, bar}) { const foo = () => { console.log(props); }; - fire(foo(props)); + fire(foo)(props); useCallback(() => { - fire(foo(props)); + fire(foo)(props); }, [foo, props]); return null; @@ -26,13 +26,13 @@ function Component({props, bar}) { ``` 6 | console.log(props); 7 | }; -> 8 | fire(foo(props)); +> 8 | fire(foo)(props); | ^^^^ Invariant: Cannot compile `fire`. Cannot use `fire` outside of a useEffect function (8:8) Invariant: Cannot compile `fire`. Cannot use `fire` outside of a useEffect function (11:11) 9 | 10 | useCallback(() => { - 11 | fire(foo(props)); + 11 | fire(foo)(props); ``` \ No newline at end of file diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-outside-effect.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-outside-effect.js index 8ac9be6d7648f..21b2c326a8e38 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-outside-effect.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-outside-effect.js @@ -5,10 +5,10 @@ function Component({props, bar}) { const foo = () => { console.log(props); }; - fire(foo(props)); + fire(foo)(props); useCallback(() => { - fire(foo(props)); + fire(foo)(props); }, [foo, props]); return null; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-rewrite-deps-no-array-literal.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-rewrite-deps-no-array-literal.expect.md index dcd9312bb2e53..3c81d3f0c05d6 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-rewrite-deps-no-array-literal.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-rewrite-deps-no-array-literal.expect.md @@ -13,7 +13,7 @@ function Component(props) { const deps = [foo, props]; useEffect(() => { - fire(foo(props)); + fire(foo)(props); }, deps); return null; @@ -26,7 +26,7 @@ function Component(props) { ``` 11 | useEffect(() => { - 12 | fire(foo(props)); + 12 | fire(foo)(props); > 13 | }, deps); | ^^^^ Invariant: Cannot compile `fire`. You must use an array literal for an effect dependency array when that effect uses `fire()` (13:13) 14 | diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-rewrite-deps-no-array-literal.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-rewrite-deps-no-array-literal.js index b82f735425efa..7a4823b865b6f 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-rewrite-deps-no-array-literal.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-rewrite-deps-no-array-literal.js @@ -9,7 +9,7 @@ function Component(props) { const deps = [foo, props]; useEffect(() => { - fire(foo(props)); + fire(foo)(props); }, deps); return null; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-rewrite-deps-spread.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-rewrite-deps-spread.expect.md index 91c5523564cdd..2b5bd2232f1a5 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-rewrite-deps-spread.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-rewrite-deps-spread.expect.md @@ -14,7 +14,7 @@ function Component(props) { useEffect( () => { - fire(foo(props)); + fire(foo)(props); }, ...deps ); @@ -28,7 +28,7 @@ function Component(props) { ## Error ``` - 13 | fire(foo(props)); + 13 | fire(foo)(props); 14 | }, > 15 | ...deps | ^^^^ Invariant: Cannot compile `fire`. You must use an array literal for an effect dependency array when that effect uses `fire()` (15:15) diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-rewrite-deps-spread.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-rewrite-deps-spread.js index 27d1de4f463d6..66050fed3f724 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-rewrite-deps-spread.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-rewrite-deps-spread.js @@ -10,7 +10,7 @@ function Component(props) { useEffect( () => { - fire(foo(props)); + fire(foo)(props); }, ...deps ); diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-spread.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-spread.expect.md index c0b797fc14471..a0d95347b19d9 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-spread.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-spread.expect.md @@ -10,7 +10,7 @@ function Component(props) { console.log(props); }; useEffect(() => { - fire(...foo); + fire(...foo)(); }); return null; @@ -24,8 +24,8 @@ function Component(props) { ``` 7 | }; 8 | useEffect(() => { -> 9 | fire(...foo); - | ^^^^^^^^^^^^ InvalidReact: Cannot compile `fire`. fire() can only take in a single call expression as an argument but received a spread argument (9:9) +> 9 | fire(...foo)(); + | ^^^^^^^^^^^^ InvalidReact: Cannot compile `fire`. fire() can only take in a single identifier as an argument but received a spread argument (9:9) 10 | }); 11 | 12 | return null; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-spread.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-spread.js index 68e317588bd51..c3f98888ba9f2 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-spread.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.invalid-spread.js @@ -6,7 +6,7 @@ function Component(props) { console.log(props); }; useEffect(() => { - fire(...foo); + fire(...foo)(); }); return null; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.todo-method.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.todo-method.expect.md index 3f237cfc6f364..9ee4c17a58124 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.todo-method.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.todo-method.expect.md @@ -10,7 +10,7 @@ function Component(props) { console.log(props); }; useEffect(() => { - fire(props.foo()); + fire(props.foo)(); }); return null; @@ -24,8 +24,8 @@ function Component(props) { ``` 7 | }; 8 | useEffect(() => { -> 9 | fire(props.foo()); - | ^^^^^^^^^^^^^^^^^ InvalidReact: Cannot compile `fire`. `fire()` can only receive a function call such as `fire(fn(a,b)). Method calls and other expressions are not allowed (9:9) +> 9 | fire(props.foo)(); + | ^^^^^^^^^^^^^^^ InvalidReact: Cannot compile `fire`. fire() can only be called with an identifier as an argument, like fire(myFunction)(myArgument) (9:9) 10 | }); 11 | 12 | return null; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.todo-method.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.todo-method.js index c75622ca5e7a3..7095d1ced43c9 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.todo-method.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/error.todo-method.js @@ -6,7 +6,7 @@ function Component(props) { console.log(props); }; useEffect(() => { - fire(props.foo()); + fire(props.foo)(); }); return null; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/fire-and-autodeps.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/fire-and-autodeps.expect.md index 5767ff0746c1b..5e5bc15b62635 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/fire-and-autodeps.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/fire-and-autodeps.expect.md @@ -10,7 +10,7 @@ function Component(props) { console.log(arg, props.bar); }; useEffect(() => { - fire(foo(props)); + fire(foo)(props); }); return null; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/fire-and-autodeps.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/fire-and-autodeps.js index e2a0068a19067..e4ce5938f5d91 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/fire-and-autodeps.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/fire-and-autodeps.js @@ -6,7 +6,7 @@ function Component(props) { console.log(arg, props.bar); }; useEffect(() => { - fire(foo(props)); + fire(foo)(props); }); return null; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/multiple-scope.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/multiple-scope.expect.md index 02f3935171253..0e58bc54ba51f 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/multiple-scope.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/multiple-scope.expect.md @@ -10,11 +10,11 @@ function Component(props) { console.log(props); }; useEffect(() => { - fire(foo(props)); + fire(foo)(props); function nested() { - fire(foo(props)); + fire(foo)(props); function innerNested() { - fire(foo(props)); + fire(foo)(props); } } diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/multiple-scope.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/multiple-scope.js index 54410680e63c6..01febf07b3687 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/multiple-scope.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/multiple-scope.js @@ -6,11 +6,11 @@ function Component(props) { console.log(props); }; useEffect(() => { - fire(foo(props)); + fire(foo)(props); function nested() { - fire(foo(props)); + fire(foo)(props); function innerNested() { - fire(foo(props)); + fire(foo)(props); } } diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/repeated-calls.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/repeated-calls.expect.md index 1734ca3ab4584..a6ba9ec41acb5 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/repeated-calls.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/repeated-calls.expect.md @@ -10,8 +10,8 @@ function Component(props) { console.log(props); }; useEffect(() => { - fire(foo(props)); - fire(foo(props)); + fire(foo)(props); + fire(foo)(props); }); return null; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/repeated-calls.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/repeated-calls.js index 14e1cb06b1bbe..9f3a5f58d1652 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/repeated-calls.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/repeated-calls.js @@ -6,8 +6,8 @@ function Component(props) { console.log(props); }; useEffect(() => { - fire(foo(props)); - fire(foo(props)); + fire(foo)(props); + fire(foo)(props); }); return null; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/rewrite-deps.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/rewrite-deps.expect.md index ae71f60393281..8641909473127 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/rewrite-deps.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/rewrite-deps.expect.md @@ -10,7 +10,7 @@ function Component(props) { console.log(props); }; useEffect(() => { - fire(foo(props)); + fire(foo)(props); }, [foo, props]); return null; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/rewrite-deps.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/rewrite-deps.js index ad1af704c1bcc..c2751c7a73892 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/rewrite-deps.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/rewrite-deps.js @@ -6,7 +6,7 @@ function Component(props) { console.log(props); }; useEffect(() => { - fire(foo(props)); + fire(foo)(props); }, [foo, props]); return null; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/shared-hook-calls.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/shared-hook-calls.expect.md index 9b689b31c7ba0..3b2be66780699 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/shared-hook-calls.expect.md +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/shared-hook-calls.expect.md @@ -10,12 +10,12 @@ function Component({bar, baz}) { console.log(bar); }; useEffect(() => { - fire(foo(bar)); - fire(baz(bar)); + fire(foo)(bar); + fire(baz)(bar); }); useEffect(() => { - fire(foo(bar)); + fire(foo)(bar); }); return null; diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/shared-hook-calls.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/shared-hook-calls.js index 5cb51e9bd3c78..de66da02cab0c 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/shared-hook-calls.js +++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/transform-fire/shared-hook-calls.js @@ -6,12 +6,12 @@ function Component({bar, baz}) { console.log(bar); }; useEffect(() => { - fire(foo(bar)); - fire(baz(bar)); + fire(foo)(bar); + fire(baz)(bar); }); useEffect(() => { - fire(foo(bar)); + fire(foo)(bar); }); return null;