Merge pull request #5208 from Microsoft/capturedBlockScopedVars

support block scoped vars captured in closures inside loops
This commit is contained in:
Vladimir Matveev
2015-10-26 16:58:15 -07:00
79 changed files with 32072 additions and 64 deletions
@@ -0,0 +1,113 @@
//==== let
for (let x in {}) {
(function() { return x});
(() => x);
}
for (let x of []) {
(function() { return x});
(() => x);
}
for (let x = 0; x < 1; ++x) {
(function() { return x});
(() => x);
}
while (1 === 1) {
let x;
(function() { return x});
(() => x);
}
do {
let x;
(function() { return x});
(() => x);
} while (1 === 1)
for (let y = 0; y < 1; ++y) {
let x = 1;
(function() { return x});
(() => x);
}
for (let x = 0, y = 1; x < 1; ++x) {
(function() { return x + y});
(() => x + y);
}
while (1 === 1) {
let x, y;
(function() { return x + y});
(() => x + y);
}
do {
let x, y;
(function() { return x + y});
(() => x + y);
} while (1 === 1)
for (let y = 0; y < 1; ++y) {
let x = 1;
(function() { return x + y});
(() => x + y);
}
//=========const
for (const x in {}) {
(function() { return x});
(() => x);
}
for (const x of []) {
(function() { return x});
(() => x);
}
for (const x = 0; x < 1;) {
(function() { return x});
(() => x);
}
while (1 === 1) {
const x = 1;
(function() { return x});
(() => x);
}
do {
const x = 1;
(function() { return x});
(() => x);
} while (1 === 1)
for (const y = 0; y < 1;) {
const x = 1;
(function() { return x});
(() => x);
}
for (const x = 0, y = 1; x < 1;) {
(function() { return x + y});
(() => x + y);
}
while (1 === 1) {
const x = 1, y = 1;
(function() { return x + y});
(() => x + y);
}
do {
const x = 1, y = 1;
(function() { return x + y});
(() => x + y);
} while (1 === 1)
for (const y = 0; y < 1;) {
const x = 1;
(function() { return x + y});
(() => x + y);
}
@@ -0,0 +1,114 @@
// @target: ES6
//==== let
for (let x in {}) {
(function() { return x});
(() => x);
}
for (let x of []) {
(function() { return x});
(() => x);
}
for (let x = 0; x < 1; ++x) {
(function() { return x});
(() => x);
}
while (1 === 1) {
let x;
(function() { return x});
(() => x);
}
do {
let x;
(function() { return x});
(() => x);
} while (1 === 1)
for (let y = 0; y < 1; ++y) {
let x = 1;
(function() { return x});
(() => x);
}
for (let x = 0, y = 1; x < 1; ++x) {
(function() { return x + y});
(() => x + y);
}
while (1 === 1) {
let x, y;
(function() { return x + y});
(() => x + y);
}
do {
let x, y;
(function() { return x + y});
(() => x + y);
} while (1 === 1)
for (let y = 0; y < 1; ++y) {
let x = 1;
(function() { return x + y});
(() => x + y);
}
//=========const
for (const x in {}) {
(function() { return x});
(() => x);
}
for (const x of []) {
(function() { return x});
(() => x);
}
for (const x = 0; x < 1;) {
(function() { return x});
(() => x);
}
while (1 === 1) {
const x = 1;
(function() { return x});
(() => x);
}
do {
const x = 1;
(function() { return x});
(() => x);
} while (1 === 1)
for (const y = 0; y < 1;) {
const x = 1;
(function() { return x});
(() => x);
}
for (const x = 0, y = 1; x < 1;) {
(function() { return x + y});
(() => x + y);
}
while (1 === 1) {
const x = 1, y = 1;
(function() { return x + y});
(() => x + y);
}
do {
const x = 1, y = 1;
(function() { return x + y});
(() => x + y);
} while (1 === 1)
for (const y = 0; y < 1;) {
const x = 1;
(function() { return x + y});
(() => x + y);
}
@@ -0,0 +1,176 @@
// ========let
function foo0(x) {
for (let x of []) {
let a = arguments.length;
(function() { return x + a });
(() => x + a);
}
}
function foo0_1(x) {
for (let x in []) {
let a = arguments.length;
(function() { return x + a });
(() => x + a);
}
}
function foo1(x) {
for (let x = 0; x < 1; ++x) {
let a = arguments.length;
(function() { return x + a });
(() => x + a);
}
}
function foo2(x) {
while (1 === 1) {
let a = arguments.length;
(function() { return x + a });
(() => x + a);
}
}
function foo3(x) {
do {
let x;
let a = arguments.length;
(function() { return x + a });
(() => x + a);
} while (1 === 1)
}
function foo4(x) {
for (let y = 0; y < 1; ++y) {
let a = arguments.length;
let x = 1;
(function() { return x + a });
(() => x + a);
}
}
function foo5(x) {
for (let x = 0, y = 1; x < 1; ++x) {
let a = arguments.length;
(function() { return x + y + a });
(() => x + y + a);
}
}
function foo6(x) {
while (1 === 1) {
let x, y;
let a = arguments.length;
(function() { return x + y + a });
(() => x + y + a);
}
}
function foo7(x) {
do {
let x, y;
let a = arguments.length;
(function() { return x + y + a });
(() => x + y + a);
} while (1 === 1)
}
function foo8(x) {
for (let y = 0; y < 1; ++y) {
let x = 1;
let a = arguments.length;
(function() { return x + y + a });
(() => x + y + a);
}
}
///=======const
function foo0_c(x) {
for (const x of []) {
const a = arguments.length;
(function() { return x + a });
(() => x + a);
}
}
function foo0_1_c(x) {
for (const x in []) {
const a = arguments.length;
(function() { return x + a });
(() => x + a);
}
}
function foo1_c(x) {
for (const x = 0; x < 1;) {
const a = arguments.length;
(function() { return x + a });
(() => x + a);
}
}
function foo2_c(x) {
while (1 === 1) {
const a = arguments.length;
(function() { return x + a });
(() => x + a);
}
}
function foo3_c(x) {
do {
const x = 1;
const a = arguments.length;
(function() { return x + a });
(() => x + a);
} while (1 === 1)
}
function foo4_c(x) {
for (const y = 0; y < 1;) {
const a = arguments.length;
const x = 1;
(function() { return x + a });
(() => x + a);
}
}
function foo5_c(x) {
for (const x = 0, y = 1; x < 1;) {
const a = arguments.length;
(function() { return x + y + a });
(() => x + y + a);
}
}
function foo6_c(x) {
while (1 === 1) {
const x = 1, y =1 ;
const a = arguments.length;
(function() { return x + y + a });
(() => x + y + a);
}
}
function foo7_c(x) {
do {
const x = 1, y = 1;
const a = arguments.length;
(function() { return x + y + a });
(() => x + y + a);
} while (1 === 1)
}
function foo8_c(x) {
for (const y = 0; y < 1;) {
const x = 1;
const a = arguments.length;
(function() { return x + y + a });
(() => x + y + a);
}
}
@@ -0,0 +1,176 @@
// @target: ES6
// ========let
function foo0(x) {
for (let x of []) {
let a = arguments.length;
(function() { return x + a });
(() => x + a);
}
}
function foo0_1(x) {
for (let x in []) {
let a = arguments.length;
(function() { return x + a });
(() => x + a);
}
}
function foo1(x) {
for (let x = 0; x < 1; ++x) {
let a = arguments.length;
(function() { return x + a });
(() => x + a);
}
}
function foo2(x) {
while (1 === 1) {
let a = arguments.length;
(function() { return x + a });
(() => x + a);
}
}
function foo3(x) {
do {
let x;
let a = arguments.length;
(function() { return x + a });
(() => x + a);
} while (1 === 1)
}
function foo4(x) {
for (let y = 0; y < 1; ++y) {
let a = arguments.length;
let x = 1;
(function() { return x + a });
(() => x + a);
}
}
function foo5(x) {
for (let x = 0, y = 1; x < 1; ++x) {
let a = arguments.length;
(function() { return x + y + a });
(() => x + y + a);
}
}
function foo6(x) {
while (1 === 1) {
let x, y;
let a = arguments.length;
(function() { return x + y + a });
(() => x + y + a);
}
}
function foo7(x) {
do {
let x, y;
let a = arguments.length;
(function() { return x + y + a });
(() => x + y + a);
} while (1 === 1)
}
function foo8(x) {
for (let y = 0; y < 1; ++y) {
let x = 1;
let a = arguments.length;
(function() { return x + y + a });
(() => x + y + a);
}
}
///=======const
function foo0_c(x) {
for (const x of []) {
const a = arguments.length;
(function() { return x + a });
(() => x + a);
}
}
function foo0_1_c(x) {
for (const x in []) {
const a = arguments.length;
(function() { return x + a });
(() => x + a);
}
}
function foo1_c(x) {
for (const x = 0; x < 1;) {
const a = arguments.length;
(function() { return x + a });
(() => x + a);
}
}
function foo2_c(x) {
while (1 === 1) {
const a = arguments.length;
(function() { return x + a });
(() => x + a);
}
}
function foo3_c(x) {
do {
const x = 1;
const a = arguments.length;
(function() { return x + a });
(() => x + a);
} while (1 === 1)
}
function foo4_c(x) {
for (const y = 0; y < 1;) {
const a = arguments.length;
const x = 1;
(function() { return x + a });
(() => x + a);
}
}
function foo5_c(x) {
for (const x = 0, y = 1; x < 1;) {
const a = arguments.length;
(function() { return x + y + a });
(() => x + y + a);
}
}
function foo6_c(x) {
while (1 === 1) {
const x = 1, y =1 ;
const a = arguments.length;
(function() { return x + y + a });
(() => x + y + a);
}
}
function foo7_c(x) {
do {
const x = 1, y = 1;
const a = arguments.length;
(function() { return x + y + a });
(() => x + y + a);
} while (1 === 1)
}
function foo8_c(x) {
for (const y = 0; y < 1;) {
const x = 1;
const a = arguments.length;
(function() { return x + y + a });
(() => x + y + a);
}
}
@@ -0,0 +1,217 @@
///=========let
declare function use(a: any);
function foo0(x) {
for (let x of []) {
var v = x;
(function() { return x + v });
(() => x + v);
}
use(v);
}
function foo0_1(x) {
for (let x in []) {
var v = x;
(function() { return x + v });
(() => x + v);
}
use(v);
}
function foo1(x) {
for (let x = 0; x < 1; ++x) {
var v = x;
(function() { return x + v });
(() => x + v);
}
use(v);
}
function foo2(x) {
while (1 === 1) {
let x = 1;
var v = x;
(function() { return x + v });
(() => x + v);
}
use(v);
}
function foo3(x) {
do {
let x;
var v;
(function() { return x + v });
(() => x + v);
} while (1 === 1);
use(v);
}
function foo4(x) {
for (let y = 0; y < 1; ++y) {
var v = y;
let x = 1;
(function() { return x + v });
(() => x + v);
}
use(v);
}
function foo5(x) {
for (let x = 0, y = 1; x < 1; ++x) {
var v = x;
(function() { return x + y + v });
(() => x + y + v);
}
use(v);
}
function foo6(x) {
while (1 === 1) {
let x, y;
var v = x;
(function() { return x + y + v });
(() => x + y + v);
}
use(v)
}
function foo7(x) {
do {
let x, y;
var v = x;
(function() { return x + y + v });
(() => x + y + v);
} while (1 === 1);
use(v);
}
function foo8(x) {
for (let y = 0; y < 1; ++y) {
let x = 1;
var v = x;
(function() { return x + y + v });
(() => x + y + v);
}
use(v);
}
//===const
function foo0_c(x) {
for (const x of []) {
var v = x;
(function() { return x + v });
(() => x + v);
}
use(v);
}
function foo0_1_c(x) {
for (const x in []) {
var v = x;
(function() { return x + v });
(() => x + v);
}
use(v);
}
function foo1_c(x) {
for (const x = 0; x < 1;) {
var v = x;
(function() { return x + v });
(() => x + v);
}
use(v);
}
function foo2_c(x) {
while (1 === 1) {
const x = 1;
var v = x;
(function() { return x + v });
(() => x + v);
}
use(v);
}
function foo3_c(x) {
do {
const x = 1;
var v;
(function() { return x + v });
(() => x + v);
} while (1 === 1);
use(v);
}
function foo4_c(x) {
for (const y = 0; y < 1;) {
var v = y;
const x = 1;
(function() { return x + v });
(() => x + v);
}
use(v);
}
function foo5_c(x) {
for (const x = 0, y = 1; x < 1;) {
var v = x;
(function() { return x + y + v });
(() => x + y + v);
}
use(v);
}
function foo6_c(x) {
while (1 === 1) {
const x = 1, y = 1;
var v = x;
(function() { return x + y + v });
(() => x + y + v);
}
use(v)
}
function foo7_c(x) {
do {
const x = 1, y = 1;
var v = x;
(function() { return x + y + v });
(() => x + y + v);
} while (1 === 1);
use(v);
}
function foo8_c(x) {
for (const y = 0; y < 1;) {
const x = 1;
var v = x;
(function() { return x + y + v });
(() => x + y + v);
}
use(v);
}
@@ -0,0 +1,219 @@
// @target: ES6
///=========let
declare function use(a: any);
function foo0(x) {
for (let x of []) {
var v = x;
(function() { return x + v });
(() => x + v);
}
use(v);
}
function foo0_1(x) {
for (let x in []) {
var v = x;
(function() { return x + v });
(() => x + v);
}
use(v);
}
function foo1(x) {
for (let x = 0; x < 1; ++x) {
var v = x;
(function() { return x + v });
(() => x + v);
}
use(v);
}
function foo2(x) {
while (1 === 1) {
let x = 1;
var v = x;
(function() { return x + v });
(() => x + v);
}
use(v);
}
function foo3(x) {
do {
let x;
var v;
(function() { return x + v });
(() => x + v);
} while (1 === 1);
use(v);
}
function foo4(x) {
for (let y = 0; y < 1; ++y) {
var v = y;
let x = 1;
(function() { return x + v });
(() => x + v);
}
use(v);
}
function foo5(x) {
for (let x = 0, y = 1; x < 1; ++x) {
var v = x;
(function() { return x + y + v });
(() => x + y + v);
}
use(v);
}
function foo6(x) {
while (1 === 1) {
let x, y;
var v = x;
(function() { return x + y + v });
(() => x + y + v);
}
use(v)
}
function foo7(x) {
do {
let x, y;
var v = x;
(function() { return x + y + v });
(() => x + y + v);
} while (1 === 1);
use(v);
}
function foo8(x) {
for (let y = 0; y < 1; ++y) {
let x = 1;
var v = x;
(function() { return x + y + v });
(() => x + y + v);
}
use(v);
}
//===const
function foo0_c(x) {
for (const x of []) {
var v = x;
(function() { return x + v });
(() => x + v);
}
use(v);
}
function foo0_1_c(x) {
for (const x in []) {
var v = x;
(function() { return x + v });
(() => x + v);
}
use(v);
}
function foo1_c(x) {
for (const x = 0; x < 1;) {
var v = x;
(function() { return x + v });
(() => x + v);
}
use(v);
}
function foo2_c(x) {
while (1 === 1) {
const x = 1;
var v = x;
(function() { return x + v });
(() => x + v);
}
use(v);
}
function foo3_c(x) {
do {
const x = 1;
var v;
(function() { return x + v });
(() => x + v);
} while (1 === 1);
use(v);
}
function foo4_c(x) {
for (const y = 0; y < 1;) {
var v = y;
const x = 1;
(function() { return x + v });
(() => x + v);
}
use(v);
}
function foo5_c(x) {
for (const x = 0, y = 1; x < 1;) {
var v = x;
(function() { return x + y + v });
(() => x + y + v);
}
use(v);
}
function foo6_c(x) {
while (1 === 1) {
const x = 1, y = 1;
var v = x;
(function() { return x + y + v });
(() => x + y + v);
}
use(v)
}
function foo7_c(x) {
do {
const x = 1, y = 1;
var v = x;
(function() { return x + y + v });
(() => x + y + v);
} while (1 === 1);
use(v);
}
function foo8_c(x) {
for (const y = 0; y < 1;) {
const x = 1;
var v = x;
(function() { return x + y + v });
(() => x + y + v);
}
use(v);
}
@@ -0,0 +1,143 @@
// @module: system
//======let
export function exportedFoo() {
return v0 + v00 + v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8;
}
for (let x of []) {
var v0 = x;
(function() { return x + v0});
(() => x);
}
for (let x in []) {
var v00 = x;
(function() { return x + v00});
(() => x);
}
for (let x = 0; x < 1; ++x) {
var v1 = x;
(function() { return x + v1});
(() => x);
}
while (1 === 1) {
let x;
var v2 = x;
(function() { return x + v2});
(() => x);
}
do {
let x;
var v3 = x;
(function() { return x + v3});
(() => x);
} while (1 === 1)
for (let y = 0; y < 1; ++y) {
let x = 1;
var v4 = x;
(function() { return x + v4});
(() => x);
}
for (let x = 0, y = 1; x < 1; ++x) {
var v5 = x;
(function() { return x + y + v5});
(() => x + y);
}
while (1 === 1) {
let x, y;
var v6 = x;
(function() { return x + y + v6});
(() => x + y);
}
do {
let x, y;
var v7 = x;
(function() { return x + y + v7});
(() => x + y);
} while (1 === 1)
for (let y = 0; y < 1; ++y) {
let x = 1;
var v8 = x;
(function() { return x + y + v8});
(() => x + y);
}
//======const
export function exportedFoo2() {
return v0_c + v00_c + v1_c + v2_c + v3_c + v4_c + v5_c + v6_c + v7_c + v8_c;
}
for (const x of []) {
var v0_c = x;
(function() { return x + v0_c});
(() => x);
}
for (const x in []) {
var v00_c = x;
(function() { return x + v00});
(() => x);
}
for (const x = 0; x < 1;) {
var v1_c = x;
(function() { return x + v1_c});
(() => x);
}
while (1 === 1) {
const x =1;
var v2_c = x;
(function() { return x + v2_c});
(() => x);
}
do {
const x = 1;
var v3_c = x;
(function() { return x + v3_c});
(() => x);
} while (1 === 1)
for (const y = 0; y < 1;) {
const x = 1;
var v4_c = x;
(function() { return x + v4_c});
(() => x);
}
for (const x = 0, y = 1; x < 1;) {
var v5_c = x;
(function() { return x + y + v5_c});
(() => x + y);
}
while (1 === 1) {
const x = 1, y = 1;
var v6_c = x;
(function() { return x + y + v6_c});
(() => x + y);
}
do {
const x = 1, y = 1;
var v7_c = x;
(function() { return x + y + v7_c});
(() => x + y);
} while (1 === 1)
for (const y = 0; y < 1;) {
const x = 1;
var v8_c = x;
(function() { return x + y + v8_c});
(() => x + y);
}
@@ -0,0 +1,143 @@
// @target: ES6
//======let
export function exportedFoo() {
return v0 + v00 + v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8;
}
for (let x of []) {
var v0 = x;
(function() { return x + v0});
(() => x);
}
for (let x in []) {
var v00 = x;
(function() { return x + v00});
(() => x);
}
for (let x = 0; x < 1; ++x) {
var v1 = x;
(function() { return x + v1});
(() => x);
}
while (1 === 1) {
let x;
var v2 = x;
(function() { return x + v2});
(() => x);
}
do {
let x;
var v3 = x;
(function() { return x + v3});
(() => x);
} while (1 === 1)
for (let y = 0; y < 1; ++y) {
let x = 1;
var v4 = x;
(function() { return x + v4});
(() => x);
}
for (let x = 0, y = 1; x < 1; ++x) {
var v5 = x;
(function() { return x + y + v5});
(() => x + y);
}
while (1 === 1) {
let x, y;
var v6 = x;
(function() { return x + y + v6});
(() => x + y);
}
do {
let x, y;
var v7 = x;
(function() { return x + y + v7});
(() => x + y);
} while (1 === 1)
for (let y = 0; y < 1; ++y) {
let x = 1;
var v8 = x;
(function() { return x + y + v8});
(() => x + y);
}
//======const
export function exportedFoo2() {
return v0_c + v00_c + v1_c + v2_c + v3_c + v4_c + v5_c + v6_c + v7_c + v8_c;
}
for (const x of []) {
var v0_c = x;
(function() { return x + v0_c});
(() => x);
}
for (const x in []) {
var v00_c = x;
(function() { return x + v00});
(() => x);
}
for (const x = 0; x < 1;) {
var v1_c = x;
(function() { return x + v1_c});
(() => x);
}
while (1 === 1) {
const x =1;
var v2_c = x;
(function() { return x + v2_c});
(() => x);
}
do {
const x = 1;
var v3_c = x;
(function() { return x + v3_c});
(() => x);
} while (1 === 1)
for (const y = 0; y < 1;) {
const x = 1;
var v4_c = x;
(function() { return x + v4_c});
(() => x);
}
for (const x = 0, y = 1; x < 1;) {
var v5_c = x;
(function() { return x + y + v5_c});
(() => x + y);
}
while (1 === 1) {
const x = 1, y = 1;
var v6_c = x;
(function() { return x + y + v6_c});
(() => x + y);
}
do {
const x = 1, y = 1;
var v7_c = x;
(function() { return x + y + v7_c});
(() => x + y);
} while (1 === 1)
for (const y = 0; y < 1;) {
const x = 1;
var v8_c = x;
(function() { return x + y + v8_c});
(() => x + y);
}
@@ -0,0 +1,279 @@
declare function use(a: any);
//====let
function foo0(x) {
for (let x of []) {
var v = x;
(function() { return x + v });
(() => x + v);
if (x == 1) {
return;
}
}
use(v);
}
function foo00(x) {
for (let x in []) {
var v = x;
(function() { return x + v });
(() => x + v);
if (x == 1) {
return;
}
}
use(v);
}
function foo1(x) {
for (let x = 0; x < 1; ++x) {
var v = x;
(function() { return x + v });
(() => x + v);
if (x == 1) {
return;
}
}
use(v);
}
function foo2(x) {
while (1 === 1) {
let x = 1;
var v = x;
(function() { return x + v });
(() => x + v);
if (x == 1) {
return;
}
}
use(v);
}
function foo3(x) {
do {
let x;
var v;
(function() { return x + v });
(() => x + v);
if (x == 1) {
return;
}
} while (1 === 1)
use(v);
}
function foo4(x) {
for (let y = 0; y < 1; ++y) {
var v = y;
let x = 1;
(function() { return x + v });
(() => x + v);
if (x == 1) {
return;
}
}
use(v);
}
function foo5(x) {
for (let x = 0, y = 1; x < 1; ++x) {
var v = x;
(function() { return x + y + v });
(() => x + y + v);
if (x == 1) {
return;
}
}
use(v);
}
function foo6(x) {
while (1 === 1) {
let x, y;
var v = x;
(function() { return x + y + v });
(() => x + y + v);
if (x == 1) {
return;
}
};
use(v)
}
function foo7(x) {
do {
let x, y;
var v = x;
(function() { return x + y + v });
(() => x + y + v);
if (x == 1) {
return;
}
} while (1 === 1);
use(v);
}
function foo8(x) {
for (let y = 0; y < 1; ++y) {
let x = 1;
var v = x;
(function() { return x + y + v });
(() => x + y + v);
if (x == 1) {
return;
}
}
use(v);
}
//====const
function foo0_c(x) {
for (const x of []) {
var v = x;
(function() { return x + v });
(() => x + v);
if (x == 1) {
return;
}
}
use(v);
}
function foo00_c(x) {
for (const x in []) {
var v = x;
(function() { return x + v });
(() => x + v);
if (x == 1) {
return;
}
}
use(v);
}
function foo1_c(x) {
for (const x = 0; x < 1;) {
var v = x;
(function() { return x + v });
(() => x + v);
if (x == 1) {
return;
}
}
use(v);
}
function foo2_c(x) {
while (1 === 1) {
const x = 1;
var v = x;
(function() { return x + v });
(() => x + v);
if (x == 1) {
return;
}
}
use(v);
}
function foo3_c(x) {
do {
const x = 1;
var v;
(function() { return x + v });
(() => x + v);
if (x == 1) {
return;
}
} while (1 === 1)
use(v);
}
function foo4_c(x) {
for (const y = 0; y < 1;) {
var v = y;
let x = 1;
(function() { return x + v });
(() => x + v);
if (x == 1) {
return;
}
}
use(v);
}
function foo5_c(x) {
for (const x = 0, y = 1; x < 1;) {
var v = x;
(function() { return x + y + v });
(() => x + y + v);
if (x == 1) {
return;
}
}
use(v);
}
function foo6_c(x) {
while (1 === 1) {
const x = 1, y = 1;
var v = x;
(function() { return x + y + v });
(() => x + y + v);
if (x == 1) {
return;
}
}
use(v)
}
function foo7_c(x) {
do {
const x = 1, y = 1;
var v = x;
(function() { return x + y + v });
(() => x + y + v);
if (x == 1) {
return;
}
} while (1 === 1)
use(v);
}
function foo8_c(x) {
for (const y = 0; y < 1;) {
const x = 1;
var v = x;
(function() { return x + y + v });
(() => x + y + v);
if (x == 1) {
return;
}
}
use(v);
}
@@ -0,0 +1,281 @@
// @target: ES6
declare function use(a: any);
//====let
function foo0(x) {
for (let x of []) {
var v = x;
(function() { return x + v });
(() => x + v);
if (x == 1) {
return;
}
}
use(v);
}
function foo00(x) {
for (let x in []) {
var v = x;
(function() { return x + v });
(() => x + v);
if (x == 1) {
return;
}
}
use(v);
}
function foo1(x) {
for (let x = 0; x < 1; ++x) {
var v = x;
(function() { return x + v });
(() => x + v);
if (x == 1) {
return;
}
}
use(v);
}
function foo2(x) {
while (1 === 1) {
let x = 1;
var v = x;
(function() { return x + v });
(() => x + v);
if (x == 1) {
return;
}
}
use(v);
}
function foo3(x) {
do {
let x;
var v;
(function() { return x + v });
(() => x + v);
if (x == 1) {
return;
}
} while (1 === 1)
use(v);
}
function foo4(x) {
for (let y = 0; y < 1; ++y) {
var v = y;
let x = 1;
(function() { return x + v });
(() => x + v);
if (x == 1) {
return;
}
}
use(v);
}
function foo5(x) {
for (let x = 0, y = 1; x < 1; ++x) {
var v = x;
(function() { return x + y + v });
(() => x + y + v);
if (x == 1) {
return;
}
}
use(v);
}
function foo6(x) {
while (1 === 1) {
let x, y;
var v = x;
(function() { return x + y + v });
(() => x + y + v);
if (x == 1) {
return;
}
};
use(v)
}
function foo7(x) {
do {
let x, y;
var v = x;
(function() { return x + y + v });
(() => x + y + v);
if (x == 1) {
return;
}
} while (1 === 1);
use(v);
}
function foo8(x) {
for (let y = 0; y < 1; ++y) {
let x = 1;
var v = x;
(function() { return x + y + v });
(() => x + y + v);
if (x == 1) {
return;
}
}
use(v);
}
//====const
function foo0_c(x) {
for (const x of []) {
var v = x;
(function() { return x + v });
(() => x + v);
if (x == 1) {
return;
}
}
use(v);
}
function foo00_c(x) {
for (const x in []) {
var v = x;
(function() { return x + v });
(() => x + v);
if (x == 1) {
return;
}
}
use(v);
}
function foo1_c(x) {
for (const x = 0; x < 1;) {
var v = x;
(function() { return x + v });
(() => x + v);
if (x == 1) {
return;
}
}
use(v);
}
function foo2_c(x) {
while (1 === 1) {
const x = 1;
var v = x;
(function() { return x + v });
(() => x + v);
if (x == 1) {
return;
}
}
use(v);
}
function foo3_c(x) {
do {
const x = 1;
var v;
(function() { return x + v });
(() => x + v);
if (x == 1) {
return;
}
} while (1 === 1)
use(v);
}
function foo4_c(x) {
for (const y = 0; y < 1;) {
var v = y;
let x = 1;
(function() { return x + v });
(() => x + v);
if (x == 1) {
return;
}
}
use(v);
}
function foo5_c(x) {
for (const x = 0, y = 1; x < 1;) {
var v = x;
(function() { return x + y + v });
(() => x + y + v);
if (x == 1) {
return;
}
}
use(v);
}
function foo6_c(x) {
while (1 === 1) {
const x = 1, y = 1;
var v = x;
(function() { return x + y + v });
(() => x + y + v);
if (x == 1) {
return;
}
}
use(v)
}
function foo7_c(x) {
do {
const x = 1, y = 1;
var v = x;
(function() { return x + y + v });
(() => x + y + v);
if (x == 1) {
return;
}
} while (1 === 1)
use(v);
}
function foo8_c(x) {
for (const y = 0; y < 1;) {
const x = 1;
var v = x;
(function() { return x + y + v });
(() => x + y + v);
if (x == 1) {
return;
}
}
use(v);
}
@@ -0,0 +1,237 @@
// ====let
for (let x of []) {
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
for (let x in []) {
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
for (let x = 0; x < 1; ++x) {
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
while (1 === 1) {
let x;
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
do {
let x;
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
} while (1 === 1)
for (let y = 0; y < 1; ++y) {
let x = 1;
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
for (let x = 0, y = 1; x < 1; ++x) {
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
while (1 === 1) {
let x, y;
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
do {
let x, y;
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
} while (1 === 1)
for (let y = 0; y < 1; ++y) {
let x = 1;
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
// ====const
for (const x of []) {
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
for (const x in []) {
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
for (const x = 0; x < 1;) {
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
while (1 === 1) {
const x = 1;
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
do {
const x = 1;
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
} while (1 === 1)
for (const y = 0; y < 1;) {
const x = 1;
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
for (const x = 0, y = 1; x < 1;) {
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
while (1 === 1) {
const x = 1, y = 1;
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
do {
const x = 1, y = 1;
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
} while (1 === 1)
for (const y = 0; y < 1;) {
const x = 1;
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
@@ -0,0 +1,238 @@
// @target: ES6
// ====let
for (let x of []) {
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
for (let x in []) {
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
for (let x = 0; x < 1; ++x) {
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
while (1 === 1) {
let x;
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
do {
let x;
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
} while (1 === 1)
for (let y = 0; y < 1; ++y) {
let x = 1;
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
for (let x = 0, y = 1; x < 1; ++x) {
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
while (1 === 1) {
let x, y;
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
do {
let x, y;
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
} while (1 === 1)
for (let y = 0; y < 1; ++y) {
let x = 1;
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
// ====const
for (const x of []) {
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
for (const x in []) {
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
for (const x = 0; x < 1;) {
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
while (1 === 1) {
const x = 1;
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
do {
const x = 1;
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
} while (1 === 1)
for (const y = 0; y < 1;) {
const x = 1;
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
for (const x = 0, y = 1; x < 1;) {
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
while (1 === 1) {
const x = 1, y = 1;
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
do {
const x = 1, y = 1;
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
} while (1 === 1)
for (const y = 0; y < 1;) {
const x = 1;
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 2) {
continue;
}
}
@@ -0,0 +1,375 @@
//===let
l0:
for (let x of []) {
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 1) {
break l0;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l0;
}
}
l00:
for (let x in []) {
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 1) {
break l00;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l00;
}
}
l1:
for (let x = 0; x < 1; ++x) {
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 1) {
break l1;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l1;
}
}
l2:
while (1 === 1) {
let x;
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 1) {
break l2;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l2;
}
}
l3:
do {
let x;
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 1) {
break l3;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l3;
}
} while (1 === 1)
l4:
for (let y = 0; y < 1; ++y) {
let x = 1;
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 1) {
break l4;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l4;
}
}
l5:
for (let x = 0, y = 1; x < 1; ++x) {
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 1) {
break l5;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l5;
}
}
l6:
while (1 === 1) {
let x, y;
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 1) {
break l6;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l6;
}
}
l7:
do {
let x, y;
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 1) {
break l7;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l7;
}
} while (1 === 1)
l8:
for (let y = 0; y < 1; ++y) {
let x = 1;
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 1) {
break l8;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l8;
}
}
//===const
l0_c:
for (const x of []) {
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 1) {
break l0_c;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l0_c;
}
}
l00_c:
for (const x in []) {
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 1) {
break l00_c;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l00_c;
}
}
l1_c:
for (const x = 0; x < 1;) {
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 1) {
break l1_c;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l1_c;
}
}
l2_c:
while (1 === 1) {
const x = 1;
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 1) {
break l2_c;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l2_c;
}
}
l3_c:
do {
const x = 1;
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 1) {
break l3_c;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l3_c;
}
} while (1 === 1)
l4_c:
for (const y = 0; y < 1;) {
const x = 1;
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 1) {
break l4_c;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l4_c;
}
}
l5_c:
for (const x = 0, y = 1; x < 1;) {
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 1) {
break l5_c;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l5_c;
}
}
l6_c:
while (1 === 1) {
const x = 1, y = 1;
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 1) {
break l6_c;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l6_c;
}
}
l7_c:
do {
const x = 1, y = 1;
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 1) {
break l7_c;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l7_c;
}
} while (1 === 1)
l8_c:
for (const y = 0; y < 1;) {
const x = 1;
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 1) {
break l8_c;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l8_c;
}
}
@@ -0,0 +1,376 @@
// @target: ES6
//===let
l0:
for (let x of []) {
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 1) {
break l0;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l0;
}
}
l00:
for (let x in []) {
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 1) {
break l00;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l00;
}
}
l1:
for (let x = 0; x < 1; ++x) {
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 1) {
break l1;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l1;
}
}
l2:
while (1 === 1) {
let x;
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 1) {
break l2;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l2;
}
}
l3:
do {
let x;
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 1) {
break l3;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l3;
}
} while (1 === 1)
l4:
for (let y = 0; y < 1; ++y) {
let x = 1;
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 1) {
break l4;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l4;
}
}
l5:
for (let x = 0, y = 1; x < 1; ++x) {
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 1) {
break l5;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l5;
}
}
l6:
while (1 === 1) {
let x, y;
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 1) {
break l6;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l6;
}
}
l7:
do {
let x, y;
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 1) {
break l7;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l7;
}
} while (1 === 1)
l8:
for (let y = 0; y < 1; ++y) {
let x = 1;
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 1) {
break l8;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l8;
}
}
//===const
l0_c:
for (const x of []) {
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 1) {
break l0_c;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l0_c;
}
}
l00_c:
for (const x in []) {
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 1) {
break l00_c;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l00_c;
}
}
l1_c:
for (const x = 0; x < 1;) {
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 1) {
break l1_c;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l1_c;
}
}
l2_c:
while (1 === 1) {
const x = 1;
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 1) {
break l2_c;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l2_c;
}
}
l3_c:
do {
const x = 1;
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 1) {
break l3_c;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l3_c;
}
} while (1 === 1)
l4_c:
for (const y = 0; y < 1;) {
const x = 1;
(function() { return x});
(() => x);
if (x == 1) {
break;
}
if (x == 1) {
break l4_c;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l4_c;
}
}
l5_c:
for (const x = 0, y = 1; x < 1;) {
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 1) {
break l5_c;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l5_c;
}
}
l6_c:
while (1 === 1) {
const x = 1, y = 1;
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 1) {
break l6_c;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l6_c;
}
}
l7_c:
do {
const x = 1, y = 1;
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 1) {
break l7_c;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l7_c;
}
} while (1 === 1)
l8_c:
for (const y = 0; y < 1;) {
const x = 1;
(function() { return x + y});
(() => x + y);
if (x == 1) {
break;
}
if (x == 1) {
break l8_c;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l8_c;
}
}
@@ -0,0 +1,125 @@
function foo() {
l0:
for (let z = 0; z < 1; ++z) {
l1:
for (let x = 0; x < 1; ++x) {
ll1:
for (let y = 0; y < 1; ++y) {
(function() { return x + y });
(() => x + y);
if (y == 1) {
break;
}
if (y == 1) {
break l1;
}
if (y == 1) {
break ll1;
}
if (y == 1) {
continue l0;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l1;
}
if (x == 2) {
continue ll1;
}
if (x == 2) {
return "123"
}
if (x == 3) {
return;
}
}
if (x == 1) {
break;
}
if (x == 1) {
break l1;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l1;
}
if (x == 2) {
continue l0;
}
if (x == 2) {
return "456";
}
if (x == 3) {
return;
}
}
}
}
function foo_c() {
l0:
for (const z = 0; z < 1;) {
l1:
for (const x = 0; x < 1;) {
ll1:
for (const y = 0; y < 1;) {
(function() { return x + y });
(() => x + y);
if (y == 1) {
break;
}
if (y == 1) {
break l1;
}
if (y == 1) {
break ll1;
}
if (y == 1) {
continue l0;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l1;
}
if (x == 2) {
continue ll1;
}
if (x == 2) {
return "123"
}
if (x == 3) {
return;
}
}
if (x == 1) {
break;
}
if (x == 1) {
break l1;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l1;
}
if (x == 2) {
continue l0;
}
if (x == 2) {
return "456";
}
if (x == 3) {
return;
}
}
}
}
@@ -0,0 +1,126 @@
// @target: ES6
function foo() {
l0:
for (let z = 0; z < 1; ++z) {
l1:
for (let x = 0; x < 1; ++x) {
ll1:
for (let y = 0; y < 1; ++y) {
(function() { return x + y });
(() => x + y);
if (y == 1) {
break;
}
if (y == 1) {
break l1;
}
if (y == 1) {
break ll1;
}
if (y == 1) {
continue l0;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l1;
}
if (x == 2) {
continue ll1;
}
if (x == 2) {
return "123"
}
if (x == 3) {
return;
}
}
if (x == 1) {
break;
}
if (x == 1) {
break l1;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l1;
}
if (x == 2) {
continue l0;
}
if (x == 2) {
return "456";
}
if (x == 3) {
return;
}
}
}
}
function foo_c() {
l0:
for (const z = 0; z < 1;) {
l1:
for (const x = 0; x < 1;) {
ll1:
for (const y = 0; y < 1;) {
(function() { return x + y });
(() => x + y);
if (y == 1) {
break;
}
if (y == 1) {
break l1;
}
if (y == 1) {
break ll1;
}
if (y == 1) {
continue l0;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l1;
}
if (x == 2) {
continue ll1;
}
if (x == 2) {
return "123"
}
if (x == 3) {
return;
}
}
if (x == 1) {
break;
}
if (x == 1) {
break l1;
}
if (x == 2) {
continue;
}
if (x == 2) {
continue l1;
}
if (x == 2) {
continue l0;
}
if (x == 2) {
return "456";
}
if (x == 3) {
return;
}
}
}
}
@@ -0,0 +1,139 @@
for (let x = 0; x < 1; ++x) {
let x;
(function() { return x });
{
let x;
(function() { return x });
}
try { }
catch (e) {
let x;
(function() { return x });
}
switch (x) {
case 1:
let x;
(function() { return x });
break;
}
while (1 == 1) {
let x;
(function() { return x });
}
class A {
m() {
return x + 1;
}
}
}
declare function use(a: any);
function foo() {
l0:
for (let a of []) {
if (a === 1) {
break;
}
if (a === 2) {
break l0;
}
for (let b of []) {
var [{x, y:z}] = [{x:1, y:2}];
if (b === 1) {
break;
}
if (b === 2) {
break l0;
}
l1:
if (b === 3) {
break l1;
}
return 50;
}
for (let b of []) {
var [{x1, y:z1}] = [{x1:1, y:arguments.length}];
if (b === 1) {
break;
}
if (b === 2) {
break l0;
}
return 100;
() => b
}
() => a;
}
use(x);
use(z);
use(x1);
use(z1);
}
function foo2() {
for (let x of []) {
if (x === 1) {
break;
}
else if (x === 2) {
continue;
}
while (1 === 1) {
if (x) {
break;
}
else {
continue;
}
}
switch(x) {
case 1: break;
case 2: continue;
}
for (let y of []) {
switch(y) {
case 1: break;
case 2: continue;
}
}
}
}
class C {
constructor(private N: number) { }
foo() {
for (let i = 0; i < 100; i++) {
let f = () => this.N * i;
}
}
}
function foo3 () {
let x = arguments.length;
for (let y of []) {
let z = arguments.length;
(function() { return y + z + arguments.length; });
}
}
@@ -0,0 +1,141 @@
// @target: ES6
for (let x = 0; x < 1; ++x) {
let x;
(function() { return x });
{
let x;
(function() { return x });
}
try { }
catch (e) {
let x;
(function() { return x });
}
switch (x) {
case 1:
let x;
(function() { return x });
break;
}
while (1 == 1) {
let x;
(function() { return x });
}
class A {
m() {
return x + 1;
}
}
}
declare function use(a: any);
function foo() {
l0:
for (let a of []) {
if (a === 1) {
break;
}
if (a === 2) {
break l0;
}
for (let b of []) {
var [{x, y:z}] = [{x:1, y:2}];
if (b === 1) {
break;
}
if (b === 2) {
break l0;
}
l1:
if (b === 3) {
break l1;
}
return 50;
}
for (let b of []) {
var [{x1, y:z1}] = [{x1:1, y:arguments.length}];
if (b === 1) {
break;
}
if (b === 2) {
break l0;
}
return 100;
() => b
}
() => a;
}
use(x);
use(z);
use(x1);
use(z1);
}
function foo2() {
for (let x of []) {
if (x === 1) {
break;
}
else if (x === 2) {
continue;
}
while (1 === 1) {
if (x) {
break;
}
else {
continue;
}
}
switch(x) {
case 1: break;
case 2: continue;
}
for (let y of []) {
switch(y) {
case 1: break;
case 2: continue;
}
}
}
}
class C {
constructor(private N: number) { }
foo() {
for (let i = 0; i < 100; i++) {
let f = () => this.N * i;
}
}
}
function foo3 () {
let x = arguments.length;
for (let y of []) {
let z = arguments.length;
(function() { return y + z + arguments.length; });
}
}