Checks possible break locations.

Running test: testEval
break at:
function testEval() {
  #eval('// comment only');
  eval('// comment only\n');

break at:
  eval('// comment only');
  #eval('// comment only\n');
}

break at:
  eval('// comment only\n');
#}



Running test: testProcedure
break at:
function testProcedure() {
  #procedure();
}

break at:
  procedure();
#}



Running test: testIf
break at:
  var a;
  if (true) #a = true;
  if (!a) {

break at:
  if (true) a = true;
  #if (!a) {
    a = true;

break at:
  } else {
    #a = false;
  }

break at:
  }
  #if (returnTrue()) {
    a = false;

break at:
  if (returnTrue()) {
    #a = false;
  } else {

break at:
  }
#}



Running test: testEmptyFunction
break at:
function testEmptyFunction() {
  #emptyFunction();
}

break at:
  emptyFunction();
#}



Running test: testCallArguments
break at:
function testCallArguments() {
  #twoArguments(emptyFunction(), emptyFunction());
}

break at:
  twoArguments(emptyFunction(), emptyFunction());
#}



Running test: testNested
break at:
  }
  #nested1();
}

break at:
  nested1();
#}



Running test: testCallAtReturn
break at:
function testCallAtReturn() {
  #return returnCall();
}

break at:
function testCallAtReturn() {
  return returnCall();#
}


Running test: testWith
break at:
function testWith() {
  #with (returnObject()) {
    foo();

break at:
  with (returnObject()) {
    #foo();
  }

break at:
  }
  #with({}) {
    return;

break at:
  with({}) {
    #return;
  }

break at:
  with({}) {
    return;#
  }


