Proxy, [[OwnPropertyKeys]]: If trapResult contains any duplicate entries, throw a TypeError

Ref: https://github.com/tc39/ecma262/pull/833
This commit is contained in:
Rick Waldron 2017-08-04 11:59:05 -04:00
parent 3ebd97ca9b
commit 9e88bb9a45
2 changed files with 45 additions and 0 deletions

View File

@ -0,0 +1,22 @@
// Copyright (C) 2017 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-proxy-object-internal-methods-and-internal-slots-ownpropertykeys
description: >
The returned list must not contain any duplicate entries.
info: >
[[OwnPropertyKeys]] ( )
...
9. If trapResult contains any duplicate entries, throw a TypeError exception.
---*/
var p = new Proxy({}, {
ownKeys() {
return ["a", "a"];
}
});
assert.throws(TypeError, function() {
Object.keys(p);
});

View File

@ -0,0 +1,23 @@
// Copyright (C) 2017 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-proxy-object-internal-methods-and-internal-slots-ownpropertykeys
description: >
The returned list must not contain any duplicate entries.
info: >
[[OwnPropertyKeys]] ( )
...
9. If trapResult contains any duplicate entries, throw a TypeError exception.
---*/
var s = Symbol();
var p = new Proxy({}, {
ownKeys() {
return [s, s];
}
});
assert.throws(TypeError, function() {
Object.keys(p);
});