diff --git a/Libraries/LibJS/Parser.cpp b/Libraries/LibJS/Parser.cpp index 1596e64651..457e189011 100644 --- a/Libraries/LibJS/Parser.cpp +++ b/Libraries/LibJS/Parser.cpp @@ -328,6 +328,8 @@ NonnullRefPtr Parser::parse_statement() case TokenType::While: return parse_while_statement(); case TokenType::With: + if (m_parser_state.m_strict_mode) + syntax_error("'with' statement not allowed in strict mode"); return parse_with_statement(); case TokenType::Debugger: return parse_debugger_statement(); diff --git a/Libraries/LibJS/Tests/with-basic.js b/Libraries/LibJS/Tests/with-basic.js index a5bdbf4e41..a1029ef621 100644 --- a/Libraries/LibJS/Tests/with-basic.js +++ b/Libraries/LibJS/Tests/with-basic.js @@ -18,3 +18,7 @@ test("basic with statement functionality", () => { expect(bar).toBe(99); }); + +test("syntax error in strict mode", () => { + expect("'use strict'; with (foo) {}").not.toEval(); +});