Selaa lähdekoodia

LibJS: Report correct line/column for string literal syntax errors

We're passing a token to this function, so m_current_token is actually
the next token - which leads to incorrect line/column numbers for string
literal syntax errors:

    "\u"
        ^
    Uncaught exception: [SyntaxError]: Malformed unicode escape sequence (line: 1, column: 5)

Rather than:

    "\u"
    ^
    Uncaught exception: [SyntaxError]: Malformed unicode escape sequence (line: 1, column: 1)
Linus Groh 4 vuotta sitten
vanhempi
commit
9f036959e8
1 muutettua tiedostoa jossa 2 lisäystä ja 4 poistoa
  1. 2 4
      Libraries/LibJS/Parser.cpp

+ 2 - 4
Libraries/LibJS/Parser.cpp

@@ -849,10 +849,8 @@ NonnullRefPtr<StringLiteral> Parser::parse_string_literal(Token token)
             message = "Unicode code_point must not be greater than 0x10ffff in escape sequence";
             message = "Unicode code_point must not be greater than 0x10ffff in escape sequence";
         }
         }
 
 
-        syntax_error(
-            message,
-            m_parser_state.m_current_token.line_number(),
-            m_parser_state.m_current_token.line_column());
+        if (!message.is_empty())
+            syntax_error(message, token.line_number(), token.line_column());
     }
     }
 
 
     if (m_parser_state.m_use_strict_directive == UseStrictDirectiveState::Looking) {
     if (m_parser_state.m_use_strict_directive == UseStrictDirectiveState::Looking) {