Skip to content

treat backslash before <ls> or <ps> as a line continuation - #4361

Open
dxbjavid wants to merge 1 commit into
google:masterfrom
dxbjavid:ls-ps-line-continuation
Open

dxbjavid wants to merge 1 commit into
google:masterfrom
dxbjavid:ls-ps-line-continuation

Conversation

@dxbjavid

Copy link
Copy Markdown
Contributor

A backslash followed by U+2028 or U+2029 is a line continuation in ECMAScript, the same as one before a newline, but the scanner and IRFactory.normalizeString only recognised LF and CR, so the separator was silently kept in the compiled string. For example "one<LS>two" came out as "one\u2028two" (length 7, where node gives "onetwo", length 6) with a misleading unnecessary escape warning, and a template literal had the same wrong cooked value, which then leaked into the output when transpiling to ES5. This treats LS and PS like LF in both places, which I believe matches the spec and V8, and adds cases to the existing line continuation tests in ParserTest.

ECMAScript LineTerminatorSequence includes U+2028 and U+2029, so a
backslash followed by either is a LineContinuation with an empty string
value. The scanner and normalizeString only handled LF and CR, so the
separator was kept in string literals and in template cooked values.
@lauraharker lauraharker self-assigned this Oct 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants