|
1 // This was the actual bug |
|
2 assertRaises(StopIteration, function() { |
|
3 Iterator.prototype.next(); |
|
4 Iterator.prototype.next(); |
|
5 }); |
|
6 |
|
7 // The error should have triggered here, but was masked by a latent bug |
|
8 assertRaises(StopIteration, function() { |
|
9 Iterator.prototype.next(); |
|
10 }); |
|
11 |
|
12 // Found by fuzzing |
|
13 assertRaises(StopIteration, function() { |
|
14 (new Iterator({})).__proto__.next(); |
|
15 }); |
|
16 |
|
17 |
|
18 function assertRaises(exc, callback) { |
|
19 var caught = false; |
|
20 try { |
|
21 callback(); |
|
22 } catch (e) { |
|
23 assertEq(e instanceof StopIteration, true); |
|
24 caught = true; |
|
25 } |
|
26 assertEq(caught, true); |
|
27 } |