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