Skip to content

Commit

Permalink
Merge pull request #5759 from Microsoft/bangInModuleNames
Browse files Browse the repository at this point in the history
do not treat modules with '!' in names any specially
  • Loading branch information
vladima committed Nov 23, 2015
2 parents 262bdb5 + 566c0db commit fb76dc9
Show file tree
Hide file tree
Showing 5 changed files with 83 additions and 5 deletions.
6 changes: 1 addition & 5 deletions src/compiler/checker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
23 changes: 23 additions & 0 deletions tests/baselines/reference/bangInModuleName.js
Original file line number Diff line number Diff line change
@@ -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]

/// <reference path="a.d.ts"/>

import * as http from 'intern/dojo/node!http';

//// [a.js]
/// <reference path="a.d.ts"/>
define(["require", "exports"], function (require, exports) {
});
21 changes: 21 additions & 0 deletions tests/baselines/reference/bangInModuleName.symbols
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
=== tests/cases/compiler/a.ts ===

/// <reference path="a.d.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))
}

21 changes: 21 additions & 0 deletions tests/baselines/reference/bangInModuleName.types
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
=== tests/cases/compiler/a.ts ===

/// <reference path="a.d.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
}

17 changes: 17 additions & 0 deletions tests/cases/compiler/bangInModuleName.ts
Original file line number Diff line number Diff line change
@@ -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

/// <reference path="a.d.ts"/>

import * as http from 'intern/dojo/node!http';

0 comments on commit fb76dc9

Please sign in to comment.