From cae69a97753188e0d0d4250b22159e6dfc2e7ae4 Mon Sep 17 00:00:00 2001
From: Mike Pennisi <mike@mikepennisi.com>
Date: Mon, 15 Jan 2018 16:19:50 -0500
Subject: [PATCH] Refactor DeleteExpression tests for parsers

A number of tests for the parsing of the DeleteExpression production
were expressed using `eval`. This made the tests more complex than
necessary, and also prevented the tests from providing value to
ECMAScript parsers.

Remove the use of `eval` in the relevant tests and instead express the
expectations with literal source text. Remove superfluous tests which
only differed in the runtime semantics of source text that could not be
evaluated due to syntax errors.
---
 .../expressions/delete/11.4.1-3-a-1-s.js      | 15 ----
 .../expressions/delete/11.4.1-5-a-1-s.js      | 15 ----
 .../expressions/delete/11.4.1-5-a-10-s.js     | 15 ----
 .../expressions/delete/11.4.1-5-a-11-s.js     | 15 ----
 .../expressions/delete/11.4.1-5-a-12-s.js     | 15 ----
 .../expressions/delete/11.4.1-5-a-13-s.js     | 15 ----
 .../expressions/delete/11.4.1-5-a-14-s.js     | 15 ----
 .../expressions/delete/11.4.1-5-a-15-s.js     | 15 ----
 .../expressions/delete/11.4.1-5-a-16-s.js     | 15 ----
 .../expressions/delete/11.4.1-5-a-17-s.js     | 15 ----
 .../expressions/delete/11.4.1-5-a-18-s.js     | 15 ----
 .../expressions/delete/11.4.1-5-a-19-s.js     | 15 ----
 .../expressions/delete/11.4.1-5-a-2-s.js      | 17 ----
 .../expressions/delete/11.4.1-5-a-20-s.js     | 15 ----
 .../expressions/delete/11.4.1-5-a-21-s.js     | 15 ----
 .../expressions/delete/11.4.1-5-a-22-s.js     | 15 ----
 .../expressions/delete/11.4.1-5-a-23-s.js     | 15 ----
 .../expressions/delete/11.4.1-5-a-24-s.js     | 13 ---
 .../expressions/delete/11.4.1-5-a-25-s.js     | 15 ----
 .../expressions/delete/11.4.1-5-a-26-s.js     | 14 ----
 .../expressions/delete/11.4.1-5-a-3-s.js      | 13 ---
 .../expressions/delete/11.4.1-5-a-4-s.js      | 17 ----
 .../expressions/delete/11.4.1-5-a-5-s.js      | 15 ----
 .../expressions/delete/11.4.1-5-a-6-s.js      | 15 ----
 .../expressions/delete/11.4.1-5-a-7-s.js      | 15 ----
 .../expressions/delete/11.4.1-5-a-8-s.js      | 13 ---
 .../expressions/delete/11.4.1-5-a-9-s.js      | 15 ----
 .../language/expressions/delete/S11.4.1_A1.js | 83 ++++++++-----------
 .../expressions/delete/identifier-strict.js   | 15 ++++
 29 files changed, 48 insertions(+), 452 deletions(-)
 delete mode 100644 test/language/expressions/delete/11.4.1-3-a-1-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-1-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-10-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-11-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-12-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-13-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-14-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-15-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-16-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-17-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-18-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-19-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-2-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-20-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-21-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-22-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-23-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-24-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-25-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-26-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-3-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-4-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-5-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-6-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-7-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-8-s.js
 delete mode 100644 test/language/expressions/delete/11.4.1-5-a-9-s.js
 create mode 100644 test/language/expressions/delete/identifier-strict.js

