MCPcopy Index your code
hub / github.com/nodejs/node / testStackOverflow

Function testStackOverflow

deps/v8/test/mjsunit/iterable-foreach.js:103–144  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

101
102// Stack overflow
103function testStackOverflow() {
104 let iterable = {
105 [Symbol.iterator]() {
106 return {
107 next() { return { value: 1, done: false }; },
108 return() { return { done: true }; }
109 };
110 }
111 };
112
113 let infiniteIterable = {
114 [Symbol.iterator]() {
115 return {
116 next() { return { value: 1, done: false }; },
117 return() { return { done: true }; } // Should be called
118 }
119 }
120 };
121
122 let returnCalled = false;
123 let recursiveIterable = {
124 [Symbol.iterator]() {
125 return {
126 next() { return { value: 1, done: false }; },
127 return() {
128 returnCalled = true;
129 return { done: true };
130 }
131 }
132 }
133 };
134
135 try {
136 function recurse(x) {
137 recurse(x);
138 }
139 %IterableForEach(recursiveIterable, recurse);
140 } catch(e) {
141 assertInstanceof(e, RangeError);
142 }
143 assertTrue(returnCalled, "Iterator.return() should be called on stack overflow");
144}
145testStackOverflow();
146
147// Next method throws -> Exception propagates, iterator NOT closed

Callers 1

Calls 3

assertInstanceofFunction · 0.85
recurseFunction · 0.70
assertTrueFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…