// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
desc: >
    IteratorClose is called when reference evaluation produces a "throw"
    completion
info: |
    ArrayAssignmentPattern : [ AssignmentElementList ]

    [...]
    5. If iteratorRecord.[[done]] is false, return IteratorClose(iterator,
       result).
    6. Return result.
features: [Symbol.iterator]
template: error
esid: sec-runtime-semantics-destructuringassignmentevaluation
---*/

//- setup
var nextCount = 0;
var returnCount = 0;
function ReturnError() {}
var iterable = {};
var iterator = {
  next: function() {
    nextCount += 1;
    return { done: true };
  },
  return: function() {
    returnCount += 1;

    // This value should be discarded.
    throw new ReturnError();
  }
};
var thrower = function() {
  throw new Test262Error();
};
iterable[Symbol.iterator] = function() {
  return iterator;
};
//- error
Test262Error
//- elems
[ {}[thrower()] ]
//- vals
iterable
//- teardown
assert.sameValue(nextCount, 0);
assert.sameValue(returnCount, 1);
