Open Jack-Works opened 2 years ago
npx esbuild --loader=jsx <<< 'const x = <video></\u0076ideo>'
> <stdin>:1:19: error: Expected identifier but found "\\"
1 │ const x = <video></\u0076ideo>
╵ ^
1 error
Thanks for catching this! Since implementation already diverged on this, I think we need some discussion and reach a consensus before making this change.
Actually only typescript accepts Unicode escape sequences. Maybe a LGTM from the Typescript team is enough.
Happy to disallow this from the TypeScript side
hi! Since TypeScript merges https://github.com/microsoft/TypeScript/pull/48609, now this is consistent behavior across the most common transpilers in the ecosystem, that is disallows UnicodeEscapeSequence in JSXIdentifier. I think this PR can be merged now. I don't know who I can ping because Huxpro has left Meta. Maybe @sebmarkbage? Please take a look, thanks!
hi! Since TypeScript merges microsoft/TypeScript#48609, now this is consistent behavior across the most common transpilers in the ecosystem, that is disallows UnicodeEscapeSequence in JSXIdentifier. I think this PR can be merged now. I don't know who I can ping because Huxpro has left Meta. Maybe @sebmarkbage? Please take a look, thanks!
Thanks @Jack-Works! @sebmarkbage actually left before me 😂.
I'm supportive of this change. Maybe @poteto can take a look?
For the following code:
TypeScript: accept this syntax
TypeScript: reject this syntax after https://github.com/microsoft/TypeScript/pull/48609
Babel: syntax error
swc: syntax error
esbuild:
npx esbuild --loader=jsx <<< 'const x = <video></\u0076ideo>'
Suggested change
Disallows UnicodeEscapeSequence in the JSXIdentifier
Another path
Allow UnicodeEscapeSequence but require them to match in the opening and the closing tag, which means
<video></\u0076ideo>
is a syntax error (tag mismatch) but<\u0076ideo />
is OK.