test262/test/built-ins/JSON/stringify/replacer-function-stack-overflow.js
2020-03-23 14:47:16 -04:00

36 lines
766 B
JavaScript

// Copyright (C) 2020 Alexey Shvayka. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-json.stringify
description: >
Stack overflow due to infinite recursion in replacer throws an expected error.
---*/
var getStackOverflowError = function() {
try {
return getStackOverflowError();
} catch (err) {
return err;
}
};
var StackOverflowError = getStackOverflowError().constructor;
var obj = {};
var objReplacer = function() {
return {key: obj};
};
assert.throws(StackOverflowError, function() {
JSON.stringify(null, objReplacer);
});
var arr = [];
var arrReplacer = function() {
return [arr];
};
assert.throws(StackOverflowError, function() {
JSON.stringify(null, arrReplacer);
});