diff options
Diffstat (limited to 'js/src/tests/test262/built-ins/JSON/stringify/replacer-array-duplicates.js')
-rw-r--r-- | js/src/tests/test262/built-ins/JSON/stringify/replacer-array-duplicates.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/js/src/tests/test262/built-ins/JSON/stringify/replacer-array-duplicates.js b/js/src/tests/test262/built-ins/JSON/stringify/replacer-array-duplicates.js new file mode 100644 index 0000000000..5351d6fb56 --- /dev/null +++ b/js/src/tests/test262/built-ins/JSON/stringify/replacer-array-duplicates.js @@ -0,0 +1,31 @@ +// Copyright (C) 2019 Aleksey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-json.stringify +description: > + Replacer array is deduped before Get. +info: | + JSON.stringify ( value [ , replacer [ , space ] ] ) + + [...] + 4. If Type(replacer) is Object, then + [...] + 4. Repeat, while k < len, + a. Let v be ? Get(replacer, ! ToString(k)). + [...] + f. If item is not undefined and item is not currently an element of PropertyList, then + i. Append item to the end of PropertyList. +---*/ + +var getCalls = 0; +var value = { + get key() { + getCalls += 1; + return true; + }, +}; + +assert.sameValue(JSON.stringify(value, ['key', 'key']), '{"key":true}'); +assert.sameValue(getCalls, 1); + +reportCompare(0, 0); |