diff --git a/Libraries/LibJS/Parser.cpp b/Libraries/LibJS/Parser.cpp index 2e72f07717..97b46d8db9 100644 --- a/Libraries/LibJS/Parser.cpp +++ b/Libraries/LibJS/Parser.cpp @@ -816,6 +816,16 @@ NonnullRefPtr Parser::parse_secondary_expression(NonnullRefPtr(); } + if (m_parser_state.m_strict_mode && lhs->is_identifier()) { + auto name = static_cast(*lhs).string(); + if (name == "eval" || name == "arguments") { + syntax_error( + String::format("'%s' cannot be assigned to in strict mode code", name.characters()), + m_parser_state.m_current_token.line_number(), + m_parser_state.m_current_token.line_column() + ); + } + } return create_ast_node(AssignmentOp::Assignment, move(lhs), parse_expression(min_precedence, associativity)); case TokenType::Period: consume();