Skip to content

Commit 80eae16

Browse files
author
Kanchalai Tanglertsampan
committed
Emit leading comment before brace token
1 parent 7fd404d commit 80eae16

20 files changed

+155
-18
lines changed

src/compiler/emitter.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1347,6 +1347,8 @@ namespace ts {
13471347
else {
13481348
writeToken(SyntaxKind.OpenBraceToken, node.pos, /*contextNode*/ node);
13491349
emitBlockStatements(node);
1350+
// We have to call emitLeadingComments explicitly here because otherwise leading comments of the close brace token will not be emitted
1351+
emitLeadingComments(node.statements.end, /*isEmittedNode*/true);
13501352
writeToken(SyntaxKind.CloseBraceToken, node.statements.end, /*contextNode*/ node);
13511353
}
13521354
}

tests/baselines/reference/amdImportAsPrimaryExpression.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,6 @@ define(["require", "exports"], function (require, exports) {
2626
define(["require", "exports", "./foo_0"], function (require, exports, foo) {
2727
"use strict";
2828
if (foo.E1.A === 0) {
29+
// Should cause runtime import - interesting optimization possibility, as gets inlined to 0.
2930
}
3031
});

tests/baselines/reference/argsInScope.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ var C = (function () {
1717
}
1818
C.prototype.P = function (ii, j, k) {
1919
for (var i = 0; i < arguments.length; i++) {
20+
// WScript.Echo("param: " + arguments[i]);
2021
}
2122
};
2223
return C;
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
//// [commentLeadingCloseBrace.ts]
2+
declare function commentedParameters(...args): any;
3+
4+
function ifelse() {
5+
if (commentedParameters(1, 2)) {
6+
/*comment1*/
7+
commentedParameters(3, 4);
8+
/*comment2*/
9+
} else {
10+
commentedParameters(5, 6);
11+
}
12+
}
13+
14+
//// [commentLeadingCloseBrace.js]
15+
function ifelse() {
16+
if (commentedParameters(1, 2)) {
17+
/*comment1*/
18+
commentedParameters(3, 4);
19+
/*comment2*/
20+
}
21+
else {
22+
commentedParameters(5, 6);
23+
}
24+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
=== tests/cases/compiler/commentLeadingCloseBrace.ts ===
2+
declare function commentedParameters(...args): any;
3+
>commentedParameters : Symbol(commentedParameters, Decl(commentLeadingCloseBrace.ts, 0, 0))
4+
>args : Symbol(args, Decl(commentLeadingCloseBrace.ts, 0, 37))
5+
6+
function ifelse() {
7+
>ifelse : Symbol(ifelse, Decl(commentLeadingCloseBrace.ts, 0, 51))
8+
9+
if (commentedParameters(1, 2)) {
10+
>commentedParameters : Symbol(commentedParameters, Decl(commentLeadingCloseBrace.ts, 0, 0))
11+
12+
/*comment1*/
13+
commentedParameters(3, 4);
14+
>commentedParameters : Symbol(commentedParameters, Decl(commentLeadingCloseBrace.ts, 0, 0))
15+
16+
/*comment2*/
17+
} else {
18+
commentedParameters(5, 6);
19+
>commentedParameters : Symbol(commentedParameters, Decl(commentLeadingCloseBrace.ts, 0, 0))
20+
}
21+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
=== tests/cases/compiler/commentLeadingCloseBrace.ts ===
2+
declare function commentedParameters(...args): any;
3+
>commentedParameters : (...args: any[]) => any
4+
>args : any[]
5+
6+
function ifelse() {
7+
>ifelse : () => void
8+
9+
if (commentedParameters(1, 2)) {
10+
>commentedParameters(1, 2) : any
11+
>commentedParameters : (...args: any[]) => any
12+
>1 : 1
13+
>2 : 2
14+
15+
/*comment1*/
16+
commentedParameters(3, 4);
17+
>commentedParameters(3, 4) : any
18+
>commentedParameters : (...args: any[]) => any
19+
>3 : 3
20+
>4 : 4
21+
22+
/*comment2*/
23+
} else {
24+
commentedParameters(5, 6);
25+
>commentedParameters(5, 6) : any
26+
>commentedParameters : (...args: any[]) => any
27+
>5 : 5
28+
>6 : 6
29+
}
30+
}

tests/baselines/reference/commonJSImportAsPrimaryExpression.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,5 @@ exports.C1 = C1;
2727
"use strict";
2828
var foo = require("./foo_0");
2929
if (foo.C1.s1) {
30+
// Should cause runtime import
3031
}

tests/baselines/reference/duplicateLocalVariable1.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,7 @@ var TestRunner = (function () {
391391
}
392392
}
393393
if (testResult === false) {
394+
//console.log(e.message);
394395
}
395396
}
396397
if ((testcase.errorMessageRegEx !== undefined) && !exception) {

tests/baselines/reference/jsFileCompilationLetBeingRenamed.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@ function foo(a) {
99
//// [out.js]
1010
function foo(a) {
1111
for (var a_1 = 0; a_1 < 10; a_1++) {
12+
// do something
1213
}
1314
}

tests/baselines/reference/narrowExceptionVariableInCatchClause.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ function tryCatch() {
2727
//// [narrowExceptionVariableInCatchClause.js]
2828
function tryCatch() {
2929
try {
30+
// do stuff...
3031
}
3132
catch (err) {
3233
if (isFooError(err)) {

0 commit comments

Comments
 (0)