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