1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-10 09:37:34 +00:00

LibJS: Disallow NumericLiteral immediately followed by Identifier

From the spec: https://tc39.es/ecma262/#sec-literals-numeric-literals

The SourceCharacter immediately following a NumericLiteral must not be
an IdentifierStart or DecimalDigit.

For example: 3in is an error and not the two input elements 3 and in.
This commit is contained in:
Linus Groh 2020-10-22 22:18:31 +01:00 committed by Andreas Kling
parent 80bb22788f
commit f8ae6fa713
2 changed files with 4 additions and 0 deletions

View file

@ -1827,6 +1827,8 @@ Token Parser::consume_and_validate_numeric_literal()
auto token = consume(TokenType::NumericLiteral);
if (m_parser_state.m_strict_mode && is_unprefixed_octal_number(token.value()))
syntax_error("Unprefixed octal number not allowed in strict mode", literal_start_line, literal_start_column);
if (match_identifier_name() && m_parser_state.m_current_token.trivia().is_empty())
syntax_error("Numeric literal must not be immediately followed by identifier");
return token;
}