// Copyright (C) 2015 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- es6id: 9.5.12 description: > If target is not extensible, the result must contain all the keys of the own properties of the target object. info: > [[OwnPropertyKeys]] ( ) ... 23. Repeat, for each key that is an element of targetConfigurableKeys, a. If key is not an element of uncheckedResultKeys, throw a TypeError exception. ---*/ var target = { foo: 1, bar: 2 }; var p = new Proxy(target, { ownKeys: function() { return ["foo"]; } }); Object.preventExtensions(target); assert.throws(TypeError, function() { Object.keys(p); });