From 2ac5f1766e9344fa90595bddcb63ae803dcc97db Mon Sep 17 00:00:00 2001
From: Leo Balter <leonardo.balter@gmail.com>
Date: Tue, 16 Oct 2018 16:54:56 -0400
Subject: [PATCH] Add tests for delete expression returning true on non
 reference types

---
 .../language/expressions/delete/11.4.1-2-1.js | 11 ------
 .../language/expressions/delete/11.4.1-2-3.js | 13 -------
 .../language/expressions/delete/11.4.1-2-4.js | 11 ------
 .../language/expressions/delete/11.4.1-2-5.js | 11 ------
 .../language/expressions/delete/11.4.1-2-6.js | 11 ------
 .../delete/non-reference-return-true.js       | 34 +++++++++++++++++++
 6 files changed, 34 insertions(+), 57 deletions(-)
 delete mode 100644 test/language/expressions/delete/11.4.1-2-1.js
 delete mode 100644 test/language/expressions/delete/11.4.1-2-3.js
 delete mode 100644 test/language/expressions/delete/11.4.1-2-4.js
 delete mode 100644 test/language/expressions/delete/11.4.1-2-5.js
 delete mode 100644 test/language/expressions/delete/11.4.1-2-6.js
 create mode 100644 test/language/expressions/delete/non-reference-return-true.js

diff --git a/test/language/expressions/delete/11.4.1-2-1.js b/test/language/expressions/delete/11.4.1-2-1.js
deleted file mode 100644
index 19a1de7fdd..0000000000
--- a/test/language/expressions/delete/11.4.1-2-1.js
+++ /dev/null
@@ -1,11 +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-2-1
-description: delete operator returns true when deleting a non-reference (number)
----*/
-
-  var d = delete 42;
-
-assert.sameValue(d, true, 'd');
diff --git a/test/language/expressions/delete/11.4.1-2-3.js b/test/language/expressions/delete/11.4.1-2-3.js
deleted file mode 100644
index dbd9737074..0000000000
--- a/test/language/expressions/delete/11.4.1-2-3.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-2-3
-description: >
-    delete operator returns true when deleting a non-reference
-    (boolean)
----*/
-
-  var d = delete true;
-
-assert.sameValue(d, true, 'd');
diff --git a/test/language/expressions/delete/11.4.1-2-4.js b/test/language/expressions/delete/11.4.1-2-4.js
deleted file mode 100644
index fbad9c12f3..0000000000
--- a/test/language/expressions/delete/11.4.1-2-4.js
+++ /dev/null
@@ -1,11 +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-2-4
-description: delete operator returns true when deleting a non-reference (string)
----*/
-
-  var d = delete "abc";
-
-assert.sameValue(d, true, 'd');
diff --git a/test/language/expressions/delete/11.4.1-2-5.js b/test/language/expressions/delete/11.4.1-2-5.js
deleted file mode 100644
index cbceca7dae..0000000000
--- a/test/language/expressions/delete/11.4.1-2-5.js
+++ /dev/null
@@ -1,11 +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-2-5
-description: delete operator returns true when deleting a non-reference (obj)
----*/
-
-  var d = delete {a:0} ;
-
-assert.sameValue(d, true, 'd');
diff --git a/test/language/expressions/delete/11.4.1-2-6.js b/test/language/expressions/delete/11.4.1-2-6.js
deleted file mode 100644
index 97cfc995cb..0000000000
--- a/test/language/expressions/delete/11.4.1-2-6.js
+++ /dev/null
@@ -1,11 +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-2-6
-description: delete operator returns true when deleting a non-reference (null)
----*/
-
-  var d = delete null;
-
-assert.sameValue(d, true, 'd');
diff --git a/test/language/expressions/delete/non-reference-return-true.js b/test/language/expressions/delete/non-reference-return-true.js
new file mode 100644
index 0000000000..6fa643f32f
--- /dev/null
+++ b/test/language/expressions/delete/non-reference-return-true.js
@@ -0,0 +1,34 @@
+// Copyright (c) 2018 Leo Balter.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-delete-operator-runtime-semantics-evaluation
+description: >
+  The delete expression should return true if the right hand UnaryExpression is not a Reference
+info: |
+  Runtime Semantics: Evaluation
+    UnaryExpression : delete UnaryExpression
+
+    1. Let ref be the result of evaluating UnaryExpression.
+    2. ReturnIfAbrupt(ref).
+    3. If Type(ref) is not Reference, return true.
+---*/
+
+var a = { b: 42 };
+assert.sameValue(delete void a.b, true, 'delete void a.b');
+assert.sameValue(delete void 0, true, 'delete void 0');
+assert.sameValue(delete typeof 0, true, 'delete typeof 0');
+assert.sameValue(delete delete 0, true, 'delete delete 0');
+assert.sameValue(delete void typeof +-~!0, true, 'delete void typeof +-~!0');
+assert.sameValue(delete {x:1}, true, 'delete {x:1}');
+assert.sameValue(delete null, true, 'delete null');
+assert.sameValue(delete true, true, 'delete true');
+assert.sameValue(delete false, true, 'delete false');
+assert.sameValue(delete 0, true, 'delete 0');
+assert.sameValue(delete 1, true, 'delete 1');
+assert.sameValue(delete '', true, 'delete ""');
+assert.sameValue(delete 'Test262', true, 'delete "Test262"');
+assert.sameValue(delete typeof +-~!0, true, 'delete typeof +-~!0');
+assert.sameValue(delete +-~!0, true, 'delete +-~!0');
+assert.sameValue(delete -~!0, true, 'delete -~!0');
+assert.sameValue(delete ~!0, true, 'delete ~!0');
+assert.sameValue(delete !0, true, 'delete !0');
-- 
GitLab