For or loops are spec'ed to call the internal spec function, IteratorClose
when there is an abrupt completion in the loop body (an exception was
thrown, return and break)

The point of this was to allow cleaning up the iterator in case it holds on
to some kind of resource.

The problem is that none of the other iterations in the spec calls
IteratorClose. For example,

```js
class MySet extends Set {
  add(v) {
    if (valueNoGood(v)) throw new NoGoodError();
    return super(v);
  }
}
new MySet(new ReadLines('~/test.txt'));
```

In the above code `ReadLines.prototype.return` is never called, defeating
the whole purpose of adding return hooks to for-of.

I see two options here.

1. Add IteratorClose to all places in the spec where we use iterators.
2. Remove IteratorClose from for-of loops.

I know we talked about this before on several occasions but I'm still
unhappy with the current state.

-- 
erik
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to