summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/built-ins/Object/prototype/__lookupSetter__/lookup-proto-proto-err.js
blob: 3a1ff7a55c7d4af6a7ee2c97ba561ff7bcdb4d52 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-additional-properties-of-the-object.prototype-object
description: >
    Behavior when [[GetPrototypeOf]] of prototype returns an abrupt completion
info: |
    [...]
    4. Repeat
       a. Let desc be ? O.[[GetOwnProperty]](key).
       b. If desc is not undefined, then
          i. If IsAccessorDescriptor(desc) is true, return desc.[[Set]].
          ii. Return undefined.
       c. Let O be ? O.[[GetPrototypeOf]]().
       d. If O is null, return undefined.
features: [Proxy, __setter__]
---*/

var root = Object.defineProperty({}, 'target', { set: function() {} });
var thrower = function() { throw new Test262Error(); };
var intermediary = new Proxy(Object.create(root), { getPrototypeOf: thrower });
var subject = Object.create(intermediary);

assert.throws(Test262Error, function() {
  subject.__lookupSetter__('target');
});

reportCompare(0, 0);