Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,15 @@ info: |
features: [iterator-sequencing]
---*/

var returnMethodCalled = false;

let nonObjectIterator = {
next() {
return null;
},
get return() {
returnMethodCalled = true;
throw new Test262Error();
}
};

Expand All @@ -35,3 +41,5 @@ let iterator = Iterator.concat(iterable);
assert.throws(TypeError, function() {
iterator.next();
});

assert.sameValue(returnMethodCalled, false, "an iterator's return method is not called when its next method returns a non-object");
8 changes: 8 additions & 0 deletions test/built-ins/Iterator/concat/next-method-throws.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,15 @@ info: |
features: [iterator-sequencing]
---*/

var returnMethodCalled = false;

let throwingIterator = {
next() {
throw new Test262Error();
},
get return() {
returnMethodCalled = true;
throw new TypeError();
}
};

Expand All @@ -35,3 +41,5 @@ let iterator = Iterator.concat(iterable);
assert.throws(Test262Error, function() {
iterator.next();
});

assert.sameValue(returnMethodCalled, false, "an iterator's return method is not called when its next method throws");
8 changes: 8 additions & 0 deletions test/built-ins/Iterator/from/get-next-method-throws.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,22 @@ info: |
features: [iterator-helpers]
flags: []
---*/

var returnMethodCalled = false;
class ThrowingIterator {
get next() {
throw new Test262Error();
}
get return() {
returnMethodCalled = true;
throw new TypeError();
}
}

let iterator = new ThrowingIterator();

assert.throws(Test262Error, function () {
Iterator.from(iterator);
});

assert.sameValue(returnMethodCalled, false, "an iterator's return method is not called when getting its next method throws");
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,22 @@ info: |
features: [iterator-helpers]
flags: []
---*/

var returnMethodCalled = false;
class ThrowingIterator extends Iterator {
get next() {
throw new Test262Error();
}
get return() {
returnMethodCalled = true;
throw new TypeError();
}
}

let iterator = new ThrowingIterator();

assert.throws(Test262Error, function () {
iterator.drop(0);
});

assert.sameValue(returnMethodCalled, false, "an iterator's return method is not called when getting its next method throws");
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,16 @@ info: |
features: [iterator-helpers]
flags: []
---*/

var returnMethodCalled = false;
class NonObjectIterator extends Iterator {
next() {
return null;
}
get return() {
returnMethodCalled = true;
throw new Test262Error();
}
}

let iterator = new NonObjectIterator().drop(0);
Expand All @@ -31,3 +37,5 @@ iterator = new NonObjectIterator().drop(2);
assert.throws(TypeError, function () {
iterator.next();
});

assert.sameValue(returnMethodCalled, false, "an iterator's return method is not called when its next method returns a non-object");
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,16 @@ info: |
features: [iterator-helpers]
flags: []
---*/

var returnMethodCalled = false;
class ThrowingIterator extends Iterator {
next() {
throw new Test262Error();
}
get return() {
returnMethodCalled = true;
throw new TypeError();
}
}

let iterator = new ThrowingIterator().drop(0);
Expand All @@ -31,3 +37,5 @@ iterator = new ThrowingIterator().drop(1);
assert.throws(Test262Error, function () {
iterator.next();
});

assert.sameValue(returnMethodCalled, false, "an iterator's return method is not called when its next method throws");
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,22 @@ info: |
features: [iterator-helpers]
flags: []
---*/

var returnMethodCalled = false;
class IteratorThrows extends Iterator {
get next() {
throw new Test262Error();
}
get return() {
returnMethodCalled = true;
throw new TypeError();
}
}

let iterator = new IteratorThrows();

assert.throws(Test262Error, function () {
iterator.every(() => {});
});

assert.sameValue(returnMethodCalled, false, "an iterator's return method is not called when getting its next method throws");
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,22 @@ info: |
features: [iterator-helpers]
flags: []
---*/

var returnMethodCalled = false;
class NonObjectIterator extends Iterator {
next() {
return null;
}
get return() {
returnMethodCalled = true;
throw new Test262Error();
}
}

let iterator = new NonObjectIterator();

assert.throws(TypeError, function () {
iterator.every(() => {});
});

assert.sameValue(returnMethodCalled, false, "an iterator's return method is not called when its next method returns a non-object");
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,22 @@ info: |
features: [iterator-helpers]
flags: []
---*/

