diff --git a/src/compiler/transformers/es2015.ts b/src/compiler/transformers/es2015.ts index 7e4769a3e50..2178292f48f 100644 --- a/src/compiler/transformers/es2015.ts +++ b/src/compiler/transformers/es2015.ts @@ -1311,24 +1311,27 @@ namespace ts { setTextRange( createBlock([ createStatement( - setTextRange( - createAssignment( - setEmitFlags(getMutableClone(name), EmitFlags.NoSourceMap), - setEmitFlags(initializer, EmitFlags.NoSourceMap | getEmitFlags(initializer)) + setEmitFlags( + setTextRange( + createAssignment( + setEmitFlags(getMutableClone(name), EmitFlags.NoSourceMap), + setEmitFlags(initializer, EmitFlags.NoSourceMap | getEmitFlags(initializer) | EmitFlags.NoComments) + ), + parameter ), - parameter + EmitFlags.NoComments ) ) ]), parameter ), - EmitFlags.SingleLine | EmitFlags.NoTrailingSourceMap | EmitFlags.NoTokenSourceMaps + EmitFlags.SingleLine | EmitFlags.NoTrailingSourceMap | EmitFlags.NoTokenSourceMaps | EmitFlags.NoComments ) ); startOnNewLine(statement); setTextRange(statement, parameter); - setEmitFlags(statement, EmitFlags.NoTokenSourceMaps | EmitFlags.NoTrailingSourceMap | EmitFlags.CustomPrologue); + setEmitFlags(statement, EmitFlags.NoTokenSourceMaps | EmitFlags.NoTrailingSourceMap | EmitFlags.CustomPrologue | EmitFlags.NoComments); statements.push(statement); } diff --git a/src/compiler/transformers/ts.ts b/src/compiler/transformers/ts.ts index 059ae73ea2b..9cd0ab93303 100644 --- a/src/compiler/transformers/ts.ts +++ b/src/compiler/transformers/ts.ts @@ -1147,20 +1147,23 @@ namespace ts { setEmitFlags(localName, EmitFlags.NoComments); return startOnNewLine( - setTextRange( - createStatement( - createAssignment( - setTextRange( - createPropertyAccess( - createThis(), - propertyName + setEmitFlags( + setTextRange( + createStatement( + createAssignment( + setTextRange( + createPropertyAccess( + createThis(), + propertyName + ), + node.name ), - node.name - ), - localName - ) + localName + ) + ), + moveRangePos(node, -1) ), - moveRangePos(node, -1) + EmitFlags.NoComments ) ); } diff --git a/tests/baselines/reference/defaultParameterTrailingComments.js b/tests/baselines/reference/defaultParameterTrailingComments.js new file mode 100644 index 00000000000..9f116e85c1e --- /dev/null +++ b/tests/baselines/reference/defaultParameterTrailingComments.js @@ -0,0 +1,17 @@ +//// [defaultParameterTrailingComments.ts] +class C { + constructor(defaultParam: boolean = false /* Emit only once*/) {} +} + +function foo(defaultParam = 10 /*emit only once*/) {} + +//// [defaultParameterTrailingComments.js] +var C = /** @class */ (function () { + function C(defaultParam /* Emit only once*/) { + if (defaultParam === void 0) { defaultParam = false; } + } + return C; +}()); +function foo(defaultParam /*emit only once*/) { + if (defaultParam === void 0) { defaultParam = 10; } +} diff --git a/tests/baselines/reference/defaultParameterTrailingComments.symbols b/tests/baselines/reference/defaultParameterTrailingComments.symbols new file mode 100644 index 00000000000..e65497b70f7 --- /dev/null +++ b/tests/baselines/reference/defaultParameterTrailingComments.symbols @@ -0,0 +1,12 @@ +=== tests/cases/compiler/defaultParameterTrailingComments.ts === +class C { +>C : Symbol(C, Decl(defaultParameterTrailingComments.ts, 0, 0)) + + constructor(defaultParam: boolean = false /* Emit only once*/) {} +>defaultParam : Symbol(defaultParam, Decl(defaultParameterTrailingComments.ts, 1, 16)) +} + +function foo(defaultParam = 10 /*emit only once*/) {} +>foo : Symbol(foo, Decl(defaultParameterTrailingComments.ts, 2, 1)) +>defaultParam : Symbol(defaultParam, Decl(defaultParameterTrailingComments.ts, 4, 13)) + diff --git a/tests/baselines/reference/defaultParameterTrailingComments.types b/tests/baselines/reference/defaultParameterTrailingComments.types new file mode 100644 index 00000000000..0b8389a4834 --- /dev/null +++ b/tests/baselines/reference/defaultParameterTrailingComments.types @@ -0,0 +1,14 @@ +=== tests/cases/compiler/defaultParameterTrailingComments.ts === +class C { +>C : C + + constructor(defaultParam: boolean = false /* Emit only once*/) {} +>defaultParam : boolean +>false : false +} + +function foo(defaultParam = 10 /*emit only once*/) {} +>foo : (defaultParam?: number) => void +>defaultParam : number +>10 : 10 + diff --git a/tests/baselines/reference/parameterReferenceInInitializer1.js b/tests/baselines/reference/parameterReferenceInInitializer1.js index 08f1ae1cebc..01959aca130 100644 --- a/tests/baselines/reference/parameterReferenceInInitializer1.js +++ b/tests/baselines/reference/parameterReferenceInInitializer1.js @@ -19,8 +19,8 @@ function fn(y, set) { var C = /** @class */ (function () { function C(y, x // expected to work, but actually doesn't ) { - if (x === void 0) { x = fn(y, function (y, x) { return y.x = x; }); } // expected to work, but actually doesn't - this.x = x; // expected to work, but actually doesn't + if (x === void 0) { x = fn(y, function (y, x) { return y.x = x; }); } + this.x = x; } return C; }()); diff --git a/tests/cases/compiler/defaultParameterTrailingComments.ts b/tests/cases/compiler/defaultParameterTrailingComments.ts new file mode 100644 index 00000000000..f5e4c8f7dca --- /dev/null +++ b/tests/cases/compiler/defaultParameterTrailingComments.ts @@ -0,0 +1,5 @@ +class C { + constructor(defaultParam: boolean = false /* Emit only once*/) {} +} + +function foo(defaultParam = 10 /*emit only once*/) {} \ No newline at end of file diff --git a/tests/cases/user/TypeScript-Node-Starter/TypeScript-Node-Starter b/tests/cases/user/TypeScript-Node-Starter/TypeScript-Node-Starter index ed149eb0c78..40bdb4eadab 160000 --- a/tests/cases/user/TypeScript-Node-Starter/TypeScript-Node-Starter +++ b/tests/cases/user/TypeScript-Node-Starter/TypeScript-Node-Starter @@ -1 +1 @@ -Subproject commit ed149eb0c787b1195a95b44105822c64bb6eb636 +Subproject commit 40bdb4eadabc9fbed7d83e3f26817a931c0763b6