summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/language/expressions/object/__proto__-permitted-dup.js
blob: 778b7aef71c132789859b730813d563d7b2982b9 (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
29
30
31
32
33
34
35
36
37
38
39
// 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-object-initializer
description: Permitted duplicate `__proto__` property
info: |
    Annex B defines an early error for duplicate PropertyName of `__proto__`,
    but this does not apply to properties created from other productions.

    B.3.1 __proto__ Property Names in Object Initializers

    It is a Syntax Error if PropertyNameList of PropertyDefinitionList contains
    any duplicate entries for "__proto__" and at least two of those entries
    were obtained from productions of the form
    PropertyDefinition : PropertyName : AssignmentExpression .
features: [generators, async-functions, async-iteration, __proto__]
---*/

var obj = {
  __proto__: null,
  __proto_: null,
  __proto: null,
  _proto__: null,
  proto__: null,
  ['__proto__']: null,
  __proto__() {},
  * __proto__() {},
  async __proto__() {},
  async * __proto__() {},
  get __proto__() { return 33; },
  set __proto__(_) { return 44; }
};

var desc = Object.getOwnPropertyDescriptor(obj, '__proto__');

assert.sameValue(desc.get(), 33);
assert.sameValue(desc.set(), 44);

reportCompare(0, 0);