summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/language/expressions/object/literal-property-name-bigint.js
blob: ad502cbdb0746790018990dfee6ffa618d6cf4d1 (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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// Copyright (C) 2020 Igalia S.L, Toru Nagashima. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
description: >
    BigInt in LiteralPropertyName must be valid and the property name must be
    the string representation of the numeric value.
esid: prod-PropertyName
info: |
    PropertyName[Yield, Await]:
        LiteralPropertyName
        ComputedPropertyName[?Yield, ?Await]

    LiteralPropertyName:
        IdentifierName
        StringLiteral
        NumericLiteral

    NumericLiteral:
        DecimalLiteral
        DecimalBigIntegerLiteral

    LiteralPropertyName: NumericLiteral
        1. Let _nbr_ be the NumericValue of |NumericLiteral|.
        1. Return ! ToString(_nbr_).
features: [BigInt, class, destructuring-binding, let]
---*/

// Property

let o = { 999999999999999999n: true }; // greater than max safe integer

assert.sameValue(o["999999999999999999"], true,
    "the property name must be the string representation of the numeric value.");

// MethodDeclaration

o = { 1n() { return "bar"; } };
assert.sameValue(o["1"](), "bar",
    "the property name must be the string representation of the numeric value.");

class C {
  1n() { return "baz"; }
}

let c = new C();
assert.sameValue(c["1"](), "baz",
    "the property name must be the string representation of the numeric value.");

// Destructuring

let { 1n: a } = { "1": "foo" };
assert.sameValue(a, "foo",
    "the property name must be the string representation of the numeric value.");

reportCompare(0, 0);