diff --git a/src/compiler/declarationEmitter.ts b/src/compiler/declarationEmitter.ts
index 9a57b4b1a37c7..9e0351b5d2c04 100644
--- a/src/compiler/declarationEmitter.ts
+++ b/src/compiler/declarationEmitter.ts
@@ -695,10 +695,6 @@ namespace ts {
}
function writeImportDeclaration(node: ImportDeclaration) {
- if (!node.importClause && !(node.flags & NodeFlags.Export)) {
- // do not write non-exported import declarations that don't have import clauses
- return;
- }
emitJsDocComments(node);
if (node.flags & NodeFlags.Export) {
write("export ");
diff --git a/tests/baselines/reference/es6ImportWithoutFromClause.js b/tests/baselines/reference/es6ImportWithoutFromClause.js
index 9666409b9249a..cc8509baadeb6 100644
--- a/tests/baselines/reference/es6ImportWithoutFromClause.js
+++ b/tests/baselines/reference/es6ImportWithoutFromClause.js
@@ -17,3 +17,4 @@ import "es6ImportWithoutFromClause_0";
//// [es6ImportWithoutFromClause_0.d.ts]
export declare var a: number;
//// [es6ImportWithoutFromClause_1.d.ts]
+import "es6ImportWithoutFromClause_0";
diff --git a/tests/baselines/reference/es6ImportWithoutFromClauseAmd.js b/tests/baselines/reference/es6ImportWithoutFromClauseAmd.js
index 39b6b04464c1f..ea533a9a963cc 100644
--- a/tests/baselines/reference/es6ImportWithoutFromClauseAmd.js
+++ b/tests/baselines/reference/es6ImportWithoutFromClauseAmd.js
@@ -36,3 +36,5 @@ export declare var a: number;
//// [es6ImportWithoutFromClauseAmd_1.d.ts]
export declare var b: number;
//// [es6ImportWithoutFromClauseAmd_2.d.ts]
+import "es6ImportWithoutFromClauseAmd_0";
+import "es6ImportWithoutFromClauseAmd_2";
diff --git a/tests/baselines/reference/es6ImportWithoutFromClauseInEs5.js b/tests/baselines/reference/es6ImportWithoutFromClauseInEs5.js
index c39cd1172a0b3..d0f7c9fbe657a 100644
--- a/tests/baselines/reference/es6ImportWithoutFromClauseInEs5.js
+++ b/tests/baselines/reference/es6ImportWithoutFromClauseInEs5.js
@@ -18,3 +18,4 @@ require("es6ImportWithoutFromClauseInEs5_0");
//// [es6ImportWithoutFromClauseInEs5_0.d.ts]
export declare var a: number;
//// [es6ImportWithoutFromClauseInEs5_1.d.ts]
+import "es6ImportWithoutFromClauseInEs5_0";
diff --git a/tests/baselines/reference/es6ImportWithoutFromClauseNonInstantiatedModule.js b/tests/baselines/reference/es6ImportWithoutFromClauseNonInstantiatedModule.js
index e63dd4bb53a0e..51bb0f3338d70 100644
--- a/tests/baselines/reference/es6ImportWithoutFromClauseNonInstantiatedModule.js
+++ b/tests/baselines/reference/es6ImportWithoutFromClauseNonInstantiatedModule.js
@@ -17,3 +17,4 @@ import "es6ImportWithoutFromClauseNonInstantiatedModule_0";
export interface i {
}
//// [es6ImportWithoutFromClauseNonInstantiatedModule_1.d.ts]
+import "es6ImportWithoutFromClauseNonInstantiatedModule_0";
diff --git a/tests/baselines/reference/keepImportsInDts1.js b/tests/baselines/reference/keepImportsInDts1.js
new file mode 100644
index 0000000000000..8189ce43088f1
--- /dev/null
+++ b/tests/baselines/reference/keepImportsInDts1.js
@@ -0,0 +1,16 @@
+//// [tests/cases/compiler/keepImportsInDts1.ts] ////
+
+//// [test.d.ts]
+
+export {};
+//// [main.ts]
+import "test"
+
+//// [main.js]
+define(["require", "exports", "test"], function (require, exports) {
+ "use strict";
+});
+
+
+//// [main.d.ts]
+import "test";
diff --git a/tests/baselines/reference/keepImportsInDts1.symbols b/tests/baselines/reference/keepImportsInDts1.symbols
new file mode 100644
index 0000000000000..92bd84c20880e
--- /dev/null
+++ b/tests/baselines/reference/keepImportsInDts1.symbols
@@ -0,0 +1,6 @@
+=== c:/test.d.ts ===
+
+No type information for this code.export {};
+No type information for this code.=== c:/app/main.ts ===
+import "test"
+No type information for this code.
\ No newline at end of file
diff --git a/tests/baselines/reference/keepImportsInDts1.types b/tests/baselines/reference/keepImportsInDts1.types
new file mode 100644
index 0000000000000..92bd84c20880e
--- /dev/null
+++ b/tests/baselines/reference/keepImportsInDts1.types
@@ -0,0 +1,6 @@
+=== c:/test.d.ts ===
+
+No type information for this code.export {};
+No type information for this code.=== c:/app/main.ts ===
+import "test"
+No type information for this code.
\ No newline at end of file
diff --git a/tests/baselines/reference/keepImportsInDts2.js b/tests/baselines/reference/keepImportsInDts2.js
new file mode 100644
index 0000000000000..559b4814526ae
--- /dev/null
+++ b/tests/baselines/reference/keepImportsInDts2.js
@@ -0,0 +1,22 @@
+//// [tests/cases/compiler/keepImportsInDts2.ts] ////
+
+//// [test.ts]
+
+export {};
+//// [main.ts]
+import "./folder/test"
+
+//// [test.js]
+define(["require", "exports"], function (require, exports) {
+ "use strict";
+});
+//// [main.js]
+define(["require", "exports", "./folder/test"], function (require, exports) {
+ "use strict";
+});
+
+
+//// [test.d.ts]
+export { };
+//// [main.d.ts]
+import "./folder/test";
diff --git a/tests/baselines/reference/keepImportsInDts2.symbols b/tests/baselines/reference/keepImportsInDts2.symbols
new file mode 100644
index 0000000000000..ce6f4c7c1685d
--- /dev/null
+++ b/tests/baselines/reference/keepImportsInDts2.symbols
@@ -0,0 +1,6 @@
+=== tests/cases/compiler/folder/test.ts ===
+
+No type information for this code.export {};
+No type information for this code.=== tests/cases/compiler/main.ts ===
+import "./folder/test"
+No type information for this code.
\ No newline at end of file
diff --git a/tests/baselines/reference/keepImportsInDts2.types b/tests/baselines/reference/keepImportsInDts2.types
new file mode 100644
index 0000000000000..ce6f4c7c1685d
--- /dev/null
+++ b/tests/baselines/reference/keepImportsInDts2.types
@@ -0,0 +1,6 @@
+=== tests/cases/compiler/folder/test.ts ===
+
+No type information for this code.export {};
+No type information for this code.=== tests/cases/compiler/main.ts ===
+import "./folder/test"
+No type information for this code.
\ No newline at end of file
diff --git a/tests/baselines/reference/keepImportsInDts3.js b/tests/baselines/reference/keepImportsInDts3.js
new file mode 100644
index 0000000000000..e48ba6937267c
--- /dev/null
+++ b/tests/baselines/reference/keepImportsInDts3.js
@@ -0,0 +1,24 @@
+//// [tests/cases/compiler/keepImportsInDts3.ts] ////
+
+//// [test.ts]
+
+export {};
+//// [main.ts]
+import "test"
+
+//// [outputfile.js]
+define("test", ["require", "exports"], function (require, exports) {
+ "use strict";
+});
+define("app/main", ["require", "exports", "test"], function (require, exports) {
+ "use strict";
+});
+
+
+//// [outputfile.d.ts]
+declare module "test" {
+ export { };
+}
+declare module "app/main" {
+ import "test";
+}
diff --git a/tests/baselines/reference/keepImportsInDts3.symbols b/tests/baselines/reference/keepImportsInDts3.symbols
new file mode 100644
index 0000000000000..29c4a4e44b42f
--- /dev/null
+++ b/tests/baselines/reference/keepImportsInDts3.symbols
@@ -0,0 +1,6 @@
+=== c:/test.ts ===
+
+No type information for this code.export {};
+No type information for this code.=== c:/app/main.ts ===
+import "test"
+No type information for this code.
\ No newline at end of file
diff --git a/tests/baselines/reference/keepImportsInDts3.types b/tests/baselines/reference/keepImportsInDts3.types
new file mode 100644
index 0000000000000..29c4a4e44b42f
--- /dev/null
+++ b/tests/baselines/reference/keepImportsInDts3.types
@@ -0,0 +1,6 @@
+=== c:/test.ts ===
+
+No type information for this code.export {};
+No type information for this code.=== c:/app/main.ts ===
+import "test"
+No type information for this code.
\ No newline at end of file
diff --git a/tests/baselines/reference/keepImportsInDts4.js b/tests/baselines/reference/keepImportsInDts4.js
new file mode 100644
index 0000000000000..badec87984edb
--- /dev/null
+++ b/tests/baselines/reference/keepImportsInDts4.js
@@ -0,0 +1,24 @@
+//// [tests/cases/compiler/keepImportsInDts4.ts] ////
+
+//// [test.ts]
+
+export {};
+//// [main.ts]
+import "./folder/test"
+
+//// [outputfile.js]
+define("folder/test", ["require", "exports"], function (require, exports) {
+ "use strict";
+});
+define("main", ["require", "exports", "folder/test"], function (require, exports) {
+ "use strict";
+});
+
+
+//// [outputfile.d.ts]
+declare module "folder/test" {
+ export { };
+}
+declare module "main" {
+ import "folder/test";
+}
diff --git a/tests/baselines/reference/keepImportsInDts4.symbols b/tests/baselines/reference/keepImportsInDts4.symbols
new file mode 100644
index 0000000000000..ce6f4c7c1685d
--- /dev/null
+++ b/tests/baselines/reference/keepImportsInDts4.symbols
@@ -0,0 +1,6 @@
+=== tests/cases/compiler/folder/test.ts ===
+
+No type information for this code.export {};
+No type information for this code.=== tests/cases/compiler/main.ts ===
+import "./folder/test"
+No type information for this code.
\ No newline at end of file
diff --git a/tests/baselines/reference/keepImportsInDts4.types b/tests/baselines/reference/keepImportsInDts4.types
new file mode 100644
index 0000000000000..ce6f4c7c1685d
--- /dev/null
+++ b/tests/baselines/reference/keepImportsInDts4.types
@@ -0,0 +1,6 @@
+=== tests/cases/compiler/folder/test.ts ===
+
+No type information for this code.export {};
+No type information for this code.=== tests/cases/compiler/main.ts ===
+import "./folder/test"
+No type information for this code.
\ No newline at end of file
diff --git a/tests/baselines/reference/moduleAugmentationCollidingNamesInAugmentation1.js b/tests/baselines/reference/moduleAugmentationCollidingNamesInAugmentation1.js
index 60ba2217349e3..2e84e1492beed 100644
--- a/tests/baselines/reference/moduleAugmentationCollidingNamesInAugmentation1.js
+++ b/tests/baselines/reference/moduleAugmentationCollidingNamesInAugmentation1.js
@@ -73,3 +73,5 @@ declare module "./observable" {
}
export {};
//// [main.d.ts]
+import "./map1";
+import "./map2";
diff --git a/tests/baselines/reference/moduleAugmentationDeclarationEmit1.js b/tests/baselines/reference/moduleAugmentationDeclarationEmit1.js
index 589d0f506e9b9..7b44fb7a6379f 100644
--- a/tests/baselines/reference/moduleAugmentationDeclarationEmit1.js
+++ b/tests/baselines/reference/moduleAugmentationDeclarationEmit1.js
@@ -66,3 +66,4 @@ declare module "./observable" {
}
export {};
//// [main.d.ts]
+import "./map";
diff --git a/tests/baselines/reference/moduleAugmentationDeclarationEmit2.js b/tests/baselines/reference/moduleAugmentationDeclarationEmit2.js
index d8fd65a146487..547d017c502e4 100644
--- a/tests/baselines/reference/moduleAugmentationDeclarationEmit2.js
+++ b/tests/baselines/reference/moduleAugmentationDeclarationEmit2.js
@@ -71,3 +71,4 @@ declare module "./observable" {
}
export {};
//// [main.d.ts]
+import "./map";
diff --git a/tests/baselines/reference/moduleAugmentationExtendAmbientModule2.js b/tests/baselines/reference/moduleAugmentationExtendAmbientModule2.js
index 733f88e61290f..2d65953e2a3ae 100644
--- a/tests/baselines/reference/moduleAugmentationExtendAmbientModule2.js
+++ b/tests/baselines/reference/moduleAugmentationExtendAmbientModule2.js
@@ -63,3 +63,4 @@ declare module "observable" {
export {};
//// [main.d.ts]
///
+import "./map";
diff --git a/tests/baselines/reference/moduleAugmentationGlobal3.js b/tests/baselines/reference/moduleAugmentationGlobal3.js
index 4cff75f5df006..caa080a558ccf 100644
--- a/tests/baselines/reference/moduleAugmentationGlobal3.js
+++ b/tests/baselines/reference/moduleAugmentationGlobal3.js
@@ -50,3 +50,4 @@ declare global {
}
export {};
//// [f3.d.ts]
+import "./f2";
diff --git a/tests/baselines/reference/moduleAugmentationGlobal4.js b/tests/baselines/reference/moduleAugmentationGlobal4.js
index 11c5d968df206..38f186d0e05bd 100644
--- a/tests/baselines/reference/moduleAugmentationGlobal4.js
+++ b/tests/baselines/reference/moduleAugmentationGlobal4.js
@@ -45,3 +45,5 @@ declare global {
export { };
export {};
//// [f3.d.ts]
+import "./f1";
+import "./f2";
diff --git a/tests/baselines/reference/moduleAugmentationGlobal5.js b/tests/baselines/reference/moduleAugmentationGlobal5.js
index 3efdd2dbb9895..70c81893bd843 100644
--- a/tests/baselines/reference/moduleAugmentationGlobal5.js
+++ b/tests/baselines/reference/moduleAugmentationGlobal5.js
@@ -32,3 +32,5 @@ require("B");
//// [f3.d.ts]
///
///
+import "A";
+import "B";
diff --git a/tests/baselines/reference/moduleAugmentationImportsAndExports1.js b/tests/baselines/reference/moduleAugmentationImportsAndExports1.js
index 7159e7b5d0c47..8e0b7dad19d0c 100644
--- a/tests/baselines/reference/moduleAugmentationImportsAndExports1.js
+++ b/tests/baselines/reference/moduleAugmentationImportsAndExports1.js
@@ -69,3 +69,4 @@ declare module "./f1" {
}
}
//// [f4.d.ts]
+import "./f3";
diff --git a/tests/baselines/reference/moduleAugmentationImportsAndExports2.js b/tests/baselines/reference/moduleAugmentationImportsAndExports2.js
index 3a4a807a33421..498df8ab90ec3 100644
--- a/tests/baselines/reference/moduleAugmentationImportsAndExports2.js
+++ b/tests/baselines/reference/moduleAugmentationImportsAndExports2.js
@@ -74,3 +74,4 @@ export declare class B {
n: number;
}
//// [f4.d.ts]
+import "./f3";
diff --git a/tests/baselines/reference/moduleAugmentationImportsAndExports3.js b/tests/baselines/reference/moduleAugmentationImportsAndExports3.js
index d872a79e98563..8d9e69c507665 100644
--- a/tests/baselines/reference/moduleAugmentationImportsAndExports3.js
+++ b/tests/baselines/reference/moduleAugmentationImportsAndExports3.js
@@ -72,3 +72,4 @@ export declare class B {
n: number;
}
//// [f4.d.ts]
+import "./f3";
diff --git a/tests/baselines/reference/moduleAugmentationImportsAndExports5.js b/tests/baselines/reference/moduleAugmentationImportsAndExports5.js
index c9b622ccf257a..c3cba4c01f877 100644
--- a/tests/baselines/reference/moduleAugmentationImportsAndExports5.js
+++ b/tests/baselines/reference/moduleAugmentationImportsAndExports5.js
@@ -76,3 +76,4 @@ export declare class B {
n: number;
}
//// [f4.d.ts]
+import "./f3";
diff --git a/tests/baselines/reference/moduleAugmentationImportsAndExports6.js b/tests/baselines/reference/moduleAugmentationImportsAndExports6.js
index f0b297720b36b..f5aff705eb4bc 100644
--- a/tests/baselines/reference/moduleAugmentationImportsAndExports6.js
+++ b/tests/baselines/reference/moduleAugmentationImportsAndExports6.js
@@ -95,3 +95,4 @@ declare module "./f1" {
}
}
//// [f4.d.ts]
+import "./f3";
diff --git a/tests/baselines/reference/moduleAugmentationInAmbientModule5.js b/tests/baselines/reference/moduleAugmentationInAmbientModule5.js
index fab9cebb179b6..2e6503c47743e 100644
--- a/tests/baselines/reference/moduleAugmentationInAmbientModule5.js
+++ b/tests/baselines/reference/moduleAugmentationInAmbientModule5.js
@@ -33,3 +33,4 @@ var y = x.getA().x;
//// [f.d.ts]
///
+import "array";
diff --git a/tests/baselines/reference/moduleAugmentationsBundledOutput1.js b/tests/baselines/reference/moduleAugmentationsBundledOutput1.js
index 92916206e7655..504c015bcb833 100644
--- a/tests/baselines/reference/moduleAugmentationsBundledOutput1.js
+++ b/tests/baselines/reference/moduleAugmentationsBundledOutput1.js
@@ -139,4 +139,6 @@ declare module "m4" {
}
}
declare module "test" {
+ import "m2";
+ import "m4";
}
diff --git a/tests/baselines/reference/moduleAugmentationsImports1.js b/tests/baselines/reference/moduleAugmentationsImports1.js
index 2c635a0719e03..922bb61d95214 100644
--- a/tests/baselines/reference/moduleAugmentationsImports1.js
+++ b/tests/baselines/reference/moduleAugmentationsImports1.js
@@ -101,4 +101,5 @@ declare module "d" {
}
}
declare module "main" {
+ import "d";
}
diff --git a/tests/baselines/reference/moduleAugmentationsImports2.js b/tests/baselines/reference/moduleAugmentationsImports2.js
index f70426b49bd5e..605a07e29e191 100644
--- a/tests/baselines/reference/moduleAugmentationsImports2.js
+++ b/tests/baselines/reference/moduleAugmentationsImports2.js
@@ -111,4 +111,6 @@ declare module "e" {
}
}
declare module "main" {
+ import "d";
+ import "e";
}
diff --git a/tests/baselines/reference/moduleAugmentationsImports3.js b/tests/baselines/reference/moduleAugmentationsImports3.js
index 3654583b5c900..0a946f42be376 100644
--- a/tests/baselines/reference/moduleAugmentationsImports3.js
+++ b/tests/baselines/reference/moduleAugmentationsImports3.js
@@ -98,4 +98,6 @@ declare module "e" {
}
}
declare module "main" {
+ import "D";
+ import "e";
}
diff --git a/tests/baselines/reference/moduleAugmentationsImports4.js b/tests/baselines/reference/moduleAugmentationsImports4.js
index 9b64016113f54..a48bbb0463174 100644
--- a/tests/baselines/reference/moduleAugmentationsImports4.js
+++ b/tests/baselines/reference/moduleAugmentationsImports4.js
@@ -87,4 +87,6 @@ declare module "b" {
}
}
declare module "main" {
+ import "D";
+ import "E";
}
diff --git a/tests/baselines/reference/noErrorOnEmptyDts.js b/tests/baselines/reference/noErrorOnEmptyDts.js
deleted file mode 100644
index 83595e3d2ade0..0000000000000
--- a/tests/baselines/reference/noErrorOnEmptyDts.js
+++ /dev/null
@@ -1,13 +0,0 @@
-//// [tests/cases/compiler/noErrorOnEmptyDts.ts] ////
-
-//// [test.d.ts]
-
-
-// comment
-
-//// [main.ts]
-import "test"
-
-//// [main.js]
-"use strict";
-require("test");
diff --git a/tests/baselines/reference/noErrorOnEmptyDts.symbols b/tests/baselines/reference/noErrorOnEmptyDts.symbols
deleted file mode 100644
index 78446a19fb87e..0000000000000
--- a/tests/baselines/reference/noErrorOnEmptyDts.symbols
+++ /dev/null
@@ -1,8 +0,0 @@
-=== c:/node_modules/test.d.ts ===
-
-No type information for this code.
-No type information for this code.// comment
-No type information for this code.
-No type information for this code.=== c:/app/main.ts ===
-import "test"
-No type information for this code.
\ No newline at end of file
diff --git a/tests/baselines/reference/noErrorOnEmptyDts.types b/tests/baselines/reference/noErrorOnEmptyDts.types
deleted file mode 100644
index 78446a19fb87e..0000000000000
--- a/tests/baselines/reference/noErrorOnEmptyDts.types
+++ /dev/null
@@ -1,8 +0,0 @@
-=== c:/node_modules/test.d.ts ===
-
-No type information for this code.
-No type information for this code.// comment
-No type information for this code.
-No type information for this code.=== c:/app/main.ts ===
-import "test"
-No type information for this code.
\ No newline at end of file
diff --git a/tests/cases/compiler/keepImportsInDts1.ts b/tests/cases/compiler/keepImportsInDts1.ts
new file mode 100644
index 0000000000000..50bdc5830a85a
--- /dev/null
+++ b/tests/cases/compiler/keepImportsInDts1.ts
@@ -0,0 +1,7 @@
+// @module: amd
+// @declaration: true
+
+// @filename: c:/test.d.ts
+export {};
+// @filename: c:/app/main.ts
+import "test"
\ No newline at end of file
diff --git a/tests/cases/compiler/keepImportsInDts2.ts b/tests/cases/compiler/keepImportsInDts2.ts
new file mode 100644
index 0000000000000..407526d7595cc
--- /dev/null
+++ b/tests/cases/compiler/keepImportsInDts2.ts
@@ -0,0 +1,7 @@
+// @module: amd
+// @declaration: true
+
+// @filename: folder/test.ts
+export {};
+// @filename: main.ts
+import "./folder/test"
\ No newline at end of file
diff --git a/tests/cases/compiler/keepImportsInDts3.ts b/tests/cases/compiler/keepImportsInDts3.ts
new file mode 100644
index 0000000000000..cdd83dce13203
--- /dev/null
+++ b/tests/cases/compiler/keepImportsInDts3.ts
@@ -0,0 +1,8 @@
+// @module: amd
+// @declaration: true
+// @out: outputfile.js
+
+// @filename: c:/test.ts
+export {};
+// @filename: c:/app/main.ts
+import "test"
\ No newline at end of file
diff --git a/tests/cases/compiler/keepImportsInDts4.ts b/tests/cases/compiler/keepImportsInDts4.ts
new file mode 100644
index 0000000000000..272932be488c9
--- /dev/null
+++ b/tests/cases/compiler/keepImportsInDts4.ts
@@ -0,0 +1,8 @@
+// @module: amd
+// @declaration: true
+// @out: outputfile.js
+
+// @filename: folder/test.ts
+export {};
+// @filename: main.ts
+import "./folder/test"
\ No newline at end of file
diff --git a/tests/cases/compiler/noErrorOnEmptyDts.ts b/tests/cases/compiler/noErrorOnEmptyDts.ts
deleted file mode 100644
index 1266ea2bd753b..0000000000000
--- a/tests/cases/compiler/noErrorOnEmptyDts.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-// @module: commonjs
-
-// @filename: c:/node_modules/test.d.ts
-
-// comment
-
-// @filename: c:/app/main.ts
-import "test"
\ No newline at end of file