From 202ed9ee1dd58d06952db71e371fcb2262350ddc Mon Sep 17 00:00:00 2001 From: Mike Pennisi Date: Tue, 19 May 2015 15:16:54 -0400 Subject: [PATCH] Add tests for IdentifierReference as property From the ES6 specification: > ## PropertyDefinition : IdentifierReference > > 1. Let propName be StringValue of IdentifierReference. > 2. Let exprValue be the result of evaluating IdentifierReference. > 3. ReturnIfAbrupt(exprValue). > 4. Let propValue be GetValue(exprValue). > 5. ReturnIfAbrupt(propValue). > 6. Assert: enumerable is true. > 7. Return CreateDataPropertyOrThrow(object, propName, propValue). --- .../object/prop-def-id-eval-error-2.js | 22 +++++++++++++++++++ .../object/prop-def-id-eval-error.js | 21 ++++++++++++++++++ .../object/prop-def-id-get-error.js | 12 ++++++++++ .../expressions/object/prop-def-id-valid.js | 21 ++++++++++++++++++ 4 files changed, 76 insertions(+) create mode 100644 test/language/expressions/object/prop-def-id-eval-error-2.js create mode 100644 test/language/expressions/object/prop-def-id-eval-error.js create mode 100644 test/language/expressions/object/prop-def-id-get-error.js create mode 100644 test/language/expressions/object/prop-def-id-valid.js diff --git a/test/language/expressions/object/prop-def-id-eval-error-2.js b/test/language/expressions/object/prop-def-id-eval-error-2.js new file mode 100644 index 0000000000..5661798f00 --- /dev/null +++ b/test/language/expressions/object/prop-def-id-eval-error-2.js @@ -0,0 +1,22 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.5.9 +description: > + Errors thrown during IdentifierReference evaluation are forwarded to the + runtime. +flags: [noStrict] +features: [Proxy] +---*/ + +var p = new Proxy({}, { + has: function () { + throw new Test262Error(); + } +}); + +assert.throws(Test262Error, function() { + with (p) { + ({attr}); + } +}); diff --git a/test/language/expressions/object/prop-def-id-eval-error.js b/test/language/expressions/object/prop-def-id-eval-error.js new file mode 100644 index 0000000000..72caf01fb8 --- /dev/null +++ b/test/language/expressions/object/prop-def-id-eval-error.js @@ -0,0 +1,21 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.5.9 +description: > + Errors thrown during IdentifierReference evaluation are forwarded to the + runtime. +flags: [noStrict] +features: [Symbol, Symbol.unscopables] +---*/ + +var obj = { + attr: null, + get [Symbol.unscopables]() { throw new Test262Error(); } +}; + +assert.throws(Test262Error, function() { + with (obj) { + ({ attr }); + } +}); diff --git a/test/language/expressions/object/prop-def-id-get-error.js b/test/language/expressions/object/prop-def-id-get-error.js new file mode 100644 index 0000000000..f7efee3113 --- /dev/null +++ b/test/language/expressions/object/prop-def-id-get-error.js @@ -0,0 +1,12 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.5.9 +description: > + Errors thrown during IdentifierReference value retrieval are forwarded to + the runtime. +---*/ + +assert.throws(ReferenceError, function() { + ({ unresolvable }); +}); diff --git a/test/language/expressions/object/prop-def-id-valid.js b/test/language/expressions/object/prop-def-id-valid.js new file mode 100644 index 0000000000..7925a8f889 --- /dev/null +++ b/test/language/expressions/object/prop-def-id-valid.js @@ -0,0 +1,21 @@ +// Copyright (C) Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 12.2.5.9 +description: > + When a valid IdentifierReference appears in an object initializer, a new + data property is created. The property name is the string value of the + identifier, the property value is the value of the identifier, and the + property is enumerable, writable, and configurable. +includes: [propertyHelper.js] +---*/ + +var attr = 23; +var obj; + +obj = { attr }; + +assert.sameValue(obj.attr, 23); +verifyEnumerable(obj, 'attr'); +verifyWritable(obj, 'attr'); +verifyConfigurable(obj, 'attr');