mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 00:27:43 +00:00
LibJS: Treat '\\' as an escaped character in template literals
Before this change we would ignore that the second backslash is escaped and template strings ending with ` \\` would be unterminated as the second slash was used to escape the closing quote.
This commit is contained in:
parent
8e624c8f6d
commit
b3edd94869
2 changed files with 11 additions and 1 deletions
|
@ -610,8 +610,15 @@ Token Lexer::next()
|
|||
consume();
|
||||
m_template_states.last().in_expr = true;
|
||||
} else {
|
||||
// TemplateCharacter ::
|
||||
// $ [lookahead ≠ {]
|
||||
// \ TemplateEscapeSequence
|
||||
// \ NotEscapeSequence
|
||||
// LineContinuation
|
||||
// LineTerminatorSequence
|
||||
// SourceCharacter but not one of ` or \ or $ or LineTerminator
|
||||
while (!match('$', '{') && m_current_char != '`' && !is_eof()) {
|
||||
if (match('\\', '$') || match('\\', '`'))
|
||||
if (match('\\', '$') || match('\\', '`') || match('\\', '\\'))
|
||||
consume();
|
||||
consume();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue