mirror of
				https://github.com/tc39/test262.git
				synced 2025-11-03 21:24:30 +01:00 
			
		
		
		
	
							parent
							
								
									d0b5137c15
								
							
						
					
					
						commit
						71e40aad50
					
				@ -25,29 +25,11 @@ info: |
 | 
			
		||||
  1. If stack contains value, throw a TypeError exception because the structure is cyclical.
 | 
			
		||||
---*/
 | 
			
		||||
 | 
			
		||||
var direct = [];
 | 
			
		||||
var directReplacer = function(_key, value) {
 | 
			
		||||
  if (value === direct) {
 | 
			
		||||
    return [direct];
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return value;
 | 
			
		||||
var circular = [{}];
 | 
			
		||||
var circularReplacer = function(k, v) {
 | 
			
		||||
  return circular;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
assert.throws(TypeError, function() {
 | 
			
		||||
  JSON.stringify(direct, directReplacer);
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
var arr = [];
 | 
			
		||||
var indirect = [[arr]];
 | 
			
		||||
var indirectReplacer = function(_key, value) {
 | 
			
		||||
  if (value === arr) {
 | 
			
		||||
    return [indirect];
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return value;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
assert.throws(TypeError, function() {
 | 
			
		||||
  JSON.stringify(indirect, indirectReplacer);
 | 
			
		||||
  JSON.stringify(circular, circularReplacer);
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
@ -25,13 +25,9 @@ info: |
 | 
			
		||||
  1. If stack contains value, throw a TypeError exception because the structure is cyclical.
 | 
			
		||||
---*/
 | 
			
		||||
 | 
			
		||||
var direct = {};
 | 
			
		||||
var directReplacer = function(_key, value) {
 | 
			
		||||
  if (value === direct) {
 | 
			
		||||
    return {prop: direct};
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return value;
 | 
			
		||||
var direct = {prop: {}};
 | 
			
		||||
var directReplacer = function(k, v) {
 | 
			
		||||
  return direct;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
assert.throws(TypeError, function() {
 | 
			
		||||
@ -39,10 +35,10 @@ assert.throws(TypeError, function() {
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
var indirect = {p1: {p2: {}}};
 | 
			
		||||
var indirectReplacer = function(_key, value) {
 | 
			
		||||
  if (value === indirect.p1.p2) {
 | 
			
		||||
    return {p3: indirect};
 | 
			
		||||
  }
 | 
			
		||||
var indirectReplacer = function(key, value) {
 | 
			
		||||
  if (key === 'p2') {
 | 
			
		||||
    return indirect;
 | 
			
		||||
  } 
 | 
			
		||||
 | 
			
		||||
  return value;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -27,21 +27,13 @@ info: |
 | 
			
		||||
  1. If stack contains value, throw a TypeError exception because the structure is cyclical.
 | 
			
		||||
---*/
 | 
			
		||||
 | 
			
		||||
var direct = [];
 | 
			
		||||
direct.toJSON = function() {
 | 
			
		||||
  return [direct];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
assert.throws(TypeError, function() {
 | 
			
		||||
  JSON.stringify(direct);
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
var arr = [];
 | 
			
		||||
var circular = [arr];
 | 
			
		||||
 | 
			
		||||
arr.toJSON = function() {
 | 
			
		||||
  return [indirect];
 | 
			
		||||
  return circular;
 | 
			
		||||
};
 | 
			
		||||
var indirect = [[arr]];
 | 
			
		||||
 | 
			
		||||
assert.throws(TypeError, function() {
 | 
			
		||||
  JSON.stringify(indirect);
 | 
			
		||||
  JSON.stringify(circular);
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
@ -27,26 +27,13 @@ info: |
 | 
			
		||||
  1. If stack contains value, throw a TypeError exception because the structure is cyclical.
 | 
			
		||||
---*/
 | 
			
		||||
 | 
			
		||||
var direct = {
 | 
			
		||||
  toJSON: function() {
 | 
			
		||||
    return {prop: direct};
 | 
			
		||||
  },
 | 
			
		||||
var obj = {};
 | 
			
		||||
var circular = { prop: obj };
 | 
			
		||||
 | 
			
		||||
obj.toJSON = function() {
 | 
			
		||||
  return circular;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
assert.throws(TypeError, function() {
 | 
			
		||||
  JSON.stringify(direct);
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
var indirect = {
 | 
			
		||||
  p1: {
 | 
			
		||||
    p2: {
 | 
			
		||||
      toJSON: function() {
 | 
			
		||||
        return {p3: indirect};
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
assert.throws(TypeError, function() {
 | 
			
		||||
  JSON.stringify(indirect);
 | 
			
		||||
  JSON.stringify(circular);
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user