Running test: testForLoop
break at:
function testForLoop() {
  for (var i = #0; i < 1; ++i) {}
  for (var i = 0; i < 1; ++i) i;

break at:
function testForLoop() {
  for (var i = 0; i #< 1; ++i) {}
  for (var i = 0; i < 1; ++i) i;

break at:
function testForLoop() {
  for (var i = 0; i < 1; ++#i) {}
  for (var i = 0; i < 1; ++i) i;

break at:
function testForLoop() {
  for (var i = 0; i #< 1; ++i) {}
  for (var i = 0; i < 1; ++i) i;

break at:
  for (var i = 0; i < 1; ++i) {}
  for (var i = #0; i < 1; ++i) i;
  for (var i = 0; i < 0; ++i) {}

break at:
  for (var i = 0; i < 1; ++i) {}
  for (var i = 0; i #< 1; ++i) i;
  for (var i = 0; i < 0; ++i) {}

break at:
  for (var i = 0; i < 1; ++i) {}
  for (var i = 0; i < 1; ++#i) i;
  for (var i = 0; i < 0; ++i) {}

break at:
  for (var i = 0; i < 1; ++i) {}
  for (var i = 0; i #< 1; ++i) i;
  for (var i = 0; i < 0; ++i) {}

break at:
  for (var i = 0; i < 1; ++i) i;
  for (var i = #0; i < 0; ++i) {}
}

break at:
  for (var i = 0; i < 1; ++i) i;
  for (var i = 0; i #< 0; ++i) {}
}

break at:
  for (var i = 0; i < 0; ++i) {}
#}



Running test: testForOfLoop
break at:
function testForOfLoop() {
  for (var k of #[]) {}
  for (var k of [1]) k;

break at:
  for (var k of []) {}
  for (var k of #[1]) k;
  var a = [];

break at:
  for (var k of []) {}
  for (var #k of [1]) k;
  var a = [];

break at:
  for (var k of []) {}
  for (var k of [1]) #k;
  var a = [];

break at:
  for (var k of [1]) k;
  var a = #[];
  for (var k of a) {}

break at:
  var a = [];
  for (var k of #a) {}
}

break at:
  for (var k of a) {}
#}



Running test: testPromiseForAwaitLoop
break at:
async function testPromiseForAwaitLoop() {
  for await (var k of #[]) { }
  for await (var k of [Promise.resolve(1)]) k;


Running test: testForInLoop
break at:
function testForInLoop() {
  var o = #{};
  for (var k in o) {}

break at:
  var o = {};
  for (var k in #o) {}
  for (var k in o) k;

break at:
  for (var k in o) {}
  for (var k in #o) k;
  for (var k in { a:1 }) {}

break at:
  for (var k in o) k;
  for (var k in #{ a:1 }) {}
  for (var k in { a:1 }) k;

break at:
  for (var k in o) k;
  for (var #k in { a:1 }) {}
  for (var k in { a:1 }) k;

break at:
  for (var k in { a:1 }) {}
  for (var k in #{ a:1 }) k;
}

break at:
  for (var k in { a:1 }) {}
  for (var #k in { a:1 }) k;
}

break at:
  for (var k in { a:1 }) {}
  for (var k in { a:1 }) #k;
}

break at:
  for (var k in { a:1 }) k;
#}



Running test: testSimpleExpressions
break at:
  1 + 2 + 3;
  var a = #1;
  ++a;

break at:
  var a = 1;
  #++a;
  a--;

break at:
  ++a;
  #a--;
}

break at:
  a--;
#}



Running test: testGetter
break at:
function testGetter() {
  #getterFoo();
}

break at:
  getterFoo();
#}



Running test: testChainedCalls
break at:
function testChainedCalls() {
  #obj.foo().boo()();
}

break at:
  obj.foo().boo()();
#}



Running test: testChainedWithNative
break at:
function testChainedWithNative() {
  #Array.from([1]).concat([2]).map(v => v * 2);
}

break at:
  Array.from([1]).concat([2]).map(v => v * 2);
#}



Running test: testPromiseThen
break at:
function testPromiseThen() {
  #return Promise.resolve().then(v => v * 2).then(v => v * 2);
}

break at:
function testPromiseThen() {
  return Promise.resolve().then(v => v * 2).then(v => v * 2);#
}


Running test: testSwitch
break at:
function testSwitch() {
  for (var i = #0; i < 3; ++i) {
    switch(i) {

break at:
function testSwitch() {
  for (var i = 0; i #< 3; ++i) {
    switch(i) {

break at:
  for (var i = 0; i < 3; ++i) {
    #switch(i) {
      case 0: continue;

break at:
    switch(i) {
      case 0: #continue;
      case 1: return42(); break;

break at:
function testSwitch() {
  for (var i = 0; i < 3; ++#i) {
    switch(i) {

break at:
function testSwitch() {
  for (var i = 0; i #< 3; ++i) {
    switch(i) {

break at:
  for (var i = 0; i < 3; ++i) {
    #switch(i) {
      case 0: continue;

break at:
      case 0: continue;
      case 1: #return42(); break;
      default: return;

break at:
      case 0: continue;
      case 1: return42(); #break;
      default: return;

break at:
function testSwitch() {
  for (var i = 0; i < 3; ++#i) {
    switch(i) {

break at:
function testSwitch() {
  for (var i = 0; i #< 3; ++i) {
    switch(i) {

break at:
  for (var i = 0; i < 3; ++i) {
    #switch(i) {
      case 0: continue;

break at:
      case 1: return42(); break;
      default: #return;
    }

break at:
      case 1: return42(); break;
      default: return;#
    }


Running test: testGenerator
break at:
function testGenerator() {
  var gen = #idMaker();
  return42();

break at:
  var gen = idMaker();
  #return42();
  gen.next().value;

break at:
  return42();
  gen.#next().value;
  debugger;

break at:
  gen.next().value;
  #debugger;
  gen.next().value;

break at:
  debugger;
  gen.#next().value;
  return42();

break at:
  gen.next().value;
  #return42();
  gen.next().value;

break at:
  return42();
  gen.#next().value;
  return42();

break at:
  gen.next().value;
  #return42();
  gen.next().value;

break at:
  return42();
  gen.#next().value;
}

break at:
  gen.next().value;
#}



Running test: testCaughtException
break at:
  try {
    #throwException()
  } catch (e) {

break at:
  } catch (e) {
    #return;
  }

break at:
  } catch (e) {
    return;#
  }


Running test: testClasses
break at:
  }
  #new Lion().speak();
}

break at:
  new Lion().speak();
#}



Running test: testAsyncAwait
break at:
async function testAsyncAwait() {
  #await asyncFoo();
  await awaitBoo();


Running test: testPromiseAsyncWithCode
break at:
  var nextTest;
  var testPromise = #new Promise(resolve => nextTest = resolve);
  async function main() {

break at:
  }
  #main();
  return testPromise;

break at:
  main();
  #return testPromise;
}

break at:
  main();
  return testPromise;#
}

break at:
function return42() {
  #return 42;
}

break at:
function return42() {
  return 42;#
}

break at:
      var resolveNested;
      var p = #new Promise(resolve => resolveNested = resolve);
      setTimeout(resolveNested, 0);

break at:
      var p = new Promise(resolve => resolveNested = resolve);
      #setTimeout(resolveNested, 0);
      await p;

break at:
      setTimeout(resolveNested, 0);
      #await p;
    }


Running test: testPromiseComplex
break at:
  var nextTest;
  var testPromise = #new Promise(resolve => nextTest = resolve);
  async function main() {

break at:
  }
  #main();
  return testPromise;

break at:
  main();
  #return testPromise;
}

break at:
  main();
  return testPromise;#
}

