diff --git a/src/compiler/declarationEmitter.ts b/src/compiler/declarationEmitter.ts
index 1a1f0c5f16e..426000f6282 100644
--- a/src/compiler/declarationEmitter.ts
+++ b/src/compiler/declarationEmitter.ts
@@ -107,15 +107,14 @@ namespace ts {
let emittedReferencedFiles: SourceFile[] = [];
let prevModuleElementDeclarationEmitInfo: ModuleElementDeclarationEmitInfo[] = [];
forEach(host.getSourceFiles(), sourceFile => {
- if (!isExternalModuleOrDeclarationFile(sourceFile)) {
- noDeclare = false;
+ if (!isDeclarationFile(sourceFile)) {
// Check what references need to be added
if (!compilerOptions.noResolve) {
forEach(sourceFile.referencedFiles, fileReference => {
let referencedFile = tryResolveScriptReference(host, sourceFile, fileReference);
- // If the reference file is a declaration file or an external module, emit that reference
- if (referencedFile && (isExternalModuleOrDeclarationFile(referencedFile) &&
+ // If the reference file is a declaration file, emit that reference
+ if (referencedFile && (isDeclarationFile(referencedFile) &&
!contains(emittedReferencedFiles, referencedFile))) { // If the file reference was not already emitted
writeReferencePath(referencedFile);
@@ -123,7 +122,10 @@ namespace ts {
}
});
}
+ }
+ if (!isExternalModuleOrDeclarationFile(sourceFile)) {
+ noDeclare = false;
emitSourceFile(sourceFile);
}
else if (isExternalModule(sourceFile)) {
diff --git a/tests/baselines/reference/outModuleTripleSlashRefs.js b/tests/baselines/reference/outModuleTripleSlashRefs.js
new file mode 100644
index 00000000000..dc0cdb22ddd
--- /dev/null
+++ b/tests/baselines/reference/outModuleTripleSlashRefs.js
@@ -0,0 +1,116 @@
+//// [tests/cases/compiler/outModuleTripleSlashRefs.ts] ////
+
+//// [a.ts]
+
+///
+export class A {
+ member: typeof GlobalFoo;
+}
+
+//// [b.ts]
+///
+class Foo {
+ member: Bar;
+}
+declare var GlobalFoo: Foo;
+
+//// [c.d.ts]
+///
+declare class Bar {
+ member: Baz;
+}
+
+//// [d.d.ts]
+declare class Baz {
+ member: number;
+}
+
+//// [b.ts]
+import {A} from "./ref/a";
+export class B extends A { }
+
+
+//// [a.js]
+define(["require", "exports"], function (require, exports) {
+ ///
+ var A = (function () {
+ function A() {
+ }
+ return A;
+ })();
+ exports.A = A;
+});
+//# sourceMappingURL=a.js.map//// [b.js]
+var __extends = (this && this.__extends) || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+};
+define(["require", "exports", "./ref/a"], function (require, exports, a_1) {
+ var B = (function (_super) {
+ __extends(B, _super);
+ function B() {
+ _super.apply(this, arguments);
+ }
+ return B;
+ })(a_1.A);
+ exports.B = B;
+});
+//# sourceMappingURL=b.js.map//// [all.js]
+var __extends = (this && this.__extends) || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+};
+///
+var Foo = (function () {
+ function Foo() {
+ }
+ return Foo;
+})();
+define("tests/cases/compiler/ref/a", ["require", "exports"], function (require, exports) {
+ ///
+ var A = (function () {
+ function A() {
+ }
+ return A;
+ })();
+ exports.A = A;
+});
+define("tests/cases/compiler/b", ["require", "exports", "tests/cases/compiler/ref/a"], function (require, exports, a_1) {
+ var B = (function (_super) {
+ __extends(B, _super);
+ function B() {
+ _super.apply(this, arguments);
+ }
+ return B;
+ })(a_1.A);
+ exports.B = B;
+});
+//# sourceMappingURL=all.js.map
+
+//// [a.d.ts]
+///
+export declare class A {
+ member: typeof GlobalFoo;
+}
+//// [b.d.ts]
+import { A } from "./ref/a";
+export declare class B extends A {
+}
+//// [all.d.ts]
+///
+declare class Foo {
+ member: Bar;
+}
+declare var GlobalFoo: Foo;
+declare module "tests/cases/compiler/ref/a" {
+ export class A {
+ member: typeof GlobalFoo;
+ }
+}
+declare module "tests/cases/compiler/b" {
+ import { A } from "tests/cases/compiler/ref/a";
+ export class B extends A {
+ }
+}
diff --git a/tests/baselines/reference/outModuleTripleSlashRefs.js.map b/tests/baselines/reference/outModuleTripleSlashRefs.js.map
new file mode 100644
index 00000000000..0eeee4a82d5
--- /dev/null
+++ b/tests/baselines/reference/outModuleTripleSlashRefs.js.map
@@ -0,0 +1,4 @@
+//// [a.js.map]
+{"version":3,"file":"a.js","sourceRoot":"","sources":["a.ts"],"names":["A","A.constructor"],"mappings":";IACA,+BAA+B;IAC/B;QAAAA;QAEAC,CAACA;QAADD,QAACA;IAADA,CAACA,AAFD,IAEC;IAFY,SAAC,IAEb,CAAA"}//// [b.js.map]
+{"version":3,"file":"b.js","sourceRoot":"","sources":["b.ts"],"names":["B","B.constructor"],"mappings":";;;;;;IACA;QAAuBA,qBAACA;QAAxBA;YAAuBC,8BAACA;QAAGA,CAACA;QAADD,QAACA;IAADA,CAACA,AAA5B,EAAuB,KAAC,EAAI;IAAf,SAAC,IAAc,CAAA"}//// [all.js.map]
+{"version":3,"file":"all.js","sourceRoot":"","sources":["tests/cases/compiler/ref/b.ts","tests/cases/compiler/ref/a.ts","tests/cases/compiler/b.ts"],"names":["Foo","Foo.constructor","A","A.constructor","B","B.constructor"],"mappings":";;;;;AAAA,iCAAiC;AACjC;IAAAA;IAEAC,CAACA;IAADD,UAACA;AAADA,CAACA,AAFD,IAEC;;ICFD,+BAA+B;IAC/B;QAAAE;QAEAC,CAACA;QAADD,QAACA;IAADA,CAACA,AAFD,IAEC;IAFY,SAAC,IAEb,CAAA;;;ICHD;QAAuBE,qBAACA;QAAxBA;YAAuBC,8BAACA;QAAGA,CAACA;QAADD,QAACA;IAADA,CAACA,AAA5B,EAAuB,KAAC,EAAI;IAAf,SAAC,IAAc,CAAA"}
\ No newline at end of file
diff --git a/tests/baselines/reference/outModuleTripleSlashRefs.sourcemap.txt b/tests/baselines/reference/outModuleTripleSlashRefs.sourcemap.txt
new file mode 100644
index 00000000000..6e9070cbe04
--- /dev/null
+++ b/tests/baselines/reference/outModuleTripleSlashRefs.sourcemap.txt
@@ -0,0 +1,424 @@
+===================================================================
+JsFile: a.js
+mapUrl: a.js.map
+sourceRoot:
+sources: a.ts
+===================================================================
+-------------------------------------------------------------------
+emittedFile:tests/cases/compiler/ref/a.js
+sourceFile:a.ts
+-------------------------------------------------------------------
+>>>define(["require", "exports"], function (require, exports) {
+>>> ///
+1 >^^^^
+2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+1 >
+ >
+2 > ///
+1 >Emitted(2, 5) Source(2, 1) + SourceIndex(0)
+2 >Emitted(2, 36) Source(2, 32) + SourceIndex(0)
+---
+>>> var A = (function () {
+1 >^^^^
+2 > ^^^^^^^^^^^^^^^^^^^->
+1 >
+ >
+1 >Emitted(3, 5) Source(3, 1) + SourceIndex(0)
+---
+>>> function A() {
+1->^^^^^^^^
+2 > ^^->
+1->
+1->Emitted(4, 9) Source(3, 1) + SourceIndex(0) name (A)
+---
+>>> }
+1->^^^^^^^^
+2 > ^
+3 > ^^^^^^^^^->
+1->export class A {
+ > member: typeof GlobalFoo;
+ >
+2 > }
+1->Emitted(5, 9) Source(5, 1) + SourceIndex(0) name (A.constructor)
+2 >Emitted(5, 10) Source(5, 2) + SourceIndex(0) name (A.constructor)
+---
+>>> return A;
+1->^^^^^^^^
+2 > ^^^^^^^^
+1->
+2 > }
+1->Emitted(6, 9) Source(5, 1) + SourceIndex(0) name (A)
+2 >Emitted(6, 17) Source(5, 2) + SourceIndex(0) name (A)
+---
+>>> })();
+1 >^^^^
+2 > ^
+3 >
+4 > ^^^^
+5 > ^^^^^^^^^^->
+1 >
+2 > }
+3 >
+4 > export class A {
+ > member: typeof GlobalFoo;
+ > }
+1 >Emitted(7, 5) Source(5, 1) + SourceIndex(0) name (A)
+2 >Emitted(7, 6) Source(5, 2) + SourceIndex(0) name (A)
+3 >Emitted(7, 6) Source(3, 1) + SourceIndex(0)
+4 >Emitted(7, 10) Source(5, 2) + SourceIndex(0)
+---
+>>> exports.A = A;
+1->^^^^
+2 > ^^^^^^^^^
+3 > ^^^^
+4 > ^
+1->
+2 > A
+3 > {
+ > member: typeof GlobalFoo;
+ > }
+4 >
+1->Emitted(8, 5) Source(3, 14) + SourceIndex(0)
+2 >Emitted(8, 14) Source(3, 15) + SourceIndex(0)
+3 >Emitted(8, 18) Source(5, 2) + SourceIndex(0)
+4 >Emitted(8, 19) Source(5, 2) + SourceIndex(0)
+---
+>>>});
+>>>//# sourceMappingURL=a.js.map===================================================================
+JsFile: b.js
+mapUrl: b.js.map
+sourceRoot:
+sources: b.ts
+===================================================================
+-------------------------------------------------------------------
+emittedFile:tests/cases/compiler/b.js
+sourceFile:b.ts
+-------------------------------------------------------------------
+>>>var __extends = (this && this.__extends) || function (d, b) {
+>>> for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+>>> function __() { this.constructor = d; }
+>>> d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+>>>};
+>>>define(["require", "exports", "./ref/a"], function (require, exports, a_1) {
+>>> var B = (function (_super) {
+1 >^^^^
+2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^->
+1 >import {A} from "./ref/a";
+ >
+1 >Emitted(7, 5) Source(2, 1) + SourceIndex(0)
+---
+>>> __extends(B, _super);
+1->^^^^^^^^
+2 > ^^^^^^^^^^^^^^^^^^^^^
+1->export class B extends
+2 > A
+1->Emitted(8, 9) Source(2, 24) + SourceIndex(0) name (B)
+2 >Emitted(8, 30) Source(2, 25) + SourceIndex(0) name (B)
+---
+>>> function B() {
+1 >^^^^^^^^
+2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^->
+1 >
+1 >Emitted(9, 9) Source(2, 1) + SourceIndex(0) name (B)
+---
+>>> _super.apply(this, arguments);
+1->^^^^^^^^^^^^
+2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+1->export class B extends
+2 > A
+1->Emitted(10, 13) Source(2, 24) + SourceIndex(0) name (B.constructor)
+2 >Emitted(10, 43) Source(2, 25) + SourceIndex(0) name (B.constructor)
+---
+>>> }
+1 >^^^^^^^^
+2 > ^
+3 > ^^^^^^^^^->
+1 > {
+2 > }
+1 >Emitted(11, 9) Source(2, 28) + SourceIndex(0) name (B.constructor)
+2 >Emitted(11, 10) Source(2, 29) + SourceIndex(0) name (B.constructor)
+---
+>>> return B;
+1->^^^^^^^^
+2 > ^^^^^^^^
+1->
+2 > }
+1->Emitted(12, 9) Source(2, 28) + SourceIndex(0) name (B)
+2 >Emitted(12, 17) Source(2, 29) + SourceIndex(0) name (B)
+---
+>>> })(a_1.A);
+1 >^^^^
+2 > ^
+3 >
+4 > ^^
+5 > ^^^^^
+6 > ^^
+7 > ^^^^^->
+1 >
+2 > }
+3 >
+4 > export class B extends
+5 > A
+6 > { }
+1 >Emitted(13, 5) Source(2, 28) + SourceIndex(0) name (B)
+2 >Emitted(13, 6) Source(2, 29) + SourceIndex(0) name (B)
+3 >Emitted(13, 6) Source(2, 1) + SourceIndex(0)
+4 >Emitted(13, 8) Source(2, 24) + SourceIndex(0)
+5 >Emitted(13, 13) Source(2, 25) + SourceIndex(0)
+6 >Emitted(13, 15) Source(2, 29) + SourceIndex(0)
+---
+>>> exports.B = B;
+1->^^^^
+2 > ^^^^^^^^^
+3 > ^^^^
+4 > ^
+1->
+2 > B
+3 > extends A { }
+4 >
+1->Emitted(14, 5) Source(2, 14) + SourceIndex(0)
+2 >Emitted(14, 14) Source(2, 15) + SourceIndex(0)
+3 >Emitted(14, 18) Source(2, 29) + SourceIndex(0)
+4 >Emitted(14, 19) Source(2, 29) + SourceIndex(0)
+---
+>>>});
+>>>//# sourceMappingURL=b.js.map===================================================================
+JsFile: all.js
+mapUrl: all.js.map
+sourceRoot:
+sources: tests/cases/compiler/ref/b.ts,tests/cases/compiler/ref/a.ts,tests/cases/compiler/b.ts
+===================================================================
+-------------------------------------------------------------------
+emittedFile:all.js
+sourceFile:tests/cases/compiler/ref/b.ts
+-------------------------------------------------------------------
+>>>var __extends = (this && this.__extends) || function (d, b) {
+>>> for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+>>> function __() { this.constructor = d; }
+>>> d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+>>>};
+>>>///
+1 >
+2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+1 >
+2 >///
+1 >Emitted(6, 1) Source(1, 1) + SourceIndex(0)
+2 >Emitted(6, 34) Source(1, 34) + SourceIndex(0)
+---
+>>>var Foo = (function () {
+1 >
+2 >^^^^^^^^^^^^^^^^^^^^^->
+1 >
+ >
+1 >Emitted(7, 1) Source(2, 1) + SourceIndex(0)
+---
+>>> function Foo() {
+1->^^^^
+2 > ^^->
+1->
+1->Emitted(8, 5) Source(2, 1) + SourceIndex(0) name (Foo)
+---
+>>> }
+1->^^^^
+2 > ^
+3 > ^^^^^^^^^^^->
+1->class Foo {
+ > member: Bar;
+ >
+2 > }
+1->Emitted(9, 5) Source(4, 1) + SourceIndex(0) name (Foo.constructor)
+2 >Emitted(9, 6) Source(4, 2) + SourceIndex(0) name (Foo.constructor)
+---
+>>> return Foo;
+1->^^^^
+2 > ^^^^^^^^^^
+1->
+2 > }
+1->Emitted(10, 5) Source(4, 1) + SourceIndex(0) name (Foo)
+2 >Emitted(10, 15) Source(4, 2) + SourceIndex(0) name (Foo)
+---
+>>>})();
+1 >
+2 >^
+3 >
+4 > ^^^^
+5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^->
+1 >
+2 >}
+3 >
+4 > class Foo {
+ > member: Bar;
+ > }
+1 >Emitted(11, 1) Source(4, 1) + SourceIndex(0) name (Foo)
+2 >Emitted(11, 2) Source(4, 2) + SourceIndex(0) name (Foo)
+3 >Emitted(11, 2) Source(2, 1) + SourceIndex(0)
+4 >Emitted(11, 6) Source(4, 2) + SourceIndex(0)
+---
+-------------------------------------------------------------------
+emittedFile:all.js
+sourceFile:tests/cases/compiler/ref/a.ts
+-------------------------------------------------------------------
+>>>define("tests/cases/compiler/ref/a", ["require", "exports"], function (require, exports) {
+>>> ///
+1->^^^^
+2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+1->
+ >
+2 > ///
+1->Emitted(13, 5) Source(2, 1) + SourceIndex(1)
+2 >Emitted(13, 36) Source(2, 32) + SourceIndex(1)
+---
+>>> var A = (function () {
+1 >^^^^
+2 > ^^^^^^^^^^^^^^^^^^^->
+1 >
+ >
+1 >Emitted(14, 5) Source(3, 1) + SourceIndex(1)
+---
+>>> function A() {
+1->^^^^^^^^
+2 > ^^->
+1->
+1->Emitted(15, 9) Source(3, 1) + SourceIndex(1) name (A)
+---
+>>> }
+1->^^^^^^^^
+2 > ^
+3 > ^^^^^^^^^->
+1->export class A {
+ > member: typeof GlobalFoo;
+ >
+2 > }
+1->Emitted(16, 9) Source(5, 1) + SourceIndex(1) name (A.constructor)
+2 >Emitted(16, 10) Source(5, 2) + SourceIndex(1) name (A.constructor)
+---
+>>> return A;
+1->^^^^^^^^
+2 > ^^^^^^^^
+1->
+2 > }
+1->Emitted(17, 9) Source(5, 1) + SourceIndex(1) name (A)
+2 >Emitted(17, 17) Source(5, 2) + SourceIndex(1) name (A)
+---
+>>> })();
+1 >^^^^
+2 > ^
+3 >
+4 > ^^^^
+5 > ^^^^^^^^^^->
+1 >
+2 > }
+3 >
+4 > export class A {
+ > member: typeof GlobalFoo;
+ > }
+1 >Emitted(18, 5) Source(5, 1) + SourceIndex(1) name (A)
+2 >Emitted(18, 6) Source(5, 2) + SourceIndex(1) name (A)
+3 >Emitted(18, 6) Source(3, 1) + SourceIndex(1)
+4 >Emitted(18, 10) Source(5, 2) + SourceIndex(1)
+---
+>>> exports.A = A;
+1->^^^^
+2 > ^^^^^^^^^
+3 > ^^^^
+4 > ^
+1->
+2 > A
+3 > {
+ > member: typeof GlobalFoo;
+ > }
+4 >
+1->Emitted(19, 5) Source(3, 14) + SourceIndex(1)
+2 >Emitted(19, 14) Source(3, 15) + SourceIndex(1)
+3 >Emitted(19, 18) Source(5, 2) + SourceIndex(1)
+4 >Emitted(19, 19) Source(5, 2) + SourceIndex(1)
+---
+-------------------------------------------------------------------
+emittedFile:all.js
+sourceFile:tests/cases/compiler/b.ts
+-------------------------------------------------------------------
+>>>});
+>>>define("tests/cases/compiler/b", ["require", "exports", "tests/cases/compiler/ref/a"], function (require, exports, a_1) {
+>>> var B = (function (_super) {
+1 >^^^^
+2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^->
+1 >import {A} from "./ref/a";
+ >
+1 >Emitted(22, 5) Source(2, 1) + SourceIndex(2)
+---
+>>> __extends(B, _super);
+1->^^^^^^^^
+2 > ^^^^^^^^^^^^^^^^^^^^^
+1->export class B extends
+2 > A
+1->Emitted(23, 9) Source(2, 24) + SourceIndex(2) name (B)
+2 >Emitted(23, 30) Source(2, 25) + SourceIndex(2) name (B)
+---
+>>> function B() {
+1 >^^^^^^^^
+2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^->
+1 >
+1 >Emitted(24, 9) Source(2, 1) + SourceIndex(2) name (B)
+---
+>>> _super.apply(this, arguments);
+1->^^^^^^^^^^^^
+2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+1->export class B extends
+2 > A
+1->Emitted(25, 13) Source(2, 24) + SourceIndex(2) name (B.constructor)
+2 >Emitted(25, 43) Source(2, 25) + SourceIndex(2) name (B.constructor)
+---
+>>> }
+1 >^^^^^^^^
+2 > ^
+3 > ^^^^^^^^^->
+1 > {
+2 > }
+1 >Emitted(26, 9) Source(2, 28) + SourceIndex(2) name (B.constructor)
+2 >Emitted(26, 10) Source(2, 29) + SourceIndex(2) name (B.constructor)
+---
+>>> return B;
+1->^^^^^^^^
+2 > ^^^^^^^^
+1->
+2 > }
+1->Emitted(27, 9) Source(2, 28) + SourceIndex(2) name (B)
+2 >Emitted(27, 17) Source(2, 29) + SourceIndex(2) name (B)
+---
+>>> })(a_1.A);
+1 >^^^^
+2 > ^
+3 >
+4 > ^^
+5 > ^^^^^
+6 > ^^
+7 > ^^^^^->
+1 >
+2 > }
+3 >
+4 > export class B extends
+5 > A
+6 > { }
+1 >Emitted(28, 5) Source(2, 28) + SourceIndex(2) name (B)
+2 >Emitted(28, 6) Source(2, 29) + SourceIndex(2) name (B)
+3 >Emitted(28, 6) Source(2, 1) + SourceIndex(2)
+4 >Emitted(28, 8) Source(2, 24) + SourceIndex(2)
+5 >Emitted(28, 13) Source(2, 25) + SourceIndex(2)
+6 >Emitted(28, 15) Source(2, 29) + SourceIndex(2)
+---
+>>> exports.B = B;
+1->^^^^
+2 > ^^^^^^^^^
+3 > ^^^^
+4 > ^
+1->
+2 > B
+3 > extends A { }
+4 >
+1->Emitted(29, 5) Source(2, 14) + SourceIndex(2)
+2 >Emitted(29, 14) Source(2, 15) + SourceIndex(2)
+3 >Emitted(29, 18) Source(2, 29) + SourceIndex(2)
+4 >Emitted(29, 19) Source(2, 29) + SourceIndex(2)
+---
+>>>});
+>>>//# sourceMappingURL=all.js.map
\ No newline at end of file
diff --git a/tests/baselines/reference/outModuleTripleSlashRefs.symbols b/tests/baselines/reference/outModuleTripleSlashRefs.symbols
new file mode 100644
index 00000000000..f8d550aedb6
--- /dev/null
+++ b/tests/baselines/reference/outModuleTripleSlashRefs.symbols
@@ -0,0 +1,50 @@
+=== tests/cases/compiler/ref/a.ts ===
+
+///
+export class A {
+>A : Symbol(A, Decl(a.ts, 0, 0))
+
+ member: typeof GlobalFoo;
+>member : Symbol(member, Decl(a.ts, 2, 16))
+>GlobalFoo : Symbol(GlobalFoo, Decl(b.ts, 4, 11))
+}
+
+=== tests/cases/compiler/ref/b.ts ===
+///
+class Foo {
+>Foo : Symbol(Foo, Decl(b.ts, 0, 0))
+
+ member: Bar;
+>member : Symbol(member, Decl(b.ts, 1, 11))
+>Bar : Symbol(Bar, Decl(c.d.ts, 0, 0))
+}
+declare var GlobalFoo: Foo;
+>GlobalFoo : Symbol(GlobalFoo, Decl(b.ts, 4, 11))
+>Foo : Symbol(Foo, Decl(b.ts, 0, 0))
+
+=== tests/cases/compiler/ref/c.d.ts ===
+///
+declare class Bar {
+>Bar : Symbol(Bar, Decl(c.d.ts, 0, 0))
+
+ member: Baz;
+>member : Symbol(member, Decl(c.d.ts, 1, 19))
+>Baz : Symbol(Baz, Decl(d.d.ts, 0, 0))
+}
+
+=== tests/cases/compiler/ref/d.d.ts ===
+declare class Baz {
+>Baz : Symbol(Baz, Decl(d.d.ts, 0, 0))
+
+ member: number;
+>member : Symbol(member, Decl(d.d.ts, 0, 19))
+}
+
+=== tests/cases/compiler/b.ts ===
+import {A} from "./ref/a";
+>A : Symbol(A, Decl(b.ts, 0, 8))
+
+export class B extends A { }
+>B : Symbol(B, Decl(b.ts, 0, 26))
+>A : Symbol(A, Decl(b.ts, 0, 8))
+
diff --git a/tests/baselines/reference/outModuleTripleSlashRefs.types b/tests/baselines/reference/outModuleTripleSlashRefs.types
new file mode 100644
index 00000000000..917704cce5a
--- /dev/null
+++ b/tests/baselines/reference/outModuleTripleSlashRefs.types
@@ -0,0 +1,50 @@
+=== tests/cases/compiler/ref/a.ts ===
+
+///
+export class A {
+>A : A
+
+ member: typeof GlobalFoo;
+>member : Foo
+>GlobalFoo : Foo
+}
+
+=== tests/cases/compiler/ref/b.ts ===
+///
+class Foo {
+>Foo : Foo
+
+ member: Bar;
+>member : Bar
+>Bar : Bar
+}
+declare var GlobalFoo: Foo;
+>GlobalFoo : Foo
+>Foo : Foo
+
+=== tests/cases/compiler/ref/c.d.ts ===
+///
+declare class Bar {
+>Bar : Bar
+
+ member: Baz;
+>member : Baz
+>Baz : Baz
+}
+
+=== tests/cases/compiler/ref/d.d.ts ===
+declare class Baz {
+>Baz : Baz
+
+ member: number;
+>member : number
+}
+
+=== tests/cases/compiler/b.ts ===
+import {A} from "./ref/a";
+>A : typeof A
+
+export class B extends A { }
+>B : B
+>A : A
+
diff --git a/tests/baselines/reference/project/mapRootAbsolutePathMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts b/tests/baselines/reference/project/mapRootAbsolutePathMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
index bc9ccf61daf..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/mapRootAbsolutePathMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
+++ b/tests/baselines/reference/project/mapRootAbsolutePathMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/mapRootAbsolutePathMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts b/tests/baselines/reference/project/mapRootAbsolutePathMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
index bc9ccf61daf..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/mapRootAbsolutePathMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
+++ b/tests/baselines/reference/project/mapRootAbsolutePathMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/mapRootAbsolutePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts b/tests/baselines/reference/project/mapRootAbsolutePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
index 375869ffc94..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/mapRootAbsolutePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
+++ b/tests/baselines/reference/project/mapRootAbsolutePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/mapRootAbsolutePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts b/tests/baselines/reference/project/mapRootAbsolutePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
index 375869ffc94..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/mapRootAbsolutePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
+++ b/tests/baselines/reference/project/mapRootAbsolutePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/mapRootRelativePathMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts b/tests/baselines/reference/project/mapRootRelativePathMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
index bc9ccf61daf..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/mapRootRelativePathMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
+++ b/tests/baselines/reference/project/mapRootRelativePathMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/mapRootRelativePathMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts b/tests/baselines/reference/project/mapRootRelativePathMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
index bc9ccf61daf..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/mapRootRelativePathMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
+++ b/tests/baselines/reference/project/mapRootRelativePathMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/mapRootRelativePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts b/tests/baselines/reference/project/mapRootRelativePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
index 375869ffc94..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/mapRootRelativePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
+++ b/tests/baselines/reference/project/mapRootRelativePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/mapRootRelativePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts b/tests/baselines/reference/project/mapRootRelativePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
index 375869ffc94..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/mapRootRelativePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
+++ b/tests/baselines/reference/project/mapRootRelativePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/maprootUrlMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts b/tests/baselines/reference/project/maprootUrlMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
index bc9ccf61daf..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/maprootUrlMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
+++ b/tests/baselines/reference/project/maprootUrlMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/maprootUrlMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts b/tests/baselines/reference/project/maprootUrlMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
index bc9ccf61daf..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/maprootUrlMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
+++ b/tests/baselines/reference/project/maprootUrlMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/maprootUrlMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts b/tests/baselines/reference/project/maprootUrlMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
index 375869ffc94..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/maprootUrlMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
+++ b/tests/baselines/reference/project/maprootUrlMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/maprootUrlMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts b/tests/baselines/reference/project/maprootUrlMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
index 375869ffc94..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/maprootUrlMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
+++ b/tests/baselines/reference/project/maprootUrlMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/maprootUrlsourcerootUrlMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts b/tests/baselines/reference/project/maprootUrlsourcerootUrlMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
index bc9ccf61daf..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/maprootUrlsourcerootUrlMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
+++ b/tests/baselines/reference/project/maprootUrlsourcerootUrlMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/maprootUrlsourcerootUrlMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts b/tests/baselines/reference/project/maprootUrlsourcerootUrlMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
index bc9ccf61daf..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/maprootUrlsourcerootUrlMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
+++ b/tests/baselines/reference/project/maprootUrlsourcerootUrlMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/maprootUrlsourcerootUrlMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts b/tests/baselines/reference/project/maprootUrlsourcerootUrlMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
index 375869ffc94..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/maprootUrlsourcerootUrlMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
+++ b/tests/baselines/reference/project/maprootUrlsourcerootUrlMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/maprootUrlsourcerootUrlMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts b/tests/baselines/reference/project/maprootUrlsourcerootUrlMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
index 375869ffc94..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/maprootUrlsourcerootUrlMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
+++ b/tests/baselines/reference/project/maprootUrlsourcerootUrlMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/outMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts b/tests/baselines/reference/project/outMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
index bc9ccf61daf..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/outMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
+++ b/tests/baselines/reference/project/outMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/outMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts b/tests/baselines/reference/project/outMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
index bc9ccf61daf..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/outMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
+++ b/tests/baselines/reference/project/outMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/outMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts b/tests/baselines/reference/project/outMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
index 375869ffc94..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/outMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
+++ b/tests/baselines/reference/project/outMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/outMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts b/tests/baselines/reference/project/outMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
index 375869ffc94..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/outMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
+++ b/tests/baselines/reference/project/outMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/sourceRootAbsolutePathMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts b/tests/baselines/reference/project/sourceRootAbsolutePathMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
index bc9ccf61daf..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/sourceRootAbsolutePathMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
+++ b/tests/baselines/reference/project/sourceRootAbsolutePathMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/sourceRootAbsolutePathMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts b/tests/baselines/reference/project/sourceRootAbsolutePathMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
index bc9ccf61daf..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/sourceRootAbsolutePathMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
+++ b/tests/baselines/reference/project/sourceRootAbsolutePathMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/sourceRootAbsolutePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts b/tests/baselines/reference/project/sourceRootAbsolutePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
index 375869ffc94..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/sourceRootAbsolutePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
+++ b/tests/baselines/reference/project/sourceRootAbsolutePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/sourceRootAbsolutePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts b/tests/baselines/reference/project/sourceRootAbsolutePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
index 375869ffc94..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/sourceRootAbsolutePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
+++ b/tests/baselines/reference/project/sourceRootAbsolutePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/sourceRootRelativePathMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts b/tests/baselines/reference/project/sourceRootRelativePathMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
index bc9ccf61daf..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/sourceRootRelativePathMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
+++ b/tests/baselines/reference/project/sourceRootRelativePathMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/sourceRootRelativePathMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts b/tests/baselines/reference/project/sourceRootRelativePathMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
index bc9ccf61daf..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/sourceRootRelativePathMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
+++ b/tests/baselines/reference/project/sourceRootRelativePathMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/sourceRootRelativePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts b/tests/baselines/reference/project/sourceRootRelativePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
index 375869ffc94..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/sourceRootRelativePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
+++ b/tests/baselines/reference/project/sourceRootRelativePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/sourceRootRelativePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts b/tests/baselines/reference/project/sourceRootRelativePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
index 375869ffc94..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/sourceRootRelativePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
+++ b/tests/baselines/reference/project/sourceRootRelativePathMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/sourcemapMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts b/tests/baselines/reference/project/sourcemapMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
index bc9ccf61daf..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/sourcemapMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
+++ b/tests/baselines/reference/project/sourcemapMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/sourcemapMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts b/tests/baselines/reference/project/sourcemapMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
index bc9ccf61daf..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/sourcemapMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
+++ b/tests/baselines/reference/project/sourcemapMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/sourcemapMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts b/tests/baselines/reference/project/sourcemapMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
index 375869ffc94..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/sourcemapMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
+++ b/tests/baselines/reference/project/sourcemapMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/sourcemapMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts b/tests/baselines/reference/project/sourcemapMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
index 375869ffc94..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/sourcemapMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
+++ b/tests/baselines/reference/project/sourcemapMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/sourcerootUrlMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts b/tests/baselines/reference/project/sourcerootUrlMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
index bc9ccf61daf..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/sourcerootUrlMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
+++ b/tests/baselines/reference/project/sourcerootUrlMixedSubfolderSpecifyOutputFile/amd/bin/test.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/sourcerootUrlMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts b/tests/baselines/reference/project/sourcerootUrlMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
index bc9ccf61daf..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/sourcerootUrlMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
+++ b/tests/baselines/reference/project/sourcerootUrlMixedSubfolderSpecifyOutputFile/node/bin/test.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/sourcerootUrlMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts b/tests/baselines/reference/project/sourcerootUrlMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
index 375869ffc94..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/sourcerootUrlMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
+++ b/tests/baselines/reference/project/sourcerootUrlMixedSubfolderSpecifyOutputFileAndOutputDirectory/amd/bin/outAndOutDirFile.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/baselines/reference/project/sourcerootUrlMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts b/tests/baselines/reference/project/sourcerootUrlMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
index 375869ffc94..c3a64f5b6eb 100644
--- a/tests/baselines/reference/project/sourcerootUrlMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
+++ b/tests/baselines/reference/project/sourcerootUrlMixedSubfolderSpecifyOutputFileAndOutputDirectory/node/bin/outAndOutDirFile.d.ts
@@ -1,4 +1,3 @@
-///
declare var m1_a1: number;
declare class m1_c1 {
m1_c1_p1: number;
diff --git a/tests/cases/compiler/outModuleTripleSlashRefs.ts b/tests/cases/compiler/outModuleTripleSlashRefs.ts
new file mode 100644
index 00000000000..fdeb4f93453
--- /dev/null
+++ b/tests/cases/compiler/outModuleTripleSlashRefs.ts
@@ -0,0 +1,33 @@
+// @target: ES5
+// @sourcemap: true
+// @declaration: true
+// @module: amd
+// @outFile: all.js
+
+// @Filename: ref/a.ts
+///
+export class A {
+ member: typeof GlobalFoo;
+}
+
+// @Filename: ref/b.ts
+///
+class Foo {
+ member: Bar;
+}
+declare var GlobalFoo: Foo;
+
+// @Filename: ref/c.d.ts
+///
+declare class Bar {
+ member: Baz;
+}
+
+// @Filename: ref/d.d.ts
+declare class Baz {
+ member: number;
+}
+
+// @Filename: b.ts
+import {A} from "./ref/a";
+export class B extends A { }