diff --git a/src/compiler/comments.ts b/src/compiler/comments.ts
index 200158c2f5..dcb471dcfc 100644
--- a/src/compiler/comments.ts
+++ b/src/compiler/comments.ts
@@ -9,6 +9,7 @@ namespace ts {
emitNodeWithComments(hint: EmitHint, node: Node, emitCallback: (hint: EmitHint, node: Node) => void): void;
emitBodyWithDetachedComments(node: Node, detachedRange: TextRange, emitCallback: (node: Node) => void): void;
emitTrailingCommentsOfPosition(pos: number): void;
+ emitLeadingCommentsOfPosition(pos: number): void;
}
export function createCommentWriter(printerOptions: PrinterOptions, emitPos: ((pos: number) => void) | undefined): CommentWriter {
@@ -32,6 +33,7 @@ namespace ts {
emitNodeWithComments,
emitBodyWithDetachedComments,
emitTrailingCommentsOfPosition,
+ emitLeadingCommentsOfPosition,
};
function emitNodeWithComments(hint: EmitHint, node: Node, emitCallback: (hint: EmitHint, node: Node) => void) {
@@ -210,6 +212,14 @@ namespace ts {
}
}
+ function emitLeadingCommentsOfPosition(pos: number) {
+ if (disabled || pos === -1) {
+ return;
+ }
+
+ emitLeadingComments(pos, /*isEmittedNode*/ true);
+ }
+
function emitTrailingComments(pos: number) {
forEachTrailingCommentToEmit(pos, emitTrailingComment);
}
diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts
index 700102a706..e81d2c94ca 100644
--- a/src/compiler/emitter.ts
+++ b/src/compiler/emitter.ts
@@ -1,4 +1,4 @@
-///
+///
///
///
///
@@ -211,6 +211,7 @@ namespace ts {
emitNodeWithComments,
emitBodyWithDetachedComments,
emitTrailingCommentsOfPosition,
+ emitLeadingCommentsOfPosition,
} = comments;
let currentSourceFile: SourceFile;
@@ -1346,6 +1347,10 @@ namespace ts {
else {
writeToken(SyntaxKind.OpenBraceToken, node.pos, /*contextNode*/ node);
emitBlockStatements(node);
+ // We have to call emitLeadingComments explicitly here because otherwise leading comments of the close brace token will not be emitted
+ increaseIndent();
+ emitLeadingCommentsOfPosition(node.statements.end);
+ decreaseIndent();
writeToken(SyntaxKind.CloseBraceToken, node.statements.end, /*contextNode*/ node);
}
}
@@ -2228,6 +2233,15 @@ namespace ts {
// Write the delimiter if this is not the first node.
if (previousSibling) {
+ // i.e
+ // function commentedParameters(
+ // /* Parameter a */
+ // a
+ // /* End of parameter a */ -> this comment isn't considered to be trailing comment of parameter "a" due to newline
+ // ,
+ if (delimiter && previousSibling.end !== parentNode.end) {
+ emitLeadingCommentsOfPosition(previousSibling.end);
+ }
write(delimiter);
// Write either a line terminator or whitespace to separate the elements.
@@ -2274,6 +2288,17 @@ namespace ts {
write(",");
}
+
+ // Emit any trailing comment of the last element in the list
+ // i.e
+ // var array = [...
+ // 2
+ // /* end of element 2 */
+ // ];
+ if (previousSibling && delimiter && previousSibling.end !== parentNode.end) {
+ emitLeadingCommentsOfPosition(previousSibling.end);
+ }
+
// Decrease the indent, if requested.
if (format & ListFormat.Indented) {
decreaseIndent();
diff --git a/tests/baselines/reference/amdImportAsPrimaryExpression.js b/tests/baselines/reference/amdImportAsPrimaryExpression.js
index 3c2e9c041f..6ff3216fb5 100644
--- a/tests/baselines/reference/amdImportAsPrimaryExpression.js
+++ b/tests/baselines/reference/amdImportAsPrimaryExpression.js
@@ -26,5 +26,6 @@ define(["require", "exports"], function (require, exports) {
define(["require", "exports", "./foo_0"], function (require, exports, foo) {
"use strict";
if (foo.E1.A === 0) {
+ // Should cause runtime import - interesting optimization possibility, as gets inlined to 0.
}
});
diff --git a/tests/baselines/reference/argsInScope.js b/tests/baselines/reference/argsInScope.js
index 90906426d2..a38bc77803 100644
--- a/tests/baselines/reference/argsInScope.js
+++ b/tests/baselines/reference/argsInScope.js
@@ -17,6 +17,7 @@ var C = (function () {
}
C.prototype.P = function (ii, j, k) {
for (var i = 0; i < arguments.length; i++) {
+ // WScript.Echo("param: " + arguments[i]);
}
};
return C;
diff --git a/tests/baselines/reference/arrowFunctionErrorSpan.js b/tests/baselines/reference/arrowFunctionErrorSpan.js
index 2557113e89..ca1f966f51 100644
--- a/tests/baselines/reference/arrowFunctionErrorSpan.js
+++ b/tests/baselines/reference/arrowFunctionErrorSpan.js
@@ -83,7 +83,9 @@ f(// comment 1
// comment 2
function () {
// comment 4
-});
+}
+// comment 5
+);
// body is not a block
f(function (_) { return 1 +
2; });
diff --git a/tests/baselines/reference/commentLeadingCloseBrace.js b/tests/baselines/reference/commentLeadingCloseBrace.js
new file mode 100644
index 0000000000..d5f5afbb88
--- /dev/null
+++ b/tests/baselines/reference/commentLeadingCloseBrace.js
@@ -0,0 +1,24 @@
+//// [commentLeadingCloseBrace.ts]
+declare function commentedParameters(...args): any;
+
+function ifelse() {
+ if (commentedParameters(1, 2)) {
+ /*comment1*/
+ commentedParameters(3, 4);
+ /*comment2*/
+ } else {
+ commentedParameters(5, 6);
+ }
+}
+
+//// [commentLeadingCloseBrace.js]
+function ifelse() {
+ if (commentedParameters(1, 2)) {
+ /*comment1*/
+ commentedParameters(3, 4);
+ /*comment2*/
+ }
+ else {
+ commentedParameters(5, 6);
+ }
+}
diff --git a/tests/baselines/reference/commentLeadingCloseBrace.symbols b/tests/baselines/reference/commentLeadingCloseBrace.symbols
new file mode 100644
index 0000000000..72dcfb1e04
--- /dev/null
+++ b/tests/baselines/reference/commentLeadingCloseBrace.symbols
@@ -0,0 +1,21 @@
+=== tests/cases/compiler/commentLeadingCloseBrace.ts ===
+declare function commentedParameters(...args): any;
+>commentedParameters : Symbol(commentedParameters, Decl(commentLeadingCloseBrace.ts, 0, 0))
+>args : Symbol(args, Decl(commentLeadingCloseBrace.ts, 0, 37))
+
+function ifelse() {
+>ifelse : Symbol(ifelse, Decl(commentLeadingCloseBrace.ts, 0, 51))
+
+ if (commentedParameters(1, 2)) {
+>commentedParameters : Symbol(commentedParameters, Decl(commentLeadingCloseBrace.ts, 0, 0))
+
+ /*comment1*/
+ commentedParameters(3, 4);
+>commentedParameters : Symbol(commentedParameters, Decl(commentLeadingCloseBrace.ts, 0, 0))
+
+ /*comment2*/
+ } else {
+ commentedParameters(5, 6);
+>commentedParameters : Symbol(commentedParameters, Decl(commentLeadingCloseBrace.ts, 0, 0))
+ }
+}
diff --git a/tests/baselines/reference/commentLeadingCloseBrace.types b/tests/baselines/reference/commentLeadingCloseBrace.types
new file mode 100644
index 0000000000..444320737a
--- /dev/null
+++ b/tests/baselines/reference/commentLeadingCloseBrace.types
@@ -0,0 +1,30 @@
+=== tests/cases/compiler/commentLeadingCloseBrace.ts ===
+declare function commentedParameters(...args): any;
+>commentedParameters : (...args: any[]) => any
+>args : any[]
+
+function ifelse() {
+>ifelse : () => void
+
+ if (commentedParameters(1, 2)) {
+>commentedParameters(1, 2) : any
+>commentedParameters : (...args: any[]) => any
+>1 : 1
+>2 : 2
+
+ /*comment1*/
+ commentedParameters(3, 4);
+>commentedParameters(3, 4) : any
+>commentedParameters : (...args: any[]) => any
+>3 : 3
+>4 : 4
+
+ /*comment2*/
+ } else {
+ commentedParameters(5, 6);
+>commentedParameters(5, 6) : any
+>commentedParameters : (...args: any[]) => any
+>5 : 5
+>6 : 6
+ }
+}
diff --git a/tests/baselines/reference/commentOnArrayElement1.js b/tests/baselines/reference/commentOnArrayElement1.js
new file mode 100644
index 0000000000..960df336db
--- /dev/null
+++ b/tests/baselines/reference/commentOnArrayElement1.js
@@ -0,0 +1,17 @@
+//// [commentOnArrayElement1.ts]
+var array = [
+ /* element 1*/
+ 1
+ /* end of element 1 */,
+ 2
+ /* end of element 2 */
+];
+
+//// [commentOnArrayElement1.js]
+var array = [
+ /* element 1*/
+ 1
+ /* end of element 1 */ ,
+ 2
+ /* end of element 2 */
+];
diff --git a/tests/baselines/reference/commentOnArrayElement1.symbols b/tests/baselines/reference/commentOnArrayElement1.symbols
new file mode 100644
index 0000000000..a504aec5c3
--- /dev/null
+++ b/tests/baselines/reference/commentOnArrayElement1.symbols
@@ -0,0 +1,10 @@
+=== tests/cases/compiler/commentOnArrayElement1.ts ===
+var array = [
+>array : Symbol(array, Decl(commentOnArrayElement1.ts, 0, 3))
+
+ /* element 1*/
+ 1
+ /* end of element 1 */,
+ 2
+ /* end of element 2 */
+];
diff --git a/tests/baselines/reference/commentOnArrayElement1.types b/tests/baselines/reference/commentOnArrayElement1.types
new file mode 100644
index 0000000000..f6b541ec30
--- /dev/null
+++ b/tests/baselines/reference/commentOnArrayElement1.types
@@ -0,0 +1,15 @@
+=== tests/cases/compiler/commentOnArrayElement1.ts ===
+var array = [
+>array : number[]
+>[ /* element 1*/ 1 /* end of element 1 */, 2 /* end of element 2 */] : number[]
+
+ /* element 1*/
+ 1
+>1 : 1
+
+ /* end of element 1 */,
+ 2
+>2 : 2
+
+ /* end of element 2 */
+];
diff --git a/tests/baselines/reference/commentOnArrayElement2.js b/tests/baselines/reference/commentOnArrayElement2.js
new file mode 100644
index 0000000000..1c146caed6
--- /dev/null
+++ b/tests/baselines/reference/commentOnArrayElement2.js
@@ -0,0 +1,15 @@
+//// [commentOnArrayElement2.ts]
+var array = [
+ /* element 1*/
+ 1 /* end of element 1 */,
+ 2
+ /* end of element 2 */
+];
+
+//// [commentOnArrayElement2.js]
+var array = [
+ /* element 1*/
+ 1 /* end of element 1 */,
+ 2
+ /* end of element 2 */
+];
diff --git a/tests/baselines/reference/commentOnArrayElement2.symbols b/tests/baselines/reference/commentOnArrayElement2.symbols
new file mode 100644
index 0000000000..7a6c231664
--- /dev/null
+++ b/tests/baselines/reference/commentOnArrayElement2.symbols
@@ -0,0 +1,9 @@
+=== tests/cases/compiler/commentOnArrayElement2.ts ===
+var array = [
+>array : Symbol(array, Decl(commentOnArrayElement2.ts, 0, 3))
+
+ /* element 1*/
+ 1 /* end of element 1 */,
+ 2
+ /* end of element 2 */
+];
diff --git a/tests/baselines/reference/commentOnArrayElement2.types b/tests/baselines/reference/commentOnArrayElement2.types
new file mode 100644
index 0000000000..85647da74e
--- /dev/null
+++ b/tests/baselines/reference/commentOnArrayElement2.types
@@ -0,0 +1,14 @@
+=== tests/cases/compiler/commentOnArrayElement2.ts ===
+var array = [
+>array : number[]
+>[ /* element 1*/ 1 /* end of element 1 */, 2 /* end of element 2 */] : number[]
+
+ /* element 1*/
+ 1 /* end of element 1 */,
+>1 : 1
+
+ 2
+>2 : 2
+
+ /* end of element 2 */
+];
diff --git a/tests/baselines/reference/commentOnArrayElement3.js b/tests/baselines/reference/commentOnArrayElement3.js
new file mode 100644
index 0000000000..e31f8adf26
--- /dev/null
+++ b/tests/baselines/reference/commentOnArrayElement3.js
@@ -0,0 +1,19 @@
+//// [commentOnArrayElement3.ts]
+var array = [
+ /* element 1*/
+ 1
+ /* end of element 1 */,
+ 2
+ /* end of element 2 */, ,
+ /* extra comment */
+];
+
+//// [commentOnArrayElement3.js]
+var array = [
+ /* element 1*/
+ 1
+ /* end of element 1 */ ,
+ 2
+ /* end of element 2 */ ,
+ ,
+];
diff --git a/tests/baselines/reference/commentOnArrayElement3.symbols b/tests/baselines/reference/commentOnArrayElement3.symbols
new file mode 100644
index 0000000000..a1c61f7155
--- /dev/null
+++ b/tests/baselines/reference/commentOnArrayElement3.symbols
@@ -0,0 +1,11 @@
+=== tests/cases/compiler/commentOnArrayElement3.ts ===
+var array = [
+>array : Symbol(array, Decl(commentOnArrayElement3.ts, 0, 3))
+
+ /* element 1*/
+ 1
+ /* end of element 1 */,
+ 2
+ /* end of element 2 */, ,
+ /* extra comment */
+];
diff --git a/tests/baselines/reference/commentOnArrayElement3.types b/tests/baselines/reference/commentOnArrayElement3.types
new file mode 100644
index 0000000000..cd75c5a8db
--- /dev/null
+++ b/tests/baselines/reference/commentOnArrayElement3.types
@@ -0,0 +1,18 @@
+=== tests/cases/compiler/commentOnArrayElement3.ts ===
+var array = [
+>array : number[]
+>[ /* element 1*/ 1 /* end of element 1 */, 2 /* end of element 2 */, , /* extra comment */] : number[]
+
+ /* element 1*/
+ 1
+>1 : 1
+
+ /* end of element 1 */,
+ 2
+>2 : 2
+
+ /* end of element 2 */, ,
+> : undefined
+
+ /* extra comment */
+];
diff --git a/tests/baselines/reference/commentOnParameter1.js b/tests/baselines/reference/commentOnParameter1.js
new file mode 100644
index 0000000000..10ae2af126
--- /dev/null
+++ b/tests/baselines/reference/commentOnParameter1.js
@@ -0,0 +1,20 @@
+//// [commentOnParameter1.ts]
+function commentedParameters(
+/* Parameter a */
+a
+/* End of parameter a */
+/* Parameter b */
+,
+b
+/* End of parameter b */
+){}
+
+//// [commentOnParameter1.js]
+function commentedParameters(
+ /* Parameter a */
+ a
+ /* End of parameter a */
+ /* Parameter b */
+ , b
+ /* End of parameter b */
+) { }
diff --git a/tests/baselines/reference/commentOnParameter1.symbols b/tests/baselines/reference/commentOnParameter1.symbols
new file mode 100644
index 0000000000..13d91ac7ab
--- /dev/null
+++ b/tests/baselines/reference/commentOnParameter1.symbols
@@ -0,0 +1,16 @@
+=== tests/cases/compiler/commentOnParameter1.ts ===
+function commentedParameters(
+>commentedParameters : Symbol(commentedParameters, Decl(commentOnParameter1.ts, 0, 0))
+
+/* Parameter a */
+a
+>a : Symbol(a, Decl(commentOnParameter1.ts, 0, 29))
+
+/* End of parameter a */
+/* Parameter b */
+,
+b
+>b : Symbol(b, Decl(commentOnParameter1.ts, 5, 1))
+
+/* End of parameter b */
+){}
diff --git a/tests/baselines/reference/commentOnParameter1.types b/tests/baselines/reference/commentOnParameter1.types
new file mode 100644
index 0000000000..2a98a9a3f6
--- /dev/null
+++ b/tests/baselines/reference/commentOnParameter1.types
@@ -0,0 +1,16 @@
+=== tests/cases/compiler/commentOnParameter1.ts ===
+function commentedParameters(
+>commentedParameters : (a: any, b: any) => void
+
+/* Parameter a */
+a
+>a : any
+
+/* End of parameter a */
+/* Parameter b */
+,
+b
+>b : any
+
+/* End of parameter b */
+){}
diff --git a/tests/baselines/reference/commentOnParameter2.js b/tests/baselines/reference/commentOnParameter2.js
new file mode 100644
index 0000000000..d0c024a6b3
--- /dev/null
+++ b/tests/baselines/reference/commentOnParameter2.js
@@ -0,0 +1,18 @@
+//// [commentOnParameter2.ts]
+function commentedParameters(
+/* Parameter a */
+a /* End of parameter a */
+/* Parameter b */
+,
+b
+/* End of parameter b */
+){}
+
+//// [commentOnParameter2.js]
+function commentedParameters(
+ /* Parameter a */
+ a /* End of parameter a */
+ /* Parameter b */
+ , b
+ /* End of parameter b */
+) { }
diff --git a/tests/baselines/reference/commentOnParameter2.symbols b/tests/baselines/reference/commentOnParameter2.symbols
new file mode 100644
index 0000000000..5a6e904ed0
--- /dev/null
+++ b/tests/baselines/reference/commentOnParameter2.symbols
@@ -0,0 +1,15 @@
+=== tests/cases/compiler/commentOnParameter2.ts ===
+function commentedParameters(
+>commentedParameters : Symbol(commentedParameters, Decl(commentOnParameter2.ts, 0, 0))
+
+/* Parameter a */
+a /* End of parameter a */
+>a : Symbol(a, Decl(commentOnParameter2.ts, 0, 29))
+
+/* Parameter b */
+,
+b
+>b : Symbol(b, Decl(commentOnParameter2.ts, 4, 1))
+
+/* End of parameter b */
+){}
diff --git a/tests/baselines/reference/commentOnParameter2.types b/tests/baselines/reference/commentOnParameter2.types
new file mode 100644
index 0000000000..2d4c14db80
--- /dev/null
+++ b/tests/baselines/reference/commentOnParameter2.types
@@ -0,0 +1,15 @@
+=== tests/cases/compiler/commentOnParameter2.ts ===
+function commentedParameters(
+>commentedParameters : (a: any, b: any) => void
+
+/* Parameter a */
+a /* End of parameter a */
+>a : any
+
+/* Parameter b */
+,
+b
+>b : any
+
+/* End of parameter b */
+){}
diff --git a/tests/baselines/reference/commentOnParameter3.js b/tests/baselines/reference/commentOnParameter3.js
new file mode 100644
index 0000000000..56172af473
--- /dev/null
+++ b/tests/baselines/reference/commentOnParameter3.js
@@ -0,0 +1,9 @@
+//// [commentOnParameter3.ts]
+function commentedParameters(
+a /* parameter a */,
+b /* parameter b */,
+/* extra comment */
+) { }
+
+//// [commentOnParameter3.js]
+function commentedParameters(a /* parameter a */, b /* parameter b */) { }
diff --git a/tests/baselines/reference/commentOnParameter3.symbols b/tests/baselines/reference/commentOnParameter3.symbols
new file mode 100644
index 0000000000..4dda5f6d0e
--- /dev/null
+++ b/tests/baselines/reference/commentOnParameter3.symbols
@@ -0,0 +1,12 @@
+=== tests/cases/compiler/commentOnParameter3.ts ===
+function commentedParameters(
+>commentedParameters : Symbol(commentedParameters, Decl(commentOnParameter3.ts, 0, 0))
+
+a /* parameter a */,
+>a : Symbol(a, Decl(commentOnParameter3.ts, 0, 29))
+
+b /* parameter b */,
+>b : Symbol(b, Decl(commentOnParameter3.ts, 1, 20))
+
+/* extra comment */
+) { }
diff --git a/tests/baselines/reference/commentOnParameter3.types b/tests/baselines/reference/commentOnParameter3.types
new file mode 100644
index 0000000000..f5b23dbceb
--- /dev/null
+++ b/tests/baselines/reference/commentOnParameter3.types
@@ -0,0 +1,12 @@
+=== tests/cases/compiler/commentOnParameter3.ts ===
+function commentedParameters(
+>commentedParameters : (a: any, b: any) => void
+
+a /* parameter a */,
+>a : any
+
+b /* parameter b */,
+>b : any
+
+/* extra comment */
+) { }
diff --git a/tests/baselines/reference/commonJSImportAsPrimaryExpression.js b/tests/baselines/reference/commonJSImportAsPrimaryExpression.js
index b8cf42ea76..0cbb7470df 100644
--- a/tests/baselines/reference/commonJSImportAsPrimaryExpression.js
+++ b/tests/baselines/reference/commonJSImportAsPrimaryExpression.js
@@ -27,4 +27,5 @@ exports.C1 = C1;
"use strict";
var foo = require("./foo_0");
if (foo.C1.s1) {
+ // Should cause runtime import
}
diff --git a/tests/baselines/reference/duplicateLocalVariable1.js b/tests/baselines/reference/duplicateLocalVariable1.js
index 734b01eaed..39848b3bb6 100644
--- a/tests/baselines/reference/duplicateLocalVariable1.js
+++ b/tests/baselines/reference/duplicateLocalVariable1.js
@@ -391,6 +391,7 @@ var TestRunner = (function () {
}
}
if (testResult === false) {
+ //console.log(e.message);
}
}
if ((testcase.errorMessageRegEx !== undefined) && !exception) {
diff --git a/tests/baselines/reference/jsFileCompilationLetBeingRenamed.js b/tests/baselines/reference/jsFileCompilationLetBeingRenamed.js
index c9e16f3598..a87dad3c91 100644
--- a/tests/baselines/reference/jsFileCompilationLetBeingRenamed.js
+++ b/tests/baselines/reference/jsFileCompilationLetBeingRenamed.js
@@ -9,5 +9,6 @@ function foo(a) {
//// [out.js]
function foo(a) {
for (var a_1 = 0; a_1 < 10; a_1++) {
+ // do something
}
}
diff --git a/tests/baselines/reference/narrowExceptionVariableInCatchClause.js b/tests/baselines/reference/narrowExceptionVariableInCatchClause.js
index 5808ed7682..b7dbf717e3 100644
--- a/tests/baselines/reference/narrowExceptionVariableInCatchClause.js
+++ b/tests/baselines/reference/narrowExceptionVariableInCatchClause.js
@@ -27,6 +27,7 @@ function tryCatch() {
//// [narrowExceptionVariableInCatchClause.js]
function tryCatch() {
try {
+ // do stuff...
}
catch (err) {
if (isFooError(err)) {
diff --git a/tests/baselines/reference/noCatchBlock.js b/tests/baselines/reference/noCatchBlock.js
index 7b0404c3ca..ecc9c7f8c7 100644
--- a/tests/baselines/reference/noCatchBlock.js
+++ b/tests/baselines/reference/noCatchBlock.js
@@ -8,7 +8,9 @@ try {
//// [noCatchBlock.js]
try {
+ // ...
}
finally {
+ // N.B. No 'catch' block
}
//# sourceMappingURL=noCatchBlock.js.map
\ No newline at end of file
diff --git a/tests/baselines/reference/noCatchBlock.js.map b/tests/baselines/reference/noCatchBlock.js.map
index 149a2167f4..392ec58810 100644
--- a/tests/baselines/reference/noCatchBlock.js.map
+++ b/tests/baselines/reference/noCatchBlock.js.map
@@ -1,2 +1,2 @@
//// [noCatchBlock.js.map]
-{"version":3,"file":"noCatchBlock.js","sourceRoot":"","sources":["noCatchBlock.ts"],"names":[],"mappings":"AACA,IAAI,CAAC;AAEL,CAAC;QAAS,CAAC;AAEX,CAAC"}
\ No newline at end of file
+{"version":3,"file":"noCatchBlock.js","sourceRoot":"","sources":["noCatchBlock.ts"],"names":[],"mappings":"AACA,IAAI,CAAC;IACJ,MAAM;AACP,CAAC;QAAS,CAAC;IACV,wBAAwB;AACzB,CAAC"}
\ No newline at end of file
diff --git a/tests/baselines/reference/noCatchBlock.sourcemap.txt b/tests/baselines/reference/noCatchBlock.sourcemap.txt
index 18cb0d5a47..5210f12d73 100644
--- a/tests/baselines/reference/noCatchBlock.sourcemap.txt
+++ b/tests/baselines/reference/noCatchBlock.sourcemap.txt
@@ -12,6 +12,7 @@ sourceFile:noCatchBlock.ts
1 >
2 >^^^^
3 > ^
+4 > ^^^^^^->
1 >
>
2 >try
@@ -20,34 +21,51 @@ sourceFile:noCatchBlock.ts
2 >Emitted(1, 5) Source(2, 5) + SourceIndex(0)
3 >Emitted(1, 6) Source(2, 6) + SourceIndex(0)
---
+>>> // ...
+1->^^^^
+2 > ^^^^^^
+1->
+ >
+2 > // ...
+1->Emitted(2, 5) Source(3, 2) + SourceIndex(0)
+2 >Emitted(2, 11) Source(3, 8) + SourceIndex(0)
+---
>>>}
1 >
2 >^
3 > ^^^^^^^^^->
1 >
- > // ...
>
2 >}
-1 >Emitted(2, 1) Source(4, 1) + SourceIndex(0)
-2 >Emitted(2, 2) Source(4, 2) + SourceIndex(0)
+1 >Emitted(3, 1) Source(4, 1) + SourceIndex(0)
+2 >Emitted(3, 2) Source(4, 2) + SourceIndex(0)
---
>>>finally {
1->^^^^^^^^
2 > ^
+3 > ^^^^^^^^^^^^^^^^^^^^->
1-> finally
2 > {
-1->Emitted(3, 9) Source(4, 11) + SourceIndex(0)
-2 >Emitted(3, 10) Source(4, 12) + SourceIndex(0)
+1->Emitted(4, 9) Source(4, 11) + SourceIndex(0)
+2 >Emitted(4, 10) Source(4, 12) + SourceIndex(0)
+---
+>>> // N.B. No 'catch' block
+1->^^^^
+2 > ^^^^^^^^^^^^^^^^^^^^^^^^
+1->
+ >
+2 > // N.B. No 'catch' block
+1->Emitted(5, 5) Source(5, 2) + SourceIndex(0)
+2 >Emitted(5, 29) Source(5, 26) + SourceIndex(0)
---
>>>}
1 >
2 >^
3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^->
1 >
- > // N.B. No 'catch' block
>
2 >}
-1 >Emitted(4, 1) Source(6, 1) + SourceIndex(0)
-2 >Emitted(4, 2) Source(6, 2) + SourceIndex(0)
+1 >Emitted(6, 1) Source(6, 1) + SourceIndex(0)
+2 >Emitted(6, 2) Source(6, 2) + SourceIndex(0)
---
>>>//# sourceMappingURL=noCatchBlock.js.map
\ No newline at end of file
diff --git a/tests/baselines/reference/objectRestForOf.js b/tests/baselines/reference/objectRestForOf.js
index f8a88fe286..7ff72db06e 100644
--- a/tests/baselines/reference/objectRestForOf.js
+++ b/tests/baselines/reference/objectRestForOf.js
@@ -37,4 +37,5 @@ for (let _b of array) {
}
for (const norest of array.map(a => (Object.assign({}, a, { x: 'a string' })))) {
[norest.x, norest.y];
+ // x is now a string. who knows why.
}
diff --git a/tests/baselines/reference/parserRealSource14.js b/tests/baselines/reference/parserRealSource14.js
index 907efc6f26..635d122db0 100644
--- a/tests/baselines/reference/parserRealSource14.js
+++ b/tests/baselines/reference/parserRealSource14.js
@@ -1011,6 +1011,7 @@ var TypeScript;
ctx.path.push(cur);
}
else {
+ //logger.log("TODO: Ignoring node because minChar, limChar not better than previous node in stack");
}
}
// The AST walker skips comments, but we might be in one, so check the pre/post comments for this node manually
diff --git a/tests/baselines/reference/recursiveReturns.js b/tests/baselines/reference/recursiveReturns.js
index 18c9ed4dd7..d2619e1879 100644
--- a/tests/baselines/reference/recursiveReturns.js
+++ b/tests/baselines/reference/recursiveReturns.js
@@ -23,6 +23,7 @@ function R1() {
function R2() { R2(); }
function R3(n) {
if (n == 0) {
+ //return;
}
else {
R3(n--);
diff --git a/tests/baselines/reference/sourceMap-SkippedNode.js b/tests/baselines/reference/sourceMap-SkippedNode.js
index 656b5a244e..f25c0d75c8 100644
--- a/tests/baselines/reference/sourceMap-SkippedNode.js
+++ b/tests/baselines/reference/sourceMap-SkippedNode.js
@@ -7,7 +7,9 @@ try {
//// [sourceMap-SkippedNode.js]
try {
+ // ...
}
finally {
+ // N.B. No 'catch' block
}
//# sourceMappingURL=sourceMap-SkippedNode.js.map
\ No newline at end of file
diff --git a/tests/baselines/reference/sourceMap-SkippedNode.js.map b/tests/baselines/reference/sourceMap-SkippedNode.js.map
index 7734042464..f3444919d4 100644
--- a/tests/baselines/reference/sourceMap-SkippedNode.js.map
+++ b/tests/baselines/reference/sourceMap-SkippedNode.js.map
@@ -1,2 +1,2 @@
//// [sourceMap-SkippedNode.js.map]
-{"version":3,"file":"sourceMap-SkippedNode.js","sourceRoot":"","sources":["sourceMap-SkippedNode.ts"],"names":[],"mappings":"AAAA,IAAI,CAAC;AAEL,CAAC;QAAS,CAAC;AAEX,CAAC"}
\ No newline at end of file
+{"version":3,"file":"sourceMap-SkippedNode.js","sourceRoot":"","sources":["sourceMap-SkippedNode.ts"],"names":[],"mappings":"AAAA,IAAI,CAAC;IACL,MAAM;AACN,CAAC;QAAS,CAAC;IACX,wBAAwB;AACxB,CAAC"}
\ No newline at end of file
diff --git a/tests/baselines/reference/sourceMap-SkippedNode.sourcemap.txt b/tests/baselines/reference/sourceMap-SkippedNode.sourcemap.txt
index f68320a531..c54676a697 100644
--- a/tests/baselines/reference/sourceMap-SkippedNode.sourcemap.txt
+++ b/tests/baselines/reference/sourceMap-SkippedNode.sourcemap.txt
@@ -12,6 +12,7 @@ sourceFile:sourceMap-SkippedNode.ts
1 >
2 >^^^^
3 > ^
+4 > ^^^^^^->
1 >
2 >try
3 > {
@@ -19,34 +20,51 @@ sourceFile:sourceMap-SkippedNode.ts
2 >Emitted(1, 5) Source(1, 5) + SourceIndex(0)
3 >Emitted(1, 6) Source(1, 6) + SourceIndex(0)
---
+>>> // ...
+1->^^^^
+2 > ^^^^^^
+1->
+ >
+2 > // ...
+1->Emitted(2, 5) Source(2, 1) + SourceIndex(0)
+2 >Emitted(2, 11) Source(2, 7) + SourceIndex(0)
+---
>>>}
1 >
2 >^
3 > ^^^^^^^^^->
1 >
- >// ...
>
2 >}
-1 >Emitted(2, 1) Source(3, 1) + SourceIndex(0)
-2 >Emitted(2, 2) Source(3, 2) + SourceIndex(0)
+1 >Emitted(3, 1) Source(3, 1) + SourceIndex(0)
+2 >Emitted(3, 2) Source(3, 2) + SourceIndex(0)
---
>>>finally {
1->^^^^^^^^
2 > ^
+3 > ^^^^^^^^^^^^^^^^^^^^->
1-> finally
2 > {
-1->Emitted(3, 9) Source(3, 11) + SourceIndex(0)
-2 >Emitted(3, 10) Source(3, 12) + SourceIndex(0)
+1->Emitted(4, 9) Source(3, 11) + SourceIndex(0)
+2 >Emitted(4, 10) Source(3, 12) + SourceIndex(0)
+---
+>>> // N.B. No 'catch' block
+1->^^^^
+2 > ^^^^^^^^^^^^^^^^^^^^^^^^
+1->
+ >
+2 > // N.B. No 'catch' block
+1->Emitted(5, 5) Source(4, 1) + SourceIndex(0)
+2 >Emitted(5, 29) Source(4, 25) + SourceIndex(0)
---
>>>}
1 >
2 >^
3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^->
1 >
- >// N.B. No 'catch' block
>
2 >}
-1 >Emitted(4, 1) Source(5, 1) + SourceIndex(0)
-2 >Emitted(4, 2) Source(5, 2) + SourceIndex(0)
+1 >Emitted(6, 1) Source(5, 1) + SourceIndex(0)
+2 >Emitted(6, 2) Source(5, 2) + SourceIndex(0)
---
>>>//# sourceMappingURL=sourceMap-SkippedNode.js.map
\ No newline at end of file
diff --git a/tests/cases/compiler/commentLeadingCloseBrace.ts b/tests/cases/compiler/commentLeadingCloseBrace.ts
new file mode 100644
index 0000000000..bdf7a604a9
--- /dev/null
+++ b/tests/cases/compiler/commentLeadingCloseBrace.ts
@@ -0,0 +1,11 @@
+declare function commentedParameters(...args): any;
+
+function ifelse() {
+ if (commentedParameters(1, 2)) {
+ /*comment1*/
+ commentedParameters(3, 4);
+ /*comment2*/
+ } else {
+ commentedParameters(5, 6);
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/compiler/commentOnArrayElement1.ts b/tests/cases/compiler/commentOnArrayElement1.ts
new file mode 100644
index 0000000000..3dc4ce29bf
--- /dev/null
+++ b/tests/cases/compiler/commentOnArrayElement1.ts
@@ -0,0 +1,7 @@
+var array = [
+ /* element 1*/
+ 1
+ /* end of element 1 */,
+ 2
+ /* end of element 2 */
+];
\ No newline at end of file
diff --git a/tests/cases/compiler/commentOnArrayElement2.ts b/tests/cases/compiler/commentOnArrayElement2.ts
new file mode 100644
index 0000000000..80c7f8fb1a
--- /dev/null
+++ b/tests/cases/compiler/commentOnArrayElement2.ts
@@ -0,0 +1,6 @@
+var array = [
+ /* element 1*/
+ 1 /* end of element 1 */,
+ 2
+ /* end of element 2 */
+];
\ No newline at end of file
diff --git a/tests/cases/compiler/commentOnArrayElement3.ts b/tests/cases/compiler/commentOnArrayElement3.ts
new file mode 100644
index 0000000000..26de853f3e
--- /dev/null
+++ b/tests/cases/compiler/commentOnArrayElement3.ts
@@ -0,0 +1,8 @@
+var array = [
+ /* element 1*/
+ 1
+ /* end of element 1 */,
+ 2
+ /* end of element 2 */, ,
+ /* extra comment */
+];
\ No newline at end of file
diff --git a/tests/cases/compiler/commentOnParameter1.ts b/tests/cases/compiler/commentOnParameter1.ts
new file mode 100644
index 0000000000..6a17c90950
--- /dev/null
+++ b/tests/cases/compiler/commentOnParameter1.ts
@@ -0,0 +1,9 @@
+function commentedParameters(
+/* Parameter a */
+a
+/* End of parameter a */
+/* Parameter b */
+,
+b
+/* End of parameter b */
+){}
\ No newline at end of file
diff --git a/tests/cases/compiler/commentOnParameter2.ts b/tests/cases/compiler/commentOnParameter2.ts
new file mode 100644
index 0000000000..2722eab554
--- /dev/null
+++ b/tests/cases/compiler/commentOnParameter2.ts
@@ -0,0 +1,8 @@
+function commentedParameters(
+/* Parameter a */
+a /* End of parameter a */
+/* Parameter b */
+,
+b
+/* End of parameter b */
+){}
\ No newline at end of file
diff --git a/tests/cases/compiler/commentOnParameter3.ts b/tests/cases/compiler/commentOnParameter3.ts
new file mode 100644
index 0000000000..57eda10f33
--- /dev/null
+++ b/tests/cases/compiler/commentOnParameter3.ts
@@ -0,0 +1,5 @@
+function commentedParameters(
+a /* parameter a */,
+b /* parameter b */,
+/* extra comment */
+) { }
\ No newline at end of file