summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/built-ins/JSON/stringify/value-bigint-tojson-receiver.js
blob: 3b5eb58411767fd8c56ce8b90c6254e6bd04eaea (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
// Copyright 2019 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
// Test case written by André Bargull.

/*---
esid: sec-serializejsonproperty
description: toJSON method called with BigInt as receiver
features: [BigInt]
---*/

assert.throws(TypeError, () => JSON.stringify(1n),
              "toString throws for BigInt object");

// The BigInt proposal changes the SerializeJSONProperty algorithm to
// specifically allow passing BigInt objects as receivers for the toJSON
// method.
Object.defineProperty(BigInt.prototype, "toJSON", {
    get() {
        "use strict";
        return () => typeof this;
    }
});

assert.sameValue(JSON.stringify(1n), "\"bigint\"",
                 "BigInt toJSON method called with value as receiver");

reportCompare(0, 0);