diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 643dc978469..9eb7c66a532 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -1157,9 +1157,11 @@ module ts { } function emitAccessor(node: AccessorDeclaration) { + emitLeadingComments(node); write(node.kind === SyntaxKind.GetAccessor ? "get " : "set "); emit(node.name); emitSignatureAndBody(node); + emitTrailingComments(node); } function emitFunctionDeclaration(node: FunctionDeclaration) { @@ -1353,21 +1355,25 @@ module ts { increaseIndent(); if (accessors.getAccessor) { writeLine(); + emitLeadingComments(accessors.getAccessor); write("get: "); emitStart(accessors.getAccessor); write("function "); emitSignatureAndBody(accessors.getAccessor); emitEnd(accessors.getAccessor); write(","); + emitTrailingComments(accessors.getAccessor); } if (accessors.setAccessor) { writeLine(); + emitLeadingComments(accessors.setAccessor); write("set: "); emitStart(accessors.setAccessor); write("function "); emitSignatureAndBody(accessors.setAccessor); emitEnd(accessors.setAccessor); write(","); + emitTrailingComments(accessors.setAccessor); } writeLine(); write("enumerable: true,"); diff --git a/tests/baselines/reference/commentsClassMembers.js b/tests/baselines/reference/commentsClassMembers.js index 999ba787bd9..fe9413cdde3 100644 --- a/tests/baselines/reference/commentsClassMembers.js +++ b/tests/baselines/reference/commentsClassMembers.js @@ -223,9 +223,11 @@ var c1 = (function () { return this.p1 + b; }; Object.defineProperty(c1.prototype, "p3", { + /** getter property*/ get: function () { return this.p2(this.p1); }, + /** setter property*/ set: function (value) { this.p1 = this.p2(value); }, @@ -236,9 +238,11 @@ var c1 = (function () { return this.p1 + b; }; Object.defineProperty(c1.prototype, "pp3", { + /** getter property*/ get: function () { return this.pp2(this.pp1); }, + /** setter property*/ set: function (value) { this.pp1 = this.pp2(value); }, @@ -249,9 +253,11 @@ var c1 = (function () { return c1.s1 + b; }; Object.defineProperty(c1, "s3", { + /** static getter property*/ get: function () { return c1.s2(c1.s1); }, + /** setter property*/ set: function (value) { c1.s1 = c1.s2(value); }, @@ -301,9 +307,11 @@ var c1 = (function () { return this.a_p1 + b; }; Object.defineProperty(c1.prototype, "a_p3", { + // getter property get: function () { return this.a_p2(this.a_p1); }, + // setter property set: function (value) { this.a_p1 = this.a_p2(value); }, @@ -314,9 +322,11 @@ var c1 = (function () { return this.a_p1 + b; }; Object.defineProperty(c1.prototype, "a_pp3", { + // getter property get: function () { return this.a_pp2(this.a_pp1); }, + // setter property set: function (value) { this.a_pp1 = this.a_pp2(value); }, @@ -327,9 +337,11 @@ var c1 = (function () { return c1.a_s1 + b; }; Object.defineProperty(c1, "a_s3", { + // static getter property get: function () { return c1.s2(c1.s1); }, + // setter property set: function (value) { c1.a_s1 = c1.a_s2(value); }, @@ -340,9 +352,11 @@ var c1 = (function () { return this.b_p1 + b; }; Object.defineProperty(c1.prototype, "b_p3", { + /** getter property */ get: function () { return this.b_p2(this.b_p1); }, + /** setter property */ set: function (value) { this.b_p1 = this.b_p2(value); }, @@ -353,9 +367,11 @@ var c1 = (function () { return this.b_p1 + b; }; Object.defineProperty(c1.prototype, "b_pp3", { + /** getter property */ get: function () { return this.b_pp2(this.b_pp1); }, + /** setter property */ set: function (value) { this.b_pp1 = this.b_pp2(value); }, @@ -366,9 +382,13 @@ var c1 = (function () { return c1.b_s1 + b; }; Object.defineProperty(c1, "b_s3", { + /** static getter property + */ get: function () { return c1.s2(c1.s1); }, + /** setter property + */ set: function (value) { c1.b_s1 = c1.b_s2(value); }, @@ -403,6 +423,7 @@ var cProperties = (function () { function cProperties() { } Object.defineProperty(cProperties.prototype, "p1", { + /** getter only property*/ get: function () { return this.val; }, @@ -417,6 +438,7 @@ var cProperties = (function () { configurable: true }); Object.defineProperty(cProperties.prototype, "p2", { + /**setter only property*/ set: function (value) { this.val = value; }, diff --git a/tests/baselines/reference/commentsInheritance.js b/tests/baselines/reference/commentsInheritance.js index edcd80ab347..bf49bb3d3d6 100644 --- a/tests/baselines/reference/commentsInheritance.js +++ b/tests/baselines/reference/commentsInheritance.js @@ -181,6 +181,7 @@ var c2 = (function () { c2.prototype.c2_f1 = function () { }; Object.defineProperty(c2.prototype, "c2_prop", { + /** c2 c2_prop*/ get: function () { return 10; }, @@ -199,6 +200,7 @@ var c2 = (function () { c2.prototype.f1 = function () { }; Object.defineProperty(c2.prototype, "prop", { + /** c2 prop*/ get: function () { return 10; }, @@ -224,6 +226,7 @@ var c3 = (function (_super) { c3.prototype.f1 = function () { }; Object.defineProperty(c3.prototype, "prop", { + /** c3 prop*/ get: function () { return 10; }, diff --git a/tests/baselines/reference/commentsdoNotEmitComments.js b/tests/baselines/reference/commentsdoNotEmitComments.js index de6d954bf6d..a436206cb7d 100644 --- a/tests/baselines/reference/commentsdoNotEmitComments.js +++ b/tests/baselines/reference/commentsdoNotEmitComments.js @@ -105,9 +105,11 @@ var c = (function () { return this.b; }; Object.defineProperty(c.prototype, "prop1", { + /** getter comment*/ get: function () { return this.b; }, + /** setter comment*/ set: function (val) { this.b = val; }, diff --git a/tests/baselines/reference/commentsemitComments.js b/tests/baselines/reference/commentsemitComments.js index 856d9ea13ee..222559a0156 100644 --- a/tests/baselines/reference/commentsemitComments.js +++ b/tests/baselines/reference/commentsemitComments.js @@ -105,9 +105,11 @@ var c = (function () { return this.b; }; Object.defineProperty(c.prototype, "prop1", { + /** getter comment*/ get: function () { return this.b; }, + /** setter comment*/ set: function (val) { this.b = val; }, diff --git a/tests/baselines/reference/declFileAccessors.js b/tests/baselines/reference/declFileAccessors.js index 28d54dcaa8c..69de7c1d8b0 100644 --- a/tests/baselines/reference/declFileAccessors.js +++ b/tests/baselines/reference/declFileAccessors.js @@ -106,27 +106,33 @@ var c1 = (function () { function c1() { } Object.defineProperty(c1.prototype, "p3", { + /** getter property*/ get: function () { return 10; }, + /** setter property*/ set: function (value) { }, enumerable: true, configurable: true }); Object.defineProperty(c1.prototype, "pp3", { + /** private getter property*/ get: function () { return 10; }, + /** private setter property*/ set: function (value) { }, enumerable: true, configurable: true }); Object.defineProperty(c1, "s3", { + /** static getter property*/ get: function () { return 10; }, + /** setter property*/ set: function (value) { }, enumerable: true, @@ -160,6 +166,7 @@ var c1 = (function () { configurable: true }); Object.defineProperty(c1.prototype, "onlyGetter", { + // Only getter property get: function () { return 10; }, @@ -167,6 +174,7 @@ var c1 = (function () { configurable: true }); Object.defineProperty(c1.prototype, "onlySetter", { + // Only setter property set: function (value) { }, enumerable: true, @@ -180,27 +188,33 @@ var c2 = (function () { function c2() { } Object.defineProperty(c2.prototype, "p3", { + /** getter property*/ get: function () { return 10; }, + /** setter property*/ set: function (value) { }, enumerable: true, configurable: true }); Object.defineProperty(c2.prototype, "pp3", { + /** private getter property*/ get: function () { return 10; }, + /** private setter property*/ set: function (value) { }, enumerable: true, configurable: true }); Object.defineProperty(c2, "s3", { + /** static getter property*/ get: function () { return 10; }, + /** setter property*/ set: function (value) { }, enumerable: true, @@ -234,6 +248,7 @@ var c2 = (function () { configurable: true }); Object.defineProperty(c2.prototype, "onlyGetter", { + // Only getter property get: function () { return 10; }, @@ -241,6 +256,7 @@ var c2 = (function () { configurable: true }); Object.defineProperty(c2.prototype, "onlySetter", { + // Only setter property set: function (value) { }, enumerable: true,