Handel empty intializer in system module emit

This commit is contained in:
Mohamed Hegazy 2017-03-28 10:19:09 -07:00
parent 115c008694
commit 74dd1c0558
5 changed files with 125 additions and 0 deletions

View file

@ -1287,6 +1287,10 @@ namespace ts {
* @param node The node to visit.
*/
function visitForInitializer(node: ForInitializer): ForInitializer {
if (!node) {
return node;
}
if (shouldHoistForInitializer(node)) {
let expressions: Expression[];
for (const variable of node.declarations) {

View file

@ -0,0 +1,42 @@
//// [SystemModuleForStatementNoInitializer.ts]
export { };
let i = 0;
let limit = 10;
for (; i < limit; ++i) {
break;
}
for (; ; ++i) {
break;
}
for (; ;) {
break;
}
//// [SystemModuleForStatementNoInitializer.js]
System.register([], function (exports_1, context_1) {
"use strict";
var __moduleName = context_1 && context_1.id;
var i, limit;
return {
setters: [],
execute: function () {
i = 0;
limit = 10;
for (; i < limit; ++i) {
break;
}
for (;; ++i) {
break;
}
for (;;) {
break;
}
}
};
});

View file

@ -0,0 +1,28 @@
=== tests/cases/compiler/SystemModuleForStatementNoInitializer.ts ===
export { };
let i = 0;
>i : Symbol(i, Decl(SystemModuleForStatementNoInitializer.ts, 3, 3))
let limit = 10;
>limit : Symbol(limit, Decl(SystemModuleForStatementNoInitializer.ts, 4, 3))
for (; i < limit; ++i) {
>i : Symbol(i, Decl(SystemModuleForStatementNoInitializer.ts, 3, 3))
>limit : Symbol(limit, Decl(SystemModuleForStatementNoInitializer.ts, 4, 3))
>i : Symbol(i, Decl(SystemModuleForStatementNoInitializer.ts, 3, 3))
break;
}
for (; ; ++i) {
>i : Symbol(i, Decl(SystemModuleForStatementNoInitializer.ts, 3, 3))
break;
}
for (; ;) {
break;
}

View file

@ -0,0 +1,33 @@
=== tests/cases/compiler/SystemModuleForStatementNoInitializer.ts ===
export { };
let i = 0;
>i : number
>0 : 0
let limit = 10;
>limit : number
>10 : 10
for (; i < limit; ++i) {
>i < limit : boolean
>i : number
>limit : number
>++i : number
>i : number
break;
}
for (; ; ++i) {
>++i : number
>i : number
break;
}
for (; ;) {
break;
}

View file

@ -0,0 +1,18 @@
//@module: system
export { };
let i = 0;
let limit = 10;
for (; i < limit; ++i) {
break;
}
for (; ; ++i) {
break;
}
for (; ;) {
break;
}