From b5bd1bf505d54143d685a2aa92e0ba9f2074616b Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 19 Aug 2014 12:38:56 -0700 Subject: [PATCH] Emit detached comments for constructor body --- src/compiler/emitter.ts | 3 +++ .../detachedCommentAtStartOfConstructor1.js | 23 ++++++++++++++++++ .../detachedCommentAtStartOfConstructor2.js | 24 +++++++++++++++++++ tests/baselines/reference/lambdaArgCrash.js | 2 +- .../detachedCommentAtStartOfConstructor1.ts | 10 ++++++++ .../detachedCommentAtStartOfConstructor2.ts | 11 +++++++++ 6 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/detachedCommentAtStartOfConstructor1.js create mode 100644 tests/baselines/reference/detachedCommentAtStartOfConstructor2.js create mode 100644 tests/cases/compiler/detachedCommentAtStartOfConstructor1.ts create mode 100644 tests/cases/compiler/detachedCommentAtStartOfConstructor2.ts diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index cd4c000b9ef..25e8661879d 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -1616,6 +1616,9 @@ module ts { write(" {"); scopeEmitStart(node, "constructor"); increaseIndent(); + if (ctor) { + emitDetachedComments((ctor.body).statements); + } emitCaptureThisForNodeIfNecessary(node); if (ctor) { emitDefaultValueAssignments(ctor); diff --git a/tests/baselines/reference/detachedCommentAtStartOfConstructor1.js b/tests/baselines/reference/detachedCommentAtStartOfConstructor1.js new file mode 100644 index 00000000000..13312aea362 --- /dev/null +++ b/tests/baselines/reference/detachedCommentAtStartOfConstructor1.js @@ -0,0 +1,23 @@ +//// [detachedCommentAtStartOfConstructor1.ts] +class TestFile { + public message: string; + public name; + constructor(message: string) { + /// Test summary + /// + var getMessage = () => message + this.name; + this.message = getMessage(); + } +} + +//// [detachedCommentAtStartOfConstructor1.js] +var TestFile = (function () { + function TestFile(message) { + var _this = this; + /// Test summary + /// + var getMessage = function () { return message + _this.name; }; + this.message = getMessage(); + } + return TestFile; +})(); diff --git a/tests/baselines/reference/detachedCommentAtStartOfConstructor2.js b/tests/baselines/reference/detachedCommentAtStartOfConstructor2.js new file mode 100644 index 00000000000..754b432c7c5 --- /dev/null +++ b/tests/baselines/reference/detachedCommentAtStartOfConstructor2.js @@ -0,0 +1,24 @@ +//// [detachedCommentAtStartOfConstructor2.ts] +class TestFile { + public message: string; + public name: string; + constructor(message: string) { + /// Test summary + /// + + var getMessage = () => message + this.name; + this.message = getMessage(); + } +} + +//// [detachedCommentAtStartOfConstructor2.js] +var TestFile = (function () { + function TestFile(message) { + /// Test summary + /// + var _this = this; + var getMessage = function () { return message + _this.name; }; + this.message = getMessage(); + } + return TestFile; +})(); diff --git a/tests/baselines/reference/lambdaArgCrash.js b/tests/baselines/reference/lambdaArgCrash.js index f86ffe5743d..d3de40dcb0b 100644 --- a/tests/baselines/reference/lambdaArgCrash.js +++ b/tests/baselines/reference/lambdaArgCrash.js @@ -43,9 +43,9 @@ var __extends = this.__extends || function (d, b) { }; var Event = (function () { function Event() { - this._listeners = []; // TODO: remove this._listeners = []; + this._listeners = []; } Event.prototype.add = function (listener) { /// Registers a new listener for the event. diff --git a/tests/cases/compiler/detachedCommentAtStartOfConstructor1.ts b/tests/cases/compiler/detachedCommentAtStartOfConstructor1.ts new file mode 100644 index 00000000000..84a72d3595b --- /dev/null +++ b/tests/cases/compiler/detachedCommentAtStartOfConstructor1.ts @@ -0,0 +1,10 @@ +class TestFile { + public message: string; + public name; + constructor(message: string) { + /// Test summary + /// + var getMessage = () => message + this.name; + this.message = getMessage(); + } +} \ No newline at end of file diff --git a/tests/cases/compiler/detachedCommentAtStartOfConstructor2.ts b/tests/cases/compiler/detachedCommentAtStartOfConstructor2.ts new file mode 100644 index 00000000000..e115afec607 --- /dev/null +++ b/tests/cases/compiler/detachedCommentAtStartOfConstructor2.ts @@ -0,0 +1,11 @@ +class TestFile { + public message: string; + public name: string; + constructor(message: string) { + /// Test summary + /// + + var getMessage = () => message + this.name; + this.message = getMessage(); + } +} \ No newline at end of file