Fix React.forwardRef parameter handling in JSX v4 transformation #7778
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The React.forwardRef transformation was incorrectly treating the
ref
parameter as an optional argument instead of a positional argument, causing compilation errors in v12.Problem
React.forwardRef functions were failing to compile with the error:
This affected code like:
Root Cause
In the JSX v4 transformation, the
ref
parameter was being processed asOptional {txt = "ref"}
instead ofNolabel
. This created a mismatch where:(props, ~ref=?) => ...
fn(props, ref)
Solution
Modified
recursively_transform_named_args_for_make
injsx_v4.ml
to treat theref
parameter as a positional argument (Nolabel
) instead of optional (Optional
). This ensures the function signature matches the calling convention:(props, ref) => ...
fn(props, ref)
✓The fix aligns with the JSX V4 specification where React.forwardRef should generate:
Fixes #7738.
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.