diff --git a/test/language/expressions/delete/11.4.1-3-a-1-s.js b/test/language/expressions/delete/11.4.1-3-a-1-s.js
deleted file mode 100644
index cb66ac0321..0000000000
--- a/test/language/expressions/delete/11.4.1-3-a-1-s.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-3-a-1-s
-description: >
-    Strict Mode - SyntaxError is thrown when deleting an un-resolvable
-    reference
-flags: [onlyStrict]
----*/
-
-
-assert.throws(SyntaxError, function() {
-            eval("delete obj");
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-1-s.js b/test/language/expressions/delete/11.4.1-5-a-1-s.js
deleted file mode 100644
index 86575dd324..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-1-s.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-1-s
-description: >
-    Strict Mode - SyntaxError is thrown when deleting a variable which
-    is a primitive value type (number)
-flags: [onlyStrict]
----*/
-
-        var _11_4_1_5 = 5;
-assert.throws(SyntaxError, function() {
-            eval("delete _11_4_1_5;");
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-10-s.js b/test/language/expressions/delete/11.4.1-5-a-10-s.js
deleted file mode 100644
index a48304837a..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-10-s.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-10-s
-description: >
-    Strict Mode - SyntaxError is thrown when deleting a variable of
-    type Array
-flags: [onlyStrict]
----*/
-
-        var arrObj = [1,2,3];
-assert.throws(SyntaxError, function() {
-            eval("delete arrObj;");
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-11-s.js b/test/language/expressions/delete/11.4.1-5-a-11-s.js
deleted file mode 100644
index 49c29c283f..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-11-s.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-11-s
-description: >
-    Strict Mode - SyntaxError is thrown when deleting a variable of
-    type String
-flags: [onlyStrict]
----*/
-
-        var strObj = new String("abc");
-assert.throws(SyntaxError, function() {
-            eval("delete strObj;");
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-12-s.js b/test/language/expressions/delete/11.4.1-5-a-12-s.js
deleted file mode 100644
index 1b6c4d62b6..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-12-s.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-12-s
-description: >
-    Strict Mode - SyntaxError is thrown when deleting a variable of
-    type Boolean
-flags: [onlyStrict]
----*/
-
-        var boolObj = new Boolean(false);
-assert.throws(SyntaxError, function() {
-            eval("delete boolObj;");
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-13-s.js b/test/language/expressions/delete/11.4.1-5-a-13-s.js
deleted file mode 100644
index 7fd0268380..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-13-s.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-13-s
-description: >
-    Strict Mode - SyntaxError is thrown when deleting a variable of
-    type Number
-flags: [onlyStrict]
----*/
-
-        var numObj = new Number(0);
-assert.throws(SyntaxError, function() {
-            eval("delete numObj;");
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-14-s.js b/test/language/expressions/delete/11.4.1-5-a-14-s.js
deleted file mode 100644
index f9f20d490d..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-14-s.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-14-s
-description: >
-    Strict Mode - SyntaxError is thrown when deleting a variable of
-    type Date
-flags: [onlyStrict]
----*/
-
-        var dateObj = new Date();
-assert.throws(SyntaxError, function() {
-            eval("delete dateObj;");
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-15-s.js b/test/language/expressions/delete/11.4.1-5-a-15-s.js
deleted file mode 100644
index 38e873065a..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-15-s.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-15-s
-description: >
-    Strict Mode - SyntaxError is thrown when deleting a variable of
-    type RegExp
-flags: [onlyStrict]
----*/
-
-        var regObj = new RegExp();
-assert.throws(SyntaxError, function() {
-            eval("delete regObj;");
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-16-s.js b/test/language/expressions/delete/11.4.1-5-a-16-s.js
deleted file mode 100644
index cf730de501..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-16-s.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-16-s
-description: >
-    Strict Mode - SyntaxError is thrown when deleting a variable of
-    type Error
-flags: [onlyStrict]
----*/
-
-        var errObj = new Error();
-assert.throws(SyntaxError, function() {
-            eval("delete errObj;");
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-17-s.js b/test/language/expressions/delete/11.4.1-5-a-17-s.js
deleted file mode 100644
index 55ebf2e489..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-17-s.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-17-s
-description: >
-    Strict Mode - SyntaxError is thrown when deleting a variable of
-    type Arguments
-flags: [onlyStrict]
----*/
-
-
-assert.throws(SyntaxError, function() {
-            eval("var argObj = (function (a, b) { delete arguments; }(1, 2));");
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-18-s.js b/test/language/expressions/delete/11.4.1-5-a-18-s.js
deleted file mode 100644
index eb1af56e10..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-18-s.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-18-s
-description: >
-    Strict Mode - SyntaxError is thrown when deleting a built-in
-    (Object)
-flags: [onlyStrict]
----*/
-
-
-assert.throws(SyntaxError, function() {
-            eval("delete Object;");
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-19-s.js b/test/language/expressions/delete/11.4.1-5-a-19-s.js
deleted file mode 100644
index 442e22f0b9..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-19-s.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-19-s
-description: >
-    Strict Mode - SyntaxError is thrown when deleting a built-in
-    (Function)
-flags: [onlyStrict]
----*/
-
-
-assert.throws(SyntaxError, function() {
-            eval("delete Function;");
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-2-s.js b/test/language/expressions/delete/11.4.1-5-a-2-s.js
deleted file mode 100644
index b9afc1edf2..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-2-s.js
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-2-s
-description: >
-    Strict Mode - SyntaxError is thrown when deleting a function
-    parameter
-flags: [onlyStrict]
----*/
-
-        function funObj(x) {
-            eval("delete x;");
-        }
-assert.throws(SyntaxError, function() {
-            funObj(1);
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-20-s.js b/test/language/expressions/delete/11.4.1-5-a-20-s.js
deleted file mode 100644
index 456c4b3f07..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-20-s.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-20-s
-description: >
-    Strict Mode - SyntaxError is thrown when deleting a built-in
-    (Array)
-flags: [onlyStrict]
----*/
-
-
-assert.throws(SyntaxError, function() {
-            eval("delete Array;");
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-21-s.js b/test/language/expressions/delete/11.4.1-5-a-21-s.js
deleted file mode 100644
index 1bf9bd3ce1..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-21-s.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-21-s
-description: >
-    Strict Mode - SyntaxError is thrown when deleting a built-in
-    (String)
-flags: [onlyStrict]
----*/
-
-
-assert.throws(SyntaxError, function() {
-            eval("delete String;");
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-22-s.js b/test/language/expressions/delete/11.4.1-5-a-22-s.js
deleted file mode 100644
index 1e02b15aa7..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-22-s.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-22-s
-description: >
-    Strict Mode - SyntaxError is thrown when deleting a built-in
-    (Boolean)
-flags: [onlyStrict]
----*/
-
-
-assert.throws(SyntaxError, function() {
-            eval("delete Boolean;");
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-23-s.js b/test/language/expressions/delete/11.4.1-5-a-23-s.js
deleted file mode 100644
index e383430d8b..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-23-s.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-23-s
-description: >
-    Strict Mode - SyntaxError is thrown when deleting a built-in
-    (Number)
-flags: [onlyStrict]
----*/
-
-
-assert.throws(SyntaxError, function() {
-            eval("delete Number;");
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-24-s.js b/test/language/expressions/delete/11.4.1-5-a-24-s.js
deleted file mode 100644
index ef63b0579d..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-24-s.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-24-s
-description: Strict Mode - SyntaxError is thrown when deleting a built-in (Date)
-flags: [onlyStrict]
----*/
-
-
-assert.throws(SyntaxError, function() {
-            eval("delete Date;");
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-25-s.js b/test/language/expressions/delete/11.4.1-5-a-25-s.js
deleted file mode 100644
index 8484c985a3..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-25-s.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-25-s
-description: >
-    Strict Mode - SyntaxError is thrown when deleting a built-in
-    (RegExp)
-flags: [onlyStrict]
----*/
-
-
-assert.throws(SyntaxError, function() {
-            eval("delete RegExp;");
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-26-s.js b/test/language/expressions/delete/11.4.1-5-a-26-s.js
deleted file mode 100644
index 97a7061740..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-26-s.js
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-26-s
-description: >
-    Strict Mode - SyntaxError is thrown when deleting a built-in
-    (Error)
-flags: [onlyStrict]
----*/
-
-assert.throws(SyntaxError, function() {
-            eval("delete Error;");
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-3-s.js b/test/language/expressions/delete/11.4.1-5-a-3-s.js
deleted file mode 100644
index 224dd524e3..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-3-s.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-3-s
-description: Strict Mode - SyntaxError is thrown when deleting a function name
-flags: [onlyStrict]
----*/
-
-        function funObj () { }
-assert.throws(SyntaxError, function() {
-            eval("delete funObj");
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-4-s.js b/test/language/expressions/delete/11.4.1-5-a-4-s.js
deleted file mode 100644
index 93138ea90c..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-4-s.js
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-4-s
-description: >
-    Strict Mode - SyntaxError is thrown when deleting a function
-    parameter
-flags: [onlyStrict]
----*/
-
-        function funObj(x, y, z) {
-            eval("delete y;");
-        }
-assert.throws(SyntaxError, function() {
-            funObj(1);
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-5-s.js b/test/language/expressions/delete/11.4.1-5-a-5-s.js
deleted file mode 100644
index b6b12cc04c..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-5-s.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-5-s
-description: >
-    Strict Mode - SyntaxError is thrown when deleting a variable which
-    is a primitive type (boolean)
-flags: [onlyStrict]
----*/
-
-        var _11_4_1_5 = true;
-assert.throws(SyntaxError, function() {
-            eval("delete _11_4_1_5;");
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-6-s.js b/test/language/expressions/delete/11.4.1-5-a-6-s.js
deleted file mode 100644
index 1d30df158b..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-6-s.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-6-s
-description: >
-    Strict Mode - SyntaxError is thrown when deleting a variable which
-    is a primitive type (string)
-flags: [onlyStrict]
----*/
-
-        var _11_4_1_5 = "abc";
-assert.throws(SyntaxError, function() {
-            eval("delete _11_4_1_5;");
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-7-s.js b/test/language/expressions/delete/11.4.1-5-a-7-s.js
deleted file mode 100644
index b29661e7ec..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-7-s.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-7-s
-description: >
-    Strict Mode - SyntaxError is thrown when deleting a variable of
-    type Object
-flags: [onlyStrict]
----*/
-
-        var obj = new Object();
-assert.throws(SyntaxError, function() {
-            eval("delete obj;");
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-8-s.js b/test/language/expressions/delete/11.4.1-5-a-8-s.js
deleted file mode 100644
index 721bae15fd..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-8-s.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-8-s
-description: Strict Mode - SyntaxError is thrown when deleting a function object
-flags: [onlyStrict]
----*/
-
-        var funObj = function () { };
-assert.throws(SyntaxError, function() {
-            eval("delete funObj;");
-});
diff --git a/test/language/expressions/delete/11.4.1-5-a-9-s.js b/test/language/expressions/delete/11.4.1-5-a-9-s.js
deleted file mode 100644
index 0a5cf3622a..0000000000
--- a/test/language/expressions/delete/11.4.1-5-a-9-s.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2012 Ecma International.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-es5id: 11.4.1-5-a-9-s
-description: >
-    Strict Mode - SyntaxError is thrown when deleting a variable of
-    type function (declaration)
-flags: [onlyStrict]
----*/
-
-        function funObj () { };
-assert.throws(SyntaxError, function() {
-            eval("delete funObj;");
-});
diff --git a/test/language/expressions/delete/S11.4.1_A1.js b/test/language/expressions/delete/S11.4.1_A1.js
index df548bbeed..9be231ae61 100644
--- a/test/language/expressions/delete/S11.4.1_A1.js
+++ b/test/language/expressions/delete/S11.4.1_A1.js
@@ -1,6 +1,5 @@
 // Copyright 2009 the Sputnik authors.  All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
-
 /*---
 info: |
     White Space and Line Terminator between "delete" and UnaryExpression are
@@ -9,52 +8,36 @@ es5id: 11.4.1_A1
 description: Checking by using eval
 ---*/
 
-//CHECK#1
-if (eval("delete\u00090") !== true) {
-  $ERROR('#1: delete\\u00090 === true');
-}
-
-//CHECK#2
-if (eval("delete\u000B0") !== true) {
-  $ERROR('#2: delete\\u000B0 === true');  
-}
-
-//CHECK#3
-if (eval("delete\u000C0") !== true) {
-  $ERROR('#3: delete\\u000C0 === true');
-}
-
-//CHECK#4
-if (eval("delete\u00200") !== true) {
-  $ERROR('#4: delete\\u00200 === true');
-}
-
-//CHECK#5
-if (eval("delete\u00A00") !== true) {
-  $ERROR('#5: delete\\u00A00 === true');
-}
-
-//CHECK#6
-if (eval("delete\u000A0") !== true) {
-  $ERROR('#6: delete\\u000A0 === true');  
-}
-
-//CHECK#7
-if (eval("delete\u000D0") !== true) {
-  $ERROR('#7: delete\\u000D0 === true');
-}
-
-//CHECK#8
-if (eval("delete\u20280") !== true) {
-  $ERROR('#8: delete\\u20280 === true');
-}
-
-//CHECK#9
-if (eval("delete\u20290") !== true) {
-  $ERROR('#9: delete\\u20290 === true');
-}
-
-//CHECK#10
-if (eval("delete\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20290") !== true) {
-  $ERROR('#10: delete\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20290 === true');
-}
+var result;
+
+result = delete	0;
+assert.sameValue(result, true, '\\u0009');
+
+result = delete0;
+assert.sameValue(result, true, '\\u000B');
+
+result = delete0;
+assert.sameValue(result, true, '\\u000C');
+
+result = delete 0;
+assert.sameValue(result, true, '\\u0020');
+
+result = delete 0;
+assert.sameValue(result, true, '\\u00A0');
+
+result = delete
+0;
+assert.sameValue(result, true, '\\u000A');
+
+result = delete
0;
+assert.sameValue(result, true, '\\u000D');
+
+result = delete
0;
+assert.sameValue(result, true, '\\u2028');
+
+result = delete
0;
+assert.sameValue(result, true, '\\u2029');
+
+result = delete	  
+


0;
+assert.sameValue(result, true, '\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029');
diff --git a/test/language/expressions/delete/identifier-strict.js b/test/language/expressions/delete/identifier-strict.js
new file mode 100644
index 0000000000..362e3b8e91
--- /dev/null
+++ b/test/language/expressions/delete/identifier-strict.js
@@ -0,0 +1,15 @@
+// Copyright (c) 2018 Mike Pennisi.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-delete-operator-static-semantics-early-errors
+description: Parsing error when operand is an IdentifierReference
+info: |
+  It is a Syntax Error if the UnaryExpression is contained in strict mode code
+  and the derived UnaryExpression is PrimaryExpression:IdentifierReference.
+negative:
+  phase: parse
+  type: SyntaxError
+flags: [onlyStrict]
+---*/
+
+delete test262identifier;
-- 
GitLab