diff --git a/src/compiler/transformers/ts.ts b/src/compiler/transformers/ts.ts index 343f64be48361..08c28c9ea098f 100644 --- a/src/compiler/transformers/ts.ts +++ b/src/compiler/transformers/ts.ts @@ -952,8 +952,8 @@ namespace ts { member.type, /*initializer*/ undefined ); - setCommentRange(updated, node); - setSourceMapRange(updated, node); + setCommentRange(updated, member); + setSourceMapRange(updated, member); return updated; } return member; diff --git a/tests/baselines/reference/classConstructorParametersCommentPlacement.js b/tests/baselines/reference/classConstructorParametersCommentPlacement.js new file mode 100644 index 0000000000000..31d9e14cb1221 --- /dev/null +++ b/tests/baselines/reference/classConstructorParametersCommentPlacement.js @@ -0,0 +1,27 @@ +//// [classConstructorParametersCommentPlacement.ts] +// some comment +class A { + #a = "private hello"; + #b = "another private name"; + a = "public property"; + constructor(private b = "something") { } +} + + +//// [classConstructorParametersCommentPlacement.js] +var _classPrivateFieldSet = function (receiver, privateMap, value) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to set private field on non-instance"); } privateMap.set(receiver, value); return value; }; +var _a, _b; +// some comment +var A = /** @class */ (function () { + function A(b) { + if (b === void 0) { b = "something"; } + _a.set(this, void 0); + _b.set(this, void 0); + this.b = b; + _classPrivateFieldSet(this, _a, "private hello"); + _classPrivateFieldSet(this, _b, "another private name"); + this.a = "public property"; + } + return A; +}()); +_a = new WeakMap(), _b = new WeakMap(); diff --git a/tests/baselines/reference/classConstructorParametersCommentPlacement.symbols b/tests/baselines/reference/classConstructorParametersCommentPlacement.symbols new file mode 100644 index 0000000000000..110e1571bef80 --- /dev/null +++ b/tests/baselines/reference/classConstructorParametersCommentPlacement.symbols @@ -0,0 +1,18 @@ +=== tests/cases/conformance/classes/constructorDeclarations/classConstructorParametersCommentPlacement.ts === +// some comment +class A { +>A : Symbol(A, Decl(classConstructorParametersCommentPlacement.ts, 0, 0)) + + #a = "private hello"; +>#a : Symbol(A.#a, Decl(classConstructorParametersCommentPlacement.ts, 1, 9)) + + #b = "another private name"; +>#b : Symbol(A.#b, Decl(classConstructorParametersCommentPlacement.ts, 2, 25)) + + a = "public property"; +>a : Symbol(A.a, Decl(classConstructorParametersCommentPlacement.ts, 3, 32)) + + constructor(private b = "something") { } +>b : Symbol(A.b, Decl(classConstructorParametersCommentPlacement.ts, 5, 16)) +} + diff --git a/tests/baselines/reference/classConstructorParametersCommentPlacement.types b/tests/baselines/reference/classConstructorParametersCommentPlacement.types new file mode 100644 index 0000000000000..f5b0cf9c9c244 --- /dev/null +++ b/tests/baselines/reference/classConstructorParametersCommentPlacement.types @@ -0,0 +1,22 @@ +=== tests/cases/conformance/classes/constructorDeclarations/classConstructorParametersCommentPlacement.ts === +// some comment +class A { +>A : A + + #a = "private hello"; +>#a : string +>"private hello" : "private hello" + + #b = "another private name"; +>#b : string +>"another private name" : "another private name" + + a = "public property"; +>a : string +>"public property" : "public property" + + constructor(private b = "something") { } +>b : string +>"something" : "something" +} + diff --git a/tests/cases/conformance/classes/constructorDeclarations/classConstructorParametersCommentPlacement.ts b/tests/cases/conformance/classes/constructorDeclarations/classConstructorParametersCommentPlacement.ts new file mode 100644 index 0000000000000..958d890f9c9e2 --- /dev/null +++ b/tests/cases/conformance/classes/constructorDeclarations/classConstructorParametersCommentPlacement.ts @@ -0,0 +1,8 @@ + +// some comment +class A { + #a = "private hello"; + #b = "another private name"; + a = "public property"; + constructor(private b = "something") { } +}