| // Copyright (C) 2016 Jordan Harband. All rights reserved. |
| // This code is governed by the BSD license found in the LICENSE file. |
| /*--- |
| description: | |
| Used to assert the correctness of object behavior in the presence |
| and context of Proxy objects. |
| ---*/ |
| |
| function allowProxyTraps(overrides) { |
| function throwTest262Error(msg) { |
| return function () { throw new Test262Error(msg); }; |
| } |
| if (!overrides) { overrides = {}; } |
| return { |
| getPrototypeOf: overrides.getPrototypeOf || throwTest262Error('[[GetPrototypeOf]] trap called'), |
| setPrototypeOf: overrides.setPrototypeOf || throwTest262Error('[[SetPrototypeOf]] trap called'), |
| isExtensible: overrides.isExtensible || throwTest262Error('[[IsExtensible]] trap called'), |
| preventExtensions: overrides.preventExtensions || throwTest262Error('[[PreventExtensions]] trap called'), |
| getOwnPropertyDescriptor: overrides.getOwnPropertyDescriptor || throwTest262Error('[[GetOwnProperty]] trap called'), |
| has: overrides.has || throwTest262Error('[[HasProperty]] trap called'), |
| get: overrides.get || throwTest262Error('[[Get]] trap called'), |
| set: overrides.set || throwTest262Error('[[Set]] trap called'), |
| deleteProperty: overrides.deleteProperty || throwTest262Error('[[Delete]] trap called'), |
| defineProperty: overrides.defineProperty || throwTest262Error('[[DefineOwnProperty]] trap called'), |
| enumerate: throwTest262Error('[[Enumerate]] trap called: this trap has been removed'), |
| ownKeys: overrides.ownKeys || throwTest262Error('[[OwnPropertyKeys]] trap called'), |
| apply: overrides.apply || throwTest262Error('[[Call]] trap called'), |
| construct: overrides.construct || throwTest262Error('[[Construct]] trap called') |
| }; |
| } |