Tests breakable locations in array destructuring.

Running test: testBreakLocations

function testFunction() {
  var [a, b, c = 4] = |C|generator1();
  |_|[[a, b], c] = |C|generator2();
  |_|[a, ...b] = |C|generator1();
|R|}

function generator1() {
  |_|return {
    [Symbol.iterator]() {
      const it = |_|[1, 2].|C|values();
      |_|return {next() { |_|return it.|C|next();|R| }};|R|
    }
  };|R|
}

function generator2() {
  |_|return {
    [Symbol.iterator]() {
      const it = |_|[|C|generator1(), 3].|C|values();
      |_|return {next() { |_|return it.|C|next();|R| }};|R|
    }
  };|R|
}
|R|


Running test: testStepping
Execution paused in testFunction:
function testFunction() {
  var [a, b, c = 4] = #generator1();
  [[a, b], c] = generator2();

Execution paused in generator1:
function generator1() {
  #return {
    [Symbol.iterator]() {

Called from testFunction:
function testFunction() {
  var [a, b, c = 4] = #generator1();
  [[a, b], c] = generator2();

Execution paused in [Symbol.iterator]:
    [Symbol.iterator]() {
      const it = #[1, 2].values();
      return {next() { return it.next(); }};

Called from testFunction:
function testFunction() {
  var [a, b, c = 4] = #generator1();
  [[a, b], c] = generator2();

Execution paused in next:
      const it = [1, 2].values();
      return {next() { #return it.next(); }};
    }

Called from testFunction:
function testFunction() {
  var [#a, b, c = 4] = generator1();
  [[a, b], c] = generator2();

Execution paused in testFunction:
  var [a, b, c = 4] = generator1();
  #[[a, b], c] = generator2();
  [a, ...b] = generator1();

Execution paused in generator2:
function generator2() {
  #return {
    [Symbol.iterator]() {

Called from testFunction:
  var [a, b, c = 4] = generator1();
  [[a, b], c] = #generator2();
  [a, ...b] = generator1();

Execution paused in [Symbol.iterator]:
    [Symbol.iterator]() {
      const it = #[generator1(), 3].values();
      return {next() { return it.next(); }};

Called from testFunction:
  var [a, b, c = 4] = generator1();
  [[a, b], c] #= generator2();
  [a, ...b] = generator1();

Execution paused in next:
      const it = [generator1(), 3].values();
      return {next() { #return it.next(); }};
    }

Called from testFunction:
  var [a, b, c = 4] = generator1();
  [#[a, b], c] = generator2();
  [a, ...b] = generator1();

Execution paused in [Symbol.iterator]:
    [Symbol.iterator]() {
      const it = #[1, 2].values();
      return {next() { return it.next(); }};

Called from testFunction:
  var [a, b, c = 4] = generator1();
  [#[a, b], c] = generator2();
  [a, ...b] = generator1();

Execution paused in next:
      const it = [1, 2].values();
      return {next() { #return it.next(); }};
    }

Called from testFunction:
  var [a, b, c = 4] = generator1();
  [[#a, b], c] = generator2();
  [a, ...b] = generator1();

Execution paused in next:
      const it = [generator1(), 3].values();
      return {next() { #return it.next(); }};
    }

Called from testFunction:
  var [a, b, c = 4] = generator1();
  [[a, b], #c] = generator2();
  [a, ...b] = generator1();

Execution paused in testFunction:
  [[a, b], c] = generator2();
  #[a, ...b] = generator1();
}

Execution paused in generator1:
function generator1() {
  #return {
    [Symbol.iterator]() {

Called from testFunction:
  [[a, b], c] = generator2();
  [a, ...b] = #generator1();
}

Execution paused in [Symbol.iterator]:
    [Symbol.iterator]() {
      const it = #[1, 2].values();
      return {next() { return it.next(); }};

Called from testFunction:
  [[a, b], c] = generator2();
  [a, ...b] #= generator1();
}

Execution paused in next:
      const it = [1, 2].values();
      return {next() { #return it.next(); }};
    }

Called from testFunction:
  [[a, b], c] = generator2();
  [#a, ...b] = generator1();
}

Execution paused in testFunction:
  [a, ...b] = generator1();
#}


Resuming and finishing...
