diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 825570c2eb922..5a990d4e9db33 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -4474,7 +4474,7 @@ module ts { if (symbol.flags & SymbolFlags.Import) { // Mark the import as referenced so that we emit it in the final .js file. // exception: identifiers that appear in type queries, const enums, modules that contain only const enums - getSymbolLinks(symbol).referenced = !isInTypeQuery(node) && !isConstEnumOrConstEnumOnlyModule(resolveImport(symbol)); + getSymbolLinks(symbol).referenced = getSymbolLinks(symbol).referenced || (!isInTypeQuery(node) && !isConstEnumOrConstEnumOnlyModule(resolveImport(symbol))); } checkCollisionWithCapturedSuperVariable(node, node); diff --git a/tests/baselines/reference/aliasUsageInIndexerOfClass.js b/tests/baselines/reference/aliasUsageInIndexerOfClass.js index dfbb1982ca9f4..7b2907681e0e2 100644 --- a/tests/baselines/reference/aliasUsageInIndexerOfClass.js +++ b/tests/baselines/reference/aliasUsageInIndexerOfClass.js @@ -50,6 +50,7 @@ var VisualizationModel = (function (_super) { })(Backbone.Model); exports.VisualizationModel = VisualizationModel; //// [aliasUsageInIndexerOfClass_main.js] +var moduleA = require("aliasUsageInIndexerOfClass_moduleA"); var N = (function () { function N() { this.x = moduleA; diff --git a/tests/baselines/reference/elidingImportNames.js b/tests/baselines/reference/elidingImportNames.js new file mode 100644 index 0000000000000..3c61789a1a7e0 --- /dev/null +++ b/tests/baselines/reference/elidingImportNames.js @@ -0,0 +1,27 @@ +//// [tests/cases/compiler/elidingImportNames.ts] //// + +//// [elidingImportNames_test.ts] + +import a = require('elidingImportNames_main'); // alias used in typeof +var b = a; +var x: typeof a; +import a2 = require('elidingImportNames_main1'); // alias not used in typeof +var b2 = a2; + + +//// [elidingImportNames_main.ts] +export var main = 10; + +//// [elidingImportNames_main1.ts] +export var main = 10; + +//// [elidingImportNames_main.js] +exports.main = 10; +//// [elidingImportNames_main1.js] +exports.main = 10; +//// [elidingImportNames_test.js] +var a = require('elidingImportNames_main'); // alias used in typeof +var b = a; +var x; +var a2 = require('elidingImportNames_main1'); // alias not used in typeof +var b2 = a2; diff --git a/tests/baselines/reference/elidingImportNames.types b/tests/baselines/reference/elidingImportNames.types new file mode 100644 index 0000000000000..ad93c72860b7c --- /dev/null +++ b/tests/baselines/reference/elidingImportNames.types @@ -0,0 +1,29 @@ +=== tests/cases/compiler/elidingImportNames_test.ts === + +import a = require('elidingImportNames_main'); // alias used in typeof +>a : typeof a + +var b = a; +>b : typeof a +>a : typeof a + +var x: typeof a; +>x : typeof a +>a : typeof a + +import a2 = require('elidingImportNames_main1'); // alias not used in typeof +>a2 : typeof a2 + +var b2 = a2; +>b2 : typeof a2 +>a2 : typeof a2 + + +=== tests/cases/compiler/elidingImportNames_main.ts === +export var main = 10; +>main : number + +=== tests/cases/compiler/elidingImportNames_main1.ts === +export var main = 10; +>main : number + diff --git a/tests/cases/compiler/elidingImportNames.ts b/tests/cases/compiler/elidingImportNames.ts new file mode 100644 index 0000000000000..b5893461664b1 --- /dev/null +++ b/tests/cases/compiler/elidingImportNames.ts @@ -0,0 +1,15 @@ +// @module: commonjs + +// @Filename: elidingImportNames_test.ts +import a = require('elidingImportNames_main'); // alias used in typeof +var b = a; +var x: typeof a; +import a2 = require('elidingImportNames_main1'); // alias not used in typeof +var b2 = a2; + + +// @Filename: elidingImportNames_main.ts +export var main = 10; + +// @Filename: elidingImportNames_main1.ts +export var main = 10; \ No newline at end of file