blob: 5764e345504dcf7fdd4324e11bc7147608d97837 [file] [log] [blame]
// 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.");