Skip to content

Commit 74dd1c0

Browse files
committed
Handel empty intializer in system module emit
1 parent 115c008 commit 74dd1c0

File tree

5 files changed

+125
-0
lines changed

5 files changed

+125
-0
lines changed

src/compiler/transformers/module/system.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1287,6 +1287,10 @@ namespace ts {
12871287
* @param node The node to visit.
12881288
*/
12891289
function visitForInitializer(node: ForInitializer): ForInitializer {
1290+
if (!node) {
1291+
return node;
1292+
}
1293+
12901294
if (shouldHoistForInitializer(node)) {
12911295
let expressions: Expression[];
12921296
for (const variable of node.declarations) {
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
//// [SystemModuleForStatementNoInitializer.ts]
2+
3+
export { };
4+
5+
let i = 0;
6+
let limit = 10;
7+
8+
for (; i < limit; ++i) {
9+
break;
10+
}
11+
12+
for (; ; ++i) {
13+
break;
14+
}
15+
16+
for (; ;) {
17+
break;
18+
}
19+
20+
21+
//// [SystemModuleForStatementNoInitializer.js]
22+
System.register([], function (exports_1, context_1) {
23+
"use strict";
24+
var __moduleName = context_1 && context_1.id;
25+
var i, limit;
26+
return {
27+
setters: [],
28+
execute: function () {
29+
i = 0;
30+
limit = 10;
31+
for (; i < limit; ++i) {
32+
break;
33+
}
34+
for (;; ++i) {
35+
break;
36+
}
37+
for (;;) {
38+
break;
39+
}
40+
}
41+
};
42+
});
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
=== tests/cases/compiler/SystemModuleForStatementNoInitializer.ts ===
2+
3+
export { };
4+
5+
let i = 0;
6+
>i : Symbol(i, Decl(SystemModuleForStatementNoInitializer.ts, 3, 3))
7+
8+
let limit = 10;
9+
>limit : Symbol(limit, Decl(SystemModuleForStatementNoInitializer.ts, 4, 3))
10+
11+
for (; i < limit; ++i) {
12+
>i : Symbol(i, Decl(SystemModuleForStatementNoInitializer.ts, 3, 3))
13+
>limit : Symbol(limit, Decl(SystemModuleForStatementNoInitializer.ts, 4, 3))
14+
>i : Symbol(i, Decl(SystemModuleForStatementNoInitializer.ts, 3, 3))
15+
16+
break;
17+
}
18+
19+
for (; ; ++i) {
20+
>i : Symbol(i, Decl(SystemModuleForStatementNoInitializer.ts, 3, 3))
21+
22+
break;
23+
}
24+
25+
for (; ;) {
26+
break;
27+
}
28+
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
=== tests/cases/compiler/SystemModuleForStatementNoInitializer.ts ===
2+
3+
export { };
4+
5+
let i = 0;
6+
>i : number
7+
>0 : 0
8+
9+
let limit = 10;
10+
>limit : number
11+
>10 : 10
12+
13+
for (; i < limit; ++i) {
14+
>i < limit : boolean
15+
>i : number
16+
>limit : number
17+
>++i : number
18+
>i : number
19+
20+
break;
21+
}
22+
23+
for (; ; ++i) {
24+
>++i : number
25+
>i : number
26+
27+
break;
28+
}
29+
30+
for (; ;) {
31+
break;
32+
}
33+
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
//@module: system
2+
3+
export { };
4+
5+
let i = 0;
6+
let limit = 10;
7+
8+
for (; i < limit; ++i) {
9+
break;
10+
}
11+
12+
for (; ; ++i) {
13+
break;
14+
}
15+
16+
for (; ;) {
17+
break;
18+
}

0 commit comments

Comments
 (0)