var returnMethodCalled = false;
class ThrowingIterator extends Iterator {
next() {
throw new Test262Error();
}
get return() {
returnMethodCalled = true;
throw new TypeError();
}
}

let iterator = new ThrowingIterator();

assert.throws(Test262Error, function () {
iterator.every(() => {});
});

assert.sameValue(returnMethodCalled, false, "an iterator's return method is not called when its next method throws");
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,22 @@ info: |
features: [iterator-helpers]
flags: []
---*/

var returnMethodCalled = false;
class ThrowingIterator extends Iterator {
get next() {
throw new Test262Error();
}
get return() {
returnMethodCalled = true;
throw new TypeError();
}
}

let iterator = new ThrowingIterator();

assert.throws(Test262Error, function () {
iterator.filter(() => false);
});

assert.sameValue(returnMethodCalled, false, "an iterator's return method is not called when getting its next method throws");
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,22 @@ info: |
features: [iterator-helpers]
flags: []
---*/

var returnMethodCalled = false;
class NonObjectIterator extends Iterator {
next() {
return null;
}
get return() {
returnMethodCalled = true;
throw new Test262Error();
}
}

let iterator = new NonObjectIterator().filter(() => true);

assert.throws(TypeError, function () {
iterator.next();
});

assert.sameValue(returnMethodCalled, false, "an iterator's return method is not called when its next method returns a non-object");
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,22 @@ info: |
features: [iterator-helpers]
flags: []
---*/

var returnMethodCalled = false;
class ThrowingIterator extends Iterator {
next() {
throw new Test262Error();
}
get return() {
returnMethodCalled = true;
throw new TypeError();
}
}

let iterator = new ThrowingIterator().filter(() => true);

assert.throws(Test262Error, function () {
iterator.next();
});

assert.sameValue(returnMethodCalled, false, "an iterator's return method is not called when its next method throws");
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,22 @@ info: |
features: [iterator-helpers]
flags: []
---*/

var returnMethodCalled = false;
class IteratorThrows extends Iterator {
get next() {
throw new Test262Error();
}
get return() {
returnMethodCalled = true;
throw new TypeError();
}
}

let iterator = new IteratorThrows();

assert.throws(Test262Error, function () {
iterator.find(() => {});
});

assert.sameValue(returnMethodCalled, false, "an iterator's return method is not called when getting its next method throws");
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,22 @@ info: |
features: [iterator-helpers]
flags: []
---*/

var returnMethodCalled = false;
class NonObjectIterator extends Iterator {
next() {
return null;
}
get return() {
returnMethodCalled = true;
throw new Test262Error();
}
}

let iterator = new NonObjectIterator();

assert.throws(TypeError, function () {
iterator.find(() => {});
});

assert.sameValue(returnMethodCalled, false, "an iterator's return method is not called when its next method returns a non-object");
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,22 @@ info: |
features: [iterator-helpers]
flags: []
---*/

var returnMethodCalled = false;
class ThrowingIterator extends Iterator {
next() {
throw new Test262Error();
}
get return() {
returnMethodCalled = true;
throw new TypeError();
}
}

let iterator = new ThrowingIterator();

assert.throws(Test262Error, function () {
iterator.find(() => {});
});

assert.sameValue(returnMethodCalled, false, "an iterator's return method is not called when its next method throws");
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,22 @@ info: |
features: [iterator-helpers]
flags: []
---*/

var returnMethodCalled = false;
class ThrowingIterator extends Iterator {
get next() {
throw new Test262Error();
}
get return() {
returnMethodCalled = true;
throw new TypeError();
}
}

let iterator = new ThrowingIterator();

assert.throws(Test262Error, function () {
iterator.flatMap(() => []);
});

assert.sameValue(returnMethodCalled, false, "an iterator's return method is not called when getting its next method throws");
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,22 @@ info: |
features: [iterator-helpers]
flags: []
---*/

var returnMethodCalled = false;
class NonObjectIterator extends Iterator {
next() {
return null;
}
get return() {
returnMethodCalled = true;
throw new Test262Error();
}
}

let iterator = new NonObjectIterator().flatMap(x => [x]);

assert.throws(TypeError, function () {
iterator.next();
});

assert.sameValue(returnMethodCalled, false, "an iterator's return method is not called when its next method returns a non-object");
Loading
Loading