From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- .../reviver-mutates-holder-object-ccw.js | 56 ++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 js/src/tests/non262/extensions/reviver-mutates-holder-object-ccw.js (limited to 'js/src/tests/non262/extensions/reviver-mutates-holder-object-ccw.js') diff --git a/js/src/tests/non262/extensions/reviver-mutates-holder-object-ccw.js b/js/src/tests/non262/extensions/reviver-mutates-holder-object-ccw.js new file mode 100644 index 0000000000..546a57e916 --- /dev/null +++ b/js/src/tests/non262/extensions/reviver-mutates-holder-object-ccw.js @@ -0,0 +1,56 @@ +/* + * Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/licenses/publicdomain/ + * Contributor: + * Jeff Walden + */ + +//----------------------------------------------------------------------------- +var BUGNUMBER = 901351; +var summary = "Behavior when the JSON.parse reviver mutates the holder object"; + +print(BUGNUMBER + ": " + summary); + +/************** + * BEGIN TEST * + **************/ + +// A little trickiness to account for the undefined-ness of property +// enumeration order. +var first = "unset"; + +var proxyObj = null; + +var obj = JSON.parse('{ "a": 0, "b": 1 }', function(prop, v) { + if (first === "unset") + { + first = prop; + var second = (prop === "a") ? "b" : "a"; + + proxyObj = newGlobal().evaluate("({ c: 42, d: 17 })"); + Object.defineProperty(this, second, { value: proxyObj }); + } + return v; +}); + +if (first === "a") +{ + assertEq(obj.a, 0); + assertEq(obj.b, proxyObj); + assertEq(obj.b.c, 42); + assertEq(obj.b.d, 17); +} +else +{ + assertEq(obj.a, proxyObj); + assertEq(obj.a.c, 42); + assertEq(obj.a.d, 17); + assertEq(obj.b, 1); +} + +/******************************************************************************/ + +if (typeof reportCompare === "function") + reportCompare(true, true); + +print("Tests complete"); -- cgit v1.2.3