Index: src/parser.cc |
diff --git a/src/parser.cc b/src/parser.cc |
index 04d510f2fdcf174fe9615e7e871fc20ae236ff2d..036ec4060d06f8db001e632d1e2e0bcdd87b2f77 100644 |
--- a/src/parser.cc |
+++ b/src/parser.cc |
@@ -2521,6 +2521,16 @@ Expression* Parser::ParseUnaryExpression(bool* ok) { |
} |
} |
+ // "delete identifier" is a syntax error in strict mode. |
+ if (op == Token::DELETE && temp_scope_->StrictMode()) { |
+ VariableProxy* operand = expression->AsVariableProxy(); |
+ if (operand != NULL && !operand->is_this()) { |
+ ReportMessage("strict_delete", Vector<const char*>::empty()); |
+ *ok = false; |
+ return NULL; |
+ } |
+ } |
+ |
return new UnaryOperation(op, expression); |
} else if (Token::IsCountOp(op)) { |