Skip to content

Commit

Permalink
[compiler][repro] JSX escape sequences not printed correctly by @babe…
Browse files Browse the repository at this point in the history
…l/generator (#32130)

Repro for #32123

Note that this is only a bug when calling `@babel/generator:generate()`
before transforming JSX.
---
[//]: # (BEGIN SAPLING FOOTER)
Stack created with [Sapling](https://sapling-scm.com). Best reviewed
with [ReviewStack](https://reviewstack.dev/facebook/react/pull/32130).
* #32131
* __->__ #32130
  • Loading branch information
mofeiZ authored Jan 22, 2025
1 parent e5a2062 commit 1955744
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@

## Input

```javascript
/**
* Fixture showing `@babel/generator` bug with jsx attribute strings containing
* escape sequences. Note that this is only a problem when generating jsx
* literals.
*
* When using the jsx transform to correctly lower jsx into
* `React.createElement` calls, the escape sequences are preserved correctly
* (see evaluator output).
*/
function MyApp() {
return <input pattern="\w" />;
}

export const FIXTURE_ENTRYPOINT = {
fn: MyApp,
params: [],
};

```

## Code

```javascript
import { c as _c } from "react/compiler-runtime"; /**
* Fixture showing `@babel/generator` bug with jsx attribute strings containing
* escape sequences. Note that this is only a problem when generating jsx
* literals.
*
* When using the jsx transform to correctly lower jsx into
* `React.createElement` calls, the escape sequences are preserved correctly
* (see evaluator output).
*/
function MyApp() {
const $ = _c(1);
let t0;
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
t0 = <input pattern="\\w" />;
$[0] = t0;
} else {
t0 = $[0];
}
return t0;
}

export const FIXTURE_ENTRYPOINT = {
fn: MyApp,
params: [],
};

```
### Eval output
(kind: ok) <input pattern="\w">
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/**
* Fixture showing `@babel/generator` bug with jsx attribute strings containing
* escape sequences. Note that this is only a problem when generating jsx
* literals.
*
* When using the jsx transform to correctly lower jsx into
* `React.createElement` calls, the escape sequences are preserved correctly
* (see evaluator output).
*/
function MyApp() {
return <input pattern="\w" />;
}

export const FIXTURE_ENTRYPOINT = {
fn: MyApp,
params: [],
};

0 comments on commit 1955744

Please sign in to comment.