Skip to content

Commit 9262a59

Browse files
authored
fix(es/parser): consider reseved ident in jsx name (#10647)
Fixes #10646
1 parent bfd3bc5 commit 9262a59

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

crates/swc_ecma_parser/src/lexer/state.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,12 +262,16 @@ impl crate::input::Tokens for Lexer<'_> {
262262
}
263263
}
264264
let v = if !v.is_empty() {
265-
let v = if let Some(TokenValue::Word(value)) = self.state.token_value.take() {
265+
let v = if token.is_known_ident() {
266+
format!("{}{}", token.to_string(None), v)
267+
} else if let Some(TokenValue::Word(value)) = self.state.token_value.take() {
266268
format!("{value}{v}")
267269
} else {
268270
format!("{}{}", token.to_string(None), v)
269271
};
270272
self.atom(v)
273+
} else if token.is_known_ident() {
274+
self.atom(token.to_string(None))
271275
} else if let Some(TokenValue::Word(value)) = self.state.token_value.take() {
272276
value
273277
} else {
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<input data={window.foo} type="text" />;
2+
<input data={window.foo} type-abc="text" />;
3+
<input data={window.foo} type-type="text" />;
4+
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/*#__PURE__*/ React.createElement("input", {
2+
data: window.foo,
3+
type: "text"
4+
});
5+
/*#__PURE__*/ React.createElement("input", {
6+
data: window.foo,
7+
"type-abc": "text"
8+
});
9+
/*#__PURE__*/ React.createElement("input", {
10+
data: window.foo,
11+
"type-type": "text"
12+
});

0 commit comments

Comments
 (0)