Emit pinned/tripleslash reference comments of ambient declarations

Fixes #501
This commit is contained in:
Sheetal Nandi 2014-08-22 14:35:07 -07:00
parent 393464eb18
commit 5353128387
18 changed files with 222 additions and 4 deletions

View File

@ -1989,7 +1989,14 @@ module ts {
}
function emitNode(node: Node) {
if (!node || node.flags & NodeFlags.Ambient) return;
if (!node) {
return;
}
if (node.flags & NodeFlags.Ambient) {
return emitPinnedOrTripleSlashComments(node);
}
switch (node.kind) {
case SyntaxKind.Identifier:
return emitIdentifier(<Identifier>node);

View File

@ -1,10 +1,20 @@
//// [commentOnAmbientClass1.ts]
//// [tests/cases/compiler/commentOnAmbientClass1.ts] ////
//// [a.ts]
/*! Keep this pinned comment */
declare class C {
}
// Don't keep this comment.
declare class D {
}
//// [b.ts]
///<reference path="a.ts"/>
declare class E extends C {
}
//// [commentOnAmbientClass1.js]
//// [a.js]
/*! Keep this pinned comment */
//// [b.js]
///<reference path="a.ts"/>

View File

@ -1,4 +1,10 @@
=== tests/cases/compiler/commentOnAmbientClass1.ts ===
=== tests/cases/compiler/b.ts ===
///<reference path="a.ts"/>
declare class E extends C {
>E : E
>C : C
}
=== tests/cases/compiler/a.ts ===
/*! Keep this pinned comment */
declare class C {
>C : C
@ -8,3 +14,4 @@ declare class C {
declare class D {
>D : D
}

View File

@ -0,0 +1,23 @@
//// [tests/cases/compiler/commentOnAmbientEnum.ts] ////
//// [a.ts]
/*! Keep this pinned comment */
declare enum C {
a,
b,
c
}
// Don't keep this comment.
declare enum D {
}
//// [b.ts]
///<reference path="a.ts"/>
declare enum E {
}
//// [a.js]
/*! Keep this pinned comment */
//// [b.js]
///<reference path="a.ts"/>

View File

@ -0,0 +1,25 @@
=== tests/cases/compiler/b.ts ===
///<reference path="a.ts"/>
declare enum E {
>E : E
}
=== tests/cases/compiler/a.ts ===
/*! Keep this pinned comment */
declare enum C {
>C : C
a,
>a : C
b,
>b : C
c
>c : C
}
// Don't keep this comment.
declare enum D {
>D : D
}

View File

@ -0,0 +1,25 @@
//// [tests/cases/compiler/commentOnAmbientModule.ts] ////
//// [a.ts]
/*! Keep this pinned comment */
declare module C {
function foo();
}
// Don't keep this comment.
declare module D {
class bar { }
}
//// [b.ts]
///<reference path="a.ts"/>
declare module E {
class foobar extends D.bar {
foo();
}
}
//// [a.js]
/*! Keep this pinned comment */
//// [b.js]
///<reference path="a.ts"/>

View File

@ -0,0 +1,31 @@
=== tests/cases/compiler/b.ts ===
///<reference path="a.ts"/>
declare module E {
>E : typeof E
class foobar extends D.bar {
>foobar : foobar
>D : D
>bar : bar
foo();
>foo : () => any
}
}
=== tests/cases/compiler/a.ts ===
/*! Keep this pinned comment */
declare module C {
>C : typeof C
function foo();
>foo : () => any
}
// Don't keep this comment.
declare module D {
>D : typeof D
class bar { }
>bar : bar
}

View File

@ -6,3 +6,4 @@ declare var v: number;
declare var y: number;
//// [commentOnAmbientVariable1.js]
/*! Keep this pinned comment */

View File

@ -11,4 +11,5 @@ x = 2;
//// [commentOnAmbientVariable2_1.js]
var y = 1;
//// [commentOnAmbientVariable2_2.js]
/// <reference path='commentOnAmbientVariable2_1.ts'/>
x = 2;

View File

@ -0,0 +1,17 @@
//// [tests/cases/compiler/commentOnAmbientfunction.ts] ////
//// [a.ts]
/*! Keep this pinned comment */
declare function foo();
// Don't keep this comment.
declare function bar();
//// [b.ts]
///<reference path="a.ts"/>
declare function foobar(a: typeof foo): typeof bar;
//// [a.js]
/*! Keep this pinned comment */
//// [b.js]
///<reference path="a.ts"/>

View File

@ -0,0 +1,17 @@
=== tests/cases/compiler/b.ts ===
///<reference path="a.ts"/>
declare function foobar(a: typeof foo): typeof bar;
>foobar : (a: () => any) => () => any
>a : () => any
>foo : () => any
>bar : () => any
=== tests/cases/compiler/a.ts ===
/*! Keep this pinned comment */
declare function foo();
>foo : () => any
// Don't keep this comment.
declare function bar();
>bar : () => any

View File

@ -22,3 +22,4 @@ interface C {
var q1;
var x = q1.each(function (x) { return c.log(x); });
//// [file2.js]
///<reference path='file1.ts'/>

View File

@ -49,6 +49,8 @@ var Microsoft;
/// <reference path="emitMemberAccessExpression_file3.ts" />
"use strict";
//// [emitMemberAccessExpression_file3.js]
/// <reference path="emitMemberAccessExpression_file2.ts" />
/// <reference path="emitMemberAccessExpression_file1.ts" />
var Microsoft;
(function (Microsoft) {
(function (PeopleAtWork) {

View File

@ -17,6 +17,7 @@ module bar {
//// [reuseInnerModuleMember_0.js]
//// [reuseInnerModuleMember_1.js]
///<reference path='reuseInnerModuleMember_0.ts'/>
var bar;
(function (bar) {
var x;

View File

@ -1,7 +1,13 @@
//@filename: a.ts
/*! Keep this pinned comment */
declare class C {
}
// Don't keep this comment.
declare class D {
}
//@filename: b.ts
///<reference path="a.ts"/>
declare class E extends C {
}

View File

@ -0,0 +1,16 @@
//@filename: a.ts
/*! Keep this pinned comment */
declare enum C {
a,
b,
c
}
// Don't keep this comment.
declare enum D {
}
//@filename: b.ts
///<reference path="a.ts"/>
declare enum E {
}

View File

@ -0,0 +1,18 @@
//@filename: a.ts
/*! Keep this pinned comment */
declare module C {
function foo();
}
// Don't keep this comment.
declare module D {
class bar { }
}
//@filename: b.ts
///<reference path="a.ts"/>
declare module E {
class foobar extends D.bar {
foo();
}
}

View File

@ -0,0 +1,10 @@
//@filename: a.ts
/*! Keep this pinned comment */
declare function foo();
// Don't keep this comment.
declare function bar();
//@filename: b.ts
///<reference path="a.ts"/>
declare function foobar(a: typeof foo): typeof bar;