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);
|