tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

iterclose-extra-args-throw.js (765B)


      1 const iterable = {
      2  [Symbol.iterator]() {
      3    return {
      4      i: 0,
      5      next() {
      6        return { value: this.i++, done: false }
      7      },
      8      return(a, b, c, d) {
      9        assertEq(a, undefined);
     10        assertEq(b, undefined);
     11        assertEq(c, undefined);
     12        assertEq(d, undefined);
     13        return { value: "return", done: true };
     14      }
     15    };
     16  }
     17 }
     18 
     19 function closeIter(o) {
     20  for (var x of o) {
     21    if (x == 2) {
     22      throw "good";
     23    }
     24  }
     25 }
     26 
     27 function test() {
     28  with ({}) {}
     29  for (var i = 0; i < 100; i++) {
     30    var caught = "bad";
     31    try {
     32      closeIter(iterable)
     33    } catch (e) {
     34      caught = e;
     35    }
     36    assertEq(caught, "good");
     37  }
     38 }
     39 
     40 with ({}) {}
     41 
     42 test();
     43 
     44 // Force an IC in Ion.
     45 try {
     46  closeIter([1,2,3,4,5]);
     47 } catch {}
     48 
     49 test();