// This code is governed by the BSD license found in the LICENSE file.
/*---
desc: >
    IteratorClose is not called when iteration produces an abrupt completion
info: |
    ArrayAssignmentPattern : [ Elisionopt AssignmentRestElement ]

    [...]
    5. Let result be the result of performing
       IteratorDestructuringAssignmentEvaluation of AssignmentRestElement with
       iteratorRecord as the argument
    6. If iteratorRecord.[[done]] is false, return IteratorClose(iterator,
       result).
features: [Symbol.iterator]
template: error
esid: sec-runtime-semantics-destructuringassignmentevaluation
---*/

//- setup
var nextCount = 0;
var returnCount = 0;
var x;
var iterable = {};
var iterator = {
  next: function() {
    nextCount += 1;
    throw new Test262Error();
  },
  return: function() {
    returnCount += 1;
  }
};
iterable[Symbol.iterator] = function() {
  return iterator;
};
//- error
Test262Error
//- elems
[...x]
//- vals
iterable
//- teardown
assert.sameValue(nextCount, 1);
assert.sameValue(returnCount, 0);
