Skip to content

fix(transformer): ignore invalid JSX pragma identifiers#19296

Merged
graphite-app[bot] merged 1 commit intomainfrom
fix-16653-invalid-jsxfrag-pragma
Feb 12, 2026
Merged

fix(transformer): ignore invalid JSX pragma identifiers#19296
graphite-app[bot] merged 1 commit intomainfrom
fix-16653-invalid-jsxfrag-pragma

Conversation

@Boshen
Copy link
Member

@Boshen Boshen commented Feb 12, 2026

Summary

  • keep pragma validation centralized in classic JSX pragma parsing (Pragma::parse_impl)
  • ignore invalid non-empty pragma values (for example `) by falling back to default classic pragmas
  • simplify the change by removing duplicated comment-level pragma validation and extra diagnostics/tests
  • keep one focused regression test for invalid pragma fallback

Fixes #16653.

Testing

  • cargo test -p oxc_transformer invalid_pragma_falls_back_to_default
  • cargo test -p oxc_transformer test_find_jsx_pragma
  • just lint

AI Usage Disclosure

  • This change was drafted with AI assistance (Codex / GPT-5).

Copilot AI review requested due to automatic review settings February 12, 2026 06:11
@github-actions github-actions bot added A-transformer Area - Transformer / Transpiler C-bug Category - Bug labels Feb 12, 2026
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR hardens classic JSX pragma parsing in oxc_transformer by validating pragma strings before constructing pragma expressions, so invalid values (e.g. `) are ignored and the transformer falls back to defaults (notably React.Fragment).

Changes:

  • Validate classic JSX pragma strings during parsing and fall back to defaults when invalid.
  • Emit the existing invalid_pragma diagnostic for invalid non-empty pragma values in the test-only parse path.
  • Add a regression test ensuring an invalid pragma input falls back to React.Fragment.

@codspeed-hq
Copy link

codspeed-hq bot commented Feb 12, 2026

Merging this PR will not alter performance

✅ 47 untouched benchmarks
⏩ 3 skipped benchmarks1


Comparing fix-16653-invalid-jsxfrag-pragma (cf37b7b) with main (1957908)

Open in CodSpeed

Footnotes

  1. 3 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@Boshen Boshen added the 0-merge Merge with Graphite Merge Queue label Feb 12, 2026
Copy link
Member Author

Boshen commented Feb 12, 2026

Merge activity

## Summary
- keep pragma validation centralized in classic JSX pragma parsing (`Pragma::parse_impl`)
- ignore invalid non-empty pragma values (for example `` ` ``) by falling back to default classic pragmas
- simplify the change by removing duplicated comment-level pragma validation and extra diagnostics/tests
- keep one focused regression test for invalid pragma fallback

Fixes #16653.

## Testing
- `cargo test -p oxc_transformer invalid_pragma_falls_back_to_default`
- `cargo test -p oxc_transformer test_find_jsx_pragma`
- `just lint`

## AI Usage Disclosure
- This change was drafted with AI assistance (Codex / GPT-5).
@graphite-app graphite-app bot force-pushed the fix-16653-invalid-jsxfrag-pragma branch from cf37b7b to 41c50a5 Compare February 12, 2026 07:05
@graphite-app graphite-app bot merged commit 41c50a5 into main Feb 12, 2026
21 checks passed
@graphite-app graphite-app bot deleted the fix-16653-invalid-jsxfrag-pragma branch February 12, 2026 07:11
@graphite-app graphite-app bot removed the 0-merge Merge with Graphite Merge Queue label Feb 12, 2026
camc314 pushed a commit that referenced this pull request Feb 16, 2026
### 🚀 Features

- 429d876 semantic: Assign ast node ids during semantic build (#19263)
(Boshen)
- ebb80b3 ast: Add `node_id` field to all AST struct nodes (#18138)
(Boshen)

### 🐛 Bug Fixes

- bfb15a3 semantic: Make multi_index_vec clone panic-safe (#19299)
(Boshen)
- 41c50a5 transformer: Ignore invalid JSX pragma identifiers (#19296)
(Boshen)
- deed3d8 transformer: Remove unnecessary trailing expression in object
rest spread assignment (#19259) (Boshen)
- 5bdaacc transformer: Propagate source spans for sourcemap correctness
(#19258) (Boshen)
- 3e0e5ba isolated-declarations: Align readonly class array initializer
diagnostics with tsc (#19218) (camc314)

### ⚡ Performance

- c169c77 syntax: Optimize `is_identifier_name_patched` (#19386)
(sapphi-red)
- aa1e1a8 allocator: Inline BitSet accessors (#19331) (Boshen)
- 5b90d46 semantic: Improve SoA with multi index vec (#19138) (Boshen)
- 99ce2a6 isolated_declarations: Mark all diagnostic functions as
`#[cold]` (#19279) (camc314)
- dd0220f transformer: Remove TS-only nodes earlier in
`enter_statements` (#19166) (Dunqing)
- e5baf60 isolated-declarations: Replace hash collections with
index-based Vec (#19221) (Dunqing)

### 📚 Documentation

- 569aa61 rust: Add missing rustdocs and remove missing_docs lint attrs
(#19306) (Boshen)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-transformer Area - Transformer / Transpiler C-bug Category - Bug

Projects

None yet

Development

Successfully merging this pull request may close these issues.

transformer: `// @jsxFrag `` generates invalid code

2 participants