diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index bd7b02e5c1d24..99f60ee15cefd 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1028,16 +1028,12 @@ namespace ts { // Module names are escaped in our symbol table. However, string literal values aren't. // Escape the name in the "require(...)" clause to ensure we find the right symbol. - let moduleName = escapeIdentifier(moduleReferenceLiteral.text); + const moduleName = escapeIdentifier(moduleReferenceLiteral.text); if (moduleName === undefined) { return; } - if (moduleName.indexOf("!") >= 0) { - moduleName = moduleName.substr(0, moduleName.indexOf("!")); - } - const isRelative = isExternalModuleNameRelative(moduleName); if (!isRelative) { const symbol = getSymbol(globals, "\"" + moduleName + "\"", SymbolFlags.ValueModule); diff --git a/tests/baselines/reference/bangInModuleName.js b/tests/baselines/reference/bangInModuleName.js new file mode 100644 index 0000000000000..769ccbf1d42b0 --- /dev/null +++ b/tests/baselines/reference/bangInModuleName.js @@ -0,0 +1,23 @@ +//// [tests/cases/compiler/bangInModuleName.ts] //// + +//// [a.d.ts] + + +declare module "http" { +} + +declare module 'intern/dojo/node!http' { + import http = require('http'); + export = http; +} + +//// [a.ts] + +/// + +import * as http from 'intern/dojo/node!http'; + +//// [a.js] +/// +define(["require", "exports"], function (require, exports) { +}); diff --git a/tests/baselines/reference/bangInModuleName.symbols b/tests/baselines/reference/bangInModuleName.symbols new file mode 100644 index 0000000000000..63ba5d106d800 --- /dev/null +++ b/tests/baselines/reference/bangInModuleName.symbols @@ -0,0 +1,21 @@ +=== tests/cases/compiler/a.ts === + +/// + +import * as http from 'intern/dojo/node!http'; +>http : Symbol(http, Decl(a.ts, 3, 6)) + +=== tests/cases/compiler/a.d.ts === + + +declare module "http" { +} + +declare module 'intern/dojo/node!http' { + import http = require('http'); +>http : Symbol(http, Decl(a.d.ts, 5, 40)) + + export = http; +>http : Symbol(http, Decl(a.d.ts, 5, 40)) +} + diff --git a/tests/baselines/reference/bangInModuleName.types b/tests/baselines/reference/bangInModuleName.types new file mode 100644 index 0000000000000..06a602e2ff831 --- /dev/null +++ b/tests/baselines/reference/bangInModuleName.types @@ -0,0 +1,21 @@ +=== tests/cases/compiler/a.ts === + +/// + +import * as http from 'intern/dojo/node!http'; +>http : typeof http + +=== tests/cases/compiler/a.d.ts === + + +declare module "http" { +} + +declare module 'intern/dojo/node!http' { + import http = require('http'); +>http : typeof http + + export = http; +>http : typeof http +} + diff --git a/tests/cases/compiler/bangInModuleName.ts b/tests/cases/compiler/bangInModuleName.ts new file mode 100644 index 0000000000000..6e8f7163109fa --- /dev/null +++ b/tests/cases/compiler/bangInModuleName.ts @@ -0,0 +1,17 @@ +// @module: amd + +// @filename: a.d.ts + +declare module "http" { +} + +declare module 'intern/dojo/node!http' { + import http = require('http'); + export = http; +} + +// @filename: a.ts + +/// + +import * as http from 'intern/dojo/node!http'; \ No newline at end of file