diff --git a/src/compiler/program.ts b/src/compiler/program.ts
index eb50548750..5befec5ebc 100644
--- a/src/compiler/program.ts
+++ b/src/compiler/program.ts
@@ -2012,15 +2012,16 @@ namespace ts {
}
function processTypeReferenceDirectives(file: SourceFile) {
- const typeDirectives = map(file.typeReferenceDirectives, l => l.fileName);
+ const typeDirectives = map(file.typeReferenceDirectives, ref => ref.fileName.toLocaleLowerCase());
const resolutions = resolveTypeReferenceDirectiveNamesWorker(typeDirectives, file.fileName);
for (let i = 0; i < typeDirectives.length; i++) {
const ref = file.typeReferenceDirectives[i];
const resolvedTypeReferenceDirective = resolutions[i];
// store resolved type directive on the file
- setResolvedTypeReferenceDirective(file, ref.fileName, resolvedTypeReferenceDirective);
- processTypeReferenceDirective(ref.fileName, resolvedTypeReferenceDirective, file, ref.pos, ref.end);
+ const fileName = ref.fileName.toLocaleLowerCase();
+ setResolvedTypeReferenceDirective(file, fileName, resolvedTypeReferenceDirective);
+ processTypeReferenceDirective(fileName, resolvedTypeReferenceDirective, file, ref.pos, ref.end);
}
}
diff --git a/tests/baselines/reference/typingsLookup3.js b/tests/baselines/reference/typingsLookup3.js
new file mode 100644
index 0000000000..b3be036b4a
--- /dev/null
+++ b/tests/baselines/reference/typingsLookup3.js
@@ -0,0 +1,13 @@
+//// [tests/cases/conformance/typings/typingsLookup3.ts] ////
+
+//// [index.d.ts]
+declare var $: { x: any };
+
+//// [a.ts]
+///
+$.x;
+
+
+//// [a.js]
+///
+$.x;
diff --git a/tests/baselines/reference/typingsLookup3.symbols b/tests/baselines/reference/typingsLookup3.symbols
new file mode 100644
index 0000000000..e641afb183
--- /dev/null
+++ b/tests/baselines/reference/typingsLookup3.symbols
@@ -0,0 +1,12 @@
+=== /a.ts ===
+///
+$.x;
+>$.x : Symbol(x, Decl(index.d.ts, 0, 16))
+>$ : Symbol($, Decl(index.d.ts, 0, 11))
+>x : Symbol(x, Decl(index.d.ts, 0, 16))
+
+=== /node_modules/@types/jquery/index.d.ts ===
+declare var $: { x: any };
+>$ : Symbol($, Decl(index.d.ts, 0, 11))
+>x : Symbol(x, Decl(index.d.ts, 0, 16))
+
diff --git a/tests/baselines/reference/typingsLookup3.trace.json b/tests/baselines/reference/typingsLookup3.trace.json
new file mode 100644
index 0000000000..83b0e91d6c
--- /dev/null
+++ b/tests/baselines/reference/typingsLookup3.trace.json
@@ -0,0 +1,12 @@
+[
+ "======== Resolving type reference directive 'jquery', containing file '/a.ts', root directory '/node_modules/@types'. ========",
+ "Resolving with primary search path '/node_modules/@types'",
+ "File '/node_modules/@types/jquery/package.json' does not exist.",
+ "File '/node_modules/@types/jquery/index.d.ts' exist - use it as a name resolution result.",
+ "======== Type reference directive 'jquery' was successfully resolved to '/node_modules/@types/jquery/index.d.ts', primary: true. ========",
+ "======== Resolving type reference directive 'jquery', containing file '/__inferred type names__.ts', root directory '/node_modules/@types'. ========",
+ "Resolving with primary search path '/node_modules/@types'",
+ "File '/node_modules/@types/jquery/package.json' does not exist.",
+ "File '/node_modules/@types/jquery/index.d.ts' exist - use it as a name resolution result.",
+ "======== Type reference directive 'jquery' was successfully resolved to '/node_modules/@types/jquery/index.d.ts', primary: true. ========"
+]
\ No newline at end of file
diff --git a/tests/baselines/reference/typingsLookup3.types b/tests/baselines/reference/typingsLookup3.types
new file mode 100644
index 0000000000..f57a974077
--- /dev/null
+++ b/tests/baselines/reference/typingsLookup3.types
@@ -0,0 +1,12 @@
+=== /a.ts ===
+///
+$.x;
+>$.x : any
+>$ : { x: any; }
+>x : any
+
+=== /node_modules/@types/jquery/index.d.ts ===
+declare var $: { x: any };
+>$ : { x: any; }
+>x : any
+
diff --git a/tests/cases/conformance/typings/typingsLookup3.ts b/tests/cases/conformance/typings/typingsLookup3.ts
new file mode 100644
index 0000000000..a0bb15476b
--- /dev/null
+++ b/tests/cases/conformance/typings/typingsLookup3.ts
@@ -0,0 +1,14 @@
+// @traceResolution: true
+// @noImplicitReferences: true
+// @currentDirectory: /
+// This tests that `types` references are automatically lowercased.
+
+// @filename: /tsconfig.json
+{ "files": "a.ts" }
+
+// @filename: /node_modules/@types/jquery/index.d.ts
+declare var $: { x: any };
+
+// @filename: /a.ts
+///
+$.x;