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).
This commit is contained in:
Mike Pennisi 2015-05-19 15:16:54 -04:00
parent bf3989be55
commit 202ed9ee1d
4 changed files with 76 additions and 0 deletions

View File

@ -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});
}
});

View File

@ -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 });
}
});

View File

@ -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 });
});

View File

@ -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');