blob: 5d667e353a792d6d4952125fc6673be7d71bbe49 (
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
|
// Any copyright is dedicated to the Public Domain.
// http://creativecommons.org/licenses/publicdomain/
var gTestfile = "json-stringify-replacer-array-revocable-proxy.js";
//-----------------------------------------------------------------------------
var BUGNUMBER = 1196497;
var summary =
"Don't assert when JSON.stringify is passed a revocable proxy to an array, " +
"then that proxy is revoked midflight during stringification";
print(BUGNUMBER + ": " + summary);
/**************
* BEGIN TEST *
**************/
var arr = [];
var { proxy, revoke } = Proxy.revocable(arr, {
get(thisv, prop, receiver) {
// First (and only) get will be for "length", to determine the length of the
// list of properties to serialize. Returning 0 uses the empty list,
// resulting in |a: 0| being ignored below.
assertEq(thisv, arr);
assertEq(prop, "length");
assertEq(receiver, proxy);
revoke();
return 0;
}
});
assertEq(JSON.stringify({a: 0}, proxy), "{}");
/******************************************************************************/
if (typeof reportCompare === "function")
reportCompare(true, true);
print("Tests complete");
|