diff --git a/tests/baselines/reference/library-reference-1.js b/tests/baselines/reference/library-reference-1.js
index 628790cc3ee..e709db72dea 100644
--- a/tests/baselines/reference/library-reference-1.js
+++ b/tests/baselines/reference/library-reference-1.js
@@ -2,16 +2,16 @@
//// [index.d.ts]
-// We can find typings in the ./typings folder
+// We can find typings in the ./types folder
declare var $: { foo(): void };
//// [consumer.ts]
-///
+///
$.foo();
//// [consumer.js]
-///
+///
$.foo();
diff --git a/tests/baselines/reference/library-reference-1.symbols b/tests/baselines/reference/library-reference-1.symbols
index 416ec495d56..0e848c626c5 100644
--- a/tests/baselines/reference/library-reference-1.symbols
+++ b/tests/baselines/reference/library-reference-1.symbols
@@ -1,13 +1,13 @@
-=== tests/cases/conformance/references/consumer.ts ===
-///
+=== /consumer.ts ===
+///
$.foo();
>$.foo : Symbol(foo, Decl(index.d.ts, 3, 16))
>$ : Symbol($, Decl(index.d.ts, 3, 11))
>foo : Symbol(foo, Decl(index.d.ts, 3, 16))
-=== tests/cases/conformance/references/typings/jquery/index.d.ts ===
+=== /types/jquery/index.d.ts ===
-// We can find typings in the ./typings folder
+// We can find typings in the ./types folder
declare var $: { foo(): void };
>$ : Symbol($, Decl(index.d.ts, 3, 11))
diff --git a/tests/baselines/reference/library-reference-1.trace.json b/tests/baselines/reference/library-reference-1.trace.json
new file mode 100644
index 00000000000..a5ce5985525
--- /dev/null
+++ b/tests/baselines/reference/library-reference-1.trace.json
@@ -0,0 +1,7 @@
+[
+ "======== Resolving type reference directive 'jquery' from '/consumer.ts' with compilation root dir '/'. ========",
+ "Resolving with primary search path '/types/'",
+ "File '/types/jquery/package.json' does not exist.",
+ "File '/types/jquery/index.d.ts' exist - use it as a name resolution result.",
+ "======== Type reference directive 'jquery' was successfully resolved to '/types/jquery/index.d.ts', primary: true. ========"
+]
\ No newline at end of file
diff --git a/tests/baselines/reference/library-reference-1.types b/tests/baselines/reference/library-reference-1.types
index d2725524d48..99133f2f8df 100644
--- a/tests/baselines/reference/library-reference-1.types
+++ b/tests/baselines/reference/library-reference-1.types
@@ -1,14 +1,14 @@
-=== tests/cases/conformance/references/consumer.ts ===
-///
+=== /consumer.ts ===
+///
$.foo();
>$.foo() : void
>$.foo : () => void
>$ : { foo(): void; }
>foo : () => void
-=== tests/cases/conformance/references/typings/jquery/index.d.ts ===
+=== /types/jquery/index.d.ts ===
-// We can find typings in the ./typings folder
+// We can find typings in the ./types folder
declare var $: { foo(): void };
>$ : { foo(): void; }
diff --git a/tests/baselines/reference/library-reference-10.js b/tests/baselines/reference/library-reference-10.js
new file mode 100644
index 00000000000..a6dbdfce610
--- /dev/null
+++ b/tests/baselines/reference/library-reference-10.js
@@ -0,0 +1,22 @@
+//// [tests/cases/conformance/references/library-reference-10.ts] ////
+
+//// [package.json]
+
+// package.json in a primary reference can refer to another file
+
+{
+ "typings": "jquery.d.ts"
+}
+
+//// [jquery.d.ts]
+declare var $: { foo(): void };
+
+
+//// [consumer.ts]
+///
+$.foo();
+
+
+//// [consumer.js]
+///
+$.foo();
diff --git a/tests/baselines/reference/library-reference-10.symbols b/tests/baselines/reference/library-reference-10.symbols
new file mode 100644
index 00000000000..9d0f7e4781e
--- /dev/null
+++ b/tests/baselines/reference/library-reference-10.symbols
@@ -0,0 +1,13 @@
+=== /consumer.ts ===
+///
+$.foo();
+>$.foo : Symbol(foo, Decl(jquery.d.ts, 0, 16))
+>$ : Symbol($, Decl(jquery.d.ts, 0, 11))
+>foo : Symbol(foo, Decl(jquery.d.ts, 0, 16))
+
+=== /types/jquery/jquery.d.ts ===
+declare var $: { foo(): void };
+>$ : Symbol($, Decl(jquery.d.ts, 0, 11))
+>foo : Symbol(foo, Decl(jquery.d.ts, 0, 16))
+
+
diff --git a/tests/baselines/reference/library-reference-10.trace.json b/tests/baselines/reference/library-reference-10.trace.json
new file mode 100644
index 00000000000..44ed04a2e57
--- /dev/null
+++ b/tests/baselines/reference/library-reference-10.trace.json
@@ -0,0 +1,8 @@
+[
+ "======== Resolving type reference directive 'jquery' from '/consumer.ts' with compilation root dir '/'. ========",
+ "Resolving with primary search path '/types/'",
+ "Found 'package.json' at '/types/jquery/package.json'.",
+ "'package.json' has 'typings' field 'jquery.d.ts' that references '/types/jquery/jquery.d.ts'.",
+ "File '/types/jquery/jquery.d.ts' exist - use it as a name resolution result.",
+ "======== Type reference directive 'jquery' was successfully resolved to '/types/jquery/jquery.d.ts', primary: true. ========"
+]
\ No newline at end of file
diff --git a/tests/baselines/reference/library-reference-10.types b/tests/baselines/reference/library-reference-10.types
new file mode 100644
index 00000000000..42d78f72865
--- /dev/null
+++ b/tests/baselines/reference/library-reference-10.types
@@ -0,0 +1,14 @@
+=== /consumer.ts ===
+///
+$.foo();
+>$.foo() : void
+>$.foo : () => void
+>$ : { foo(): void; }
+>foo : () => void
+
+=== /types/jquery/jquery.d.ts ===
+declare var $: { foo(): void };
+>$ : { foo(): void; }
+>foo : () => void
+
+
diff --git a/tests/baselines/reference/library-reference-11.js b/tests/baselines/reference/library-reference-11.js
new file mode 100644
index 00000000000..773fe5a890a
--- /dev/null
+++ b/tests/baselines/reference/library-reference-11.js
@@ -0,0 +1,22 @@
+//// [tests/cases/conformance/references/library-reference-11.ts] ////
+
+//// [package.json]
+
+// package.json in a secondary reference can refer to another file
+
+{
+ "typings": "jquery.d.ts"
+}
+
+//// [jquery.d.ts]
+declare var $: { foo(): void };
+
+
+//// [consumer.ts]
+///
+$.foo();
+
+
+//// [consumer.js]
+///
+$.foo();
diff --git a/tests/baselines/reference/library-reference-11.symbols b/tests/baselines/reference/library-reference-11.symbols
new file mode 100644
index 00000000000..22b8bdf1b44
--- /dev/null
+++ b/tests/baselines/reference/library-reference-11.symbols
@@ -0,0 +1,13 @@
+=== /a/b/consumer.ts ===
+///
+$.foo();
+>$.foo : Symbol(foo, Decl(jquery.d.ts, 0, 16))
+>$ : Symbol($, Decl(jquery.d.ts, 0, 11))
+>foo : Symbol(foo, Decl(jquery.d.ts, 0, 16))
+
+=== /a/node_modules/jquery/jquery.d.ts ===
+declare var $: { foo(): void };
+>$ : Symbol($, Decl(jquery.d.ts, 0, 11))
+>foo : Symbol(foo, Decl(jquery.d.ts, 0, 16))
+
+
diff --git a/tests/baselines/reference/library-reference-11.trace.json b/tests/baselines/reference/library-reference-11.trace.json
new file mode 100644
index 00000000000..aea446fcd78
--- /dev/null
+++ b/tests/baselines/reference/library-reference-11.trace.json
@@ -0,0 +1,29 @@
+[
+ "======== Resolving type reference directive 'jquery' from '/a/b/consumer.ts' with compilation root dir '/a/b'. ========",
+ "Resolving with primary search path '/a/b/types/'",
+ "File '/a/b/types/jquery/package.json' does not exist.",
+ "File '/a/b/types/jquery/index.d.ts' does not exist.",
+ "Resolving with primary search path '/a/b/node_modules/'",
+ "File '/a/b/node_modules/jquery/package.json' does not exist.",
+ "File '/a/b/node_modules/jquery/index.d.ts' does not exist.",
+ "Resolving with primary search path '/a/b/node_modules/@types/'",
+ "File '/a/b/node_modules/@types/jquery/package.json' does not exist.",
+ "File '/a/b/node_modules/@types/jquery/index.d.ts' does not exist.",
+ "Resolving from node_modules folder...",
+ "File '/a/b/node_modules/jquery.ts' does not exist.",
+ "File '/a/b/node_modules/jquery.d.ts' does not exist.",
+ "File '/a/b/node_modules/jquery/package.json' does not exist.",
+ "File '/a/b/node_modules/jquery/index.ts' does not exist.",
+ "File '/a/b/node_modules/jquery/index.d.ts' does not exist.",
+ "File '/a/b/node_modules/@types/jquery.ts' does not exist.",
+ "File '/a/b/node_modules/@types/jquery.d.ts' does not exist.",
+ "File '/a/b/node_modules/@types/jquery/package.json' does not exist.",
+ "File '/a/b/node_modules/@types/jquery/index.ts' does not exist.",
+ "File '/a/b/node_modules/@types/jquery/index.d.ts' does not exist.",
+ "File '/a/node_modules/jquery.ts' does not exist.",
+ "File '/a/node_modules/jquery.d.ts' does not exist.",
+ "Found 'package.json' at '/a/node_modules/jquery/package.json'.",
+ "'package.json' has 'typings' field 'jquery.d.ts' that references '/a/node_modules/jquery/jquery.d.ts'.",
+ "File '/a/node_modules/jquery/jquery.d.ts' exist - use it as a name resolution result.",
+ "======== Type reference directive 'jquery' was successfully resolved to '/a/node_modules/jquery/jquery.d.ts', primary: false. ========"
+]
\ No newline at end of file
diff --git a/tests/baselines/reference/library-reference-11.types b/tests/baselines/reference/library-reference-11.types
new file mode 100644
index 00000000000..267ee08e6d6
--- /dev/null
+++ b/tests/baselines/reference/library-reference-11.types
@@ -0,0 +1,14 @@
+=== /a/b/consumer.ts ===
+///
+$.foo();
+>$.foo() : void
+>$.foo : () => void
+>$ : { foo(): void; }
+>foo : () => void
+
+=== /a/node_modules/jquery/jquery.d.ts ===
+declare var $: { foo(): void };
+>$ : { foo(): void; }
+>foo : () => void
+
+
diff --git a/tests/baselines/reference/library-reference-12.js b/tests/baselines/reference/library-reference-12.js
new file mode 100644
index 00000000000..42d0f650b50
--- /dev/null
+++ b/tests/baselines/reference/library-reference-12.js
@@ -0,0 +1,22 @@
+//// [tests/cases/conformance/references/library-reference-12.ts] ////
+
+//// [package.json]
+
+// package.json in a secondary reference can refer to another file
+
+{
+ "types": "dist/jquery.d.ts"
+}
+
+//// [jquery.d.ts]
+declare var $: { foo(): void };
+
+
+//// [consumer.ts]
+///
+$.foo();
+
+
+//// [consumer.js]
+///
+$.foo();
diff --git a/tests/baselines/reference/library-reference-12.symbols b/tests/baselines/reference/library-reference-12.symbols
new file mode 100644
index 00000000000..2e25588bf77
--- /dev/null
+++ b/tests/baselines/reference/library-reference-12.symbols
@@ -0,0 +1,13 @@
+=== /a/b/consumer.ts ===
+///
+$.foo();
+>$.foo : Symbol(foo, Decl(jquery.d.ts, 0, 16))
+>$ : Symbol($, Decl(jquery.d.ts, 0, 11))
+>foo : Symbol(foo, Decl(jquery.d.ts, 0, 16))
+
+=== /a/node_modules/jquery/dist/jquery.d.ts ===
+declare var $: { foo(): void };
+>$ : Symbol($, Decl(jquery.d.ts, 0, 11))
+>foo : Symbol(foo, Decl(jquery.d.ts, 0, 16))
+
+
diff --git a/tests/baselines/reference/library-reference-12.trace.json b/tests/baselines/reference/library-reference-12.trace.json
new file mode 100644
index 00000000000..2bf990d7c66
--- /dev/null
+++ b/tests/baselines/reference/library-reference-12.trace.json
@@ -0,0 +1,29 @@
+[
+ "======== Resolving type reference directive 'jquery' from '/a/b/consumer.ts' with compilation root dir '/a/b'. ========",
+ "Resolving with primary search path '/a/b/types/'",
+ "File '/a/b/types/jquery/package.json' does not exist.",
+ "File '/a/b/types/jquery/index.d.ts' does not exist.",
+ "Resolving with primary search path '/a/b/node_modules/'",
+ "File '/a/b/node_modules/jquery/package.json' does not exist.",
+ "File '/a/b/node_modules/jquery/index.d.ts' does not exist.",
+ "Resolving with primary search path '/a/b/node_modules/@types/'",
+ "File '/a/b/node_modules/@types/jquery/package.json' does not exist.",
+ "File '/a/b/node_modules/@types/jquery/index.d.ts' does not exist.",
+ "Resolving from node_modules folder...",
+ "File '/a/b/node_modules/jquery.ts' does not exist.",
+ "File '/a/b/node_modules/jquery.d.ts' does not exist.",
+ "File '/a/b/node_modules/jquery/package.json' does not exist.",
+ "File '/a/b/node_modules/jquery/index.ts' does not exist.",
+ "File '/a/b/node_modules/jquery/index.d.ts' does not exist.",
+ "File '/a/b/node_modules/@types/jquery.ts' does not exist.",
+ "File '/a/b/node_modules/@types/jquery.d.ts' does not exist.",
+ "File '/a/b/node_modules/@types/jquery/package.json' does not exist.",
+ "File '/a/b/node_modules/@types/jquery/index.ts' does not exist.",
+ "File '/a/b/node_modules/@types/jquery/index.d.ts' does not exist.",
+ "File '/a/node_modules/jquery.ts' does not exist.",
+ "File '/a/node_modules/jquery.d.ts' does not exist.",
+ "Found 'package.json' at '/a/node_modules/jquery/package.json'.",
+ "'package.json' has 'types' field 'dist/jquery.d.ts' that references '/a/node_modules/jquery/dist/jquery.d.ts'.",
+ "File '/a/node_modules/jquery/dist/jquery.d.ts' exist - use it as a name resolution result.",
+ "======== Type reference directive 'jquery' was successfully resolved to '/a/node_modules/jquery/dist/jquery.d.ts', primary: false. ========"
+]
\ No newline at end of file
diff --git a/tests/baselines/reference/library-reference-12.types b/tests/baselines/reference/library-reference-12.types
new file mode 100644
index 00000000000..2ab9fb8ba95
--- /dev/null
+++ b/tests/baselines/reference/library-reference-12.types
@@ -0,0 +1,14 @@
+=== /a/b/consumer.ts ===
+///
+$.foo();
+>$.foo() : void
+>$.foo : () => void
+>$ : { foo(): void; }
+>foo : () => void
+
+=== /a/node_modules/jquery/dist/jquery.d.ts ===
+declare var $: { foo(): void };
+>$ : { foo(): void; }
+>foo : () => void
+
+
diff --git a/tests/baselines/reference/library-reference-2.js b/tests/baselines/reference/library-reference-2.js
index f908e944309..20729db6c60 100644
--- a/tests/baselines/reference/library-reference-2.js
+++ b/tests/baselines/reference/library-reference-2.js
@@ -5,7 +5,7 @@
// package.json in a primary reference can refer to another file
{
- "typings": "jquery.d.ts"
+ "types": "jquery.d.ts"
}
//// [jquery.d.ts]
@@ -13,10 +13,10 @@ declare var $: { foo(): void };
//// [consumer.ts]
-///
+///
$.foo();
//// [consumer.js]
-///
+///
$.foo();
diff --git a/tests/baselines/reference/library-reference-2.symbols b/tests/baselines/reference/library-reference-2.symbols
index 4743737c4b6..9d0f7e4781e 100644
--- a/tests/baselines/reference/library-reference-2.symbols
+++ b/tests/baselines/reference/library-reference-2.symbols
@@ -1,11 +1,11 @@
-=== tests/cases/conformance/references/consumer.ts ===
-///
+=== /consumer.ts ===
+///
$.foo();
>$.foo : Symbol(foo, Decl(jquery.d.ts, 0, 16))
>$ : Symbol($, Decl(jquery.d.ts, 0, 11))
>foo : Symbol(foo, Decl(jquery.d.ts, 0, 16))
-=== tests/cases/conformance/references/typings/jquery/jquery.d.ts ===
+=== /types/jquery/jquery.d.ts ===
declare var $: { foo(): void };
>$ : Symbol($, Decl(jquery.d.ts, 0, 11))
>foo : Symbol(foo, Decl(jquery.d.ts, 0, 16))
diff --git a/tests/baselines/reference/library-reference-2.trace.json b/tests/baselines/reference/library-reference-2.trace.json
new file mode 100644
index 00000000000..82eddf3c7dc
--- /dev/null
+++ b/tests/baselines/reference/library-reference-2.trace.json
@@ -0,0 +1,8 @@
+[
+ "======== Resolving type reference directive 'jquery' from '/consumer.ts' with compilation root dir '/'. ========",
+ "Resolving with primary search path '/types/'",
+ "Found 'package.json' at '/types/jquery/package.json'.",
+ "'package.json' has 'types' field 'jquery.d.ts' that references '/types/jquery/jquery.d.ts'.",
+ "File '/types/jquery/jquery.d.ts' exist - use it as a name resolution result.",
+ "======== Type reference directive 'jquery' was successfully resolved to '/types/jquery/jquery.d.ts', primary: true. ========"
+]
\ No newline at end of file
diff --git a/tests/baselines/reference/library-reference-2.types b/tests/baselines/reference/library-reference-2.types
index 41167826ce0..42d78f72865 100644
--- a/tests/baselines/reference/library-reference-2.types
+++ b/tests/baselines/reference/library-reference-2.types
@@ -1,12 +1,12 @@
-=== tests/cases/conformance/references/consumer.ts ===
-///
+=== /consumer.ts ===
+///
$.foo();
>$.foo() : void
>$.foo : () => void
>$ : { foo(): void; }
>foo : () => void
-=== tests/cases/conformance/references/typings/jquery/jquery.d.ts ===
+=== /types/jquery/jquery.d.ts ===
declare var $: { foo(): void };
>$ : { foo(): void; }
>foo : () => void
diff --git a/tests/baselines/reference/library-reference-3.js b/tests/baselines/reference/library-reference-3.js
index 26c5295b7ac..6f9ad2d43d2 100644
--- a/tests/baselines/reference/library-reference-3.js
+++ b/tests/baselines/reference/library-reference-3.js
@@ -7,10 +7,10 @@
declare var $: { foo(): void };
//// [consumer.ts]
-///
+///
$.foo();
//// [consumer.js]
-///
+///
$.foo();
diff --git a/tests/baselines/reference/library-reference-3.symbols b/tests/baselines/reference/library-reference-3.symbols
index 1e0bc89bbe7..a1785fd77c9 100644
--- a/tests/baselines/reference/library-reference-3.symbols
+++ b/tests/baselines/reference/library-reference-3.symbols
@@ -1,11 +1,11 @@
-=== tests/cases/conformance/references/src/consumer.ts ===
-///
+=== /src/consumer.ts ===
+///
$.foo();
>$.foo : Symbol(foo, Decl(index.d.ts, 3, 16))
>$ : Symbol($, Decl(index.d.ts, 3, 11))
>foo : Symbol(foo, Decl(index.d.ts, 3, 16))
-=== tests/cases/conformance/references/src/node_modules/jquery/index.d.ts ===
+=== /src/node_modules/jquery/index.d.ts ===
// Secondary references are possible
diff --git a/tests/baselines/reference/library-reference-3.trace.json b/tests/baselines/reference/library-reference-3.trace.json
new file mode 100644
index 00000000000..9bbedd4a22b
--- /dev/null
+++ b/tests/baselines/reference/library-reference-3.trace.json
@@ -0,0 +1,10 @@
+[
+ "======== Resolving type reference directive 'jquery' from '/src/consumer.ts' with compilation root dir '/src'. ========",
+ "Resolving with primary search path '/src/types/'",
+ "File '/src/types/jquery/package.json' does not exist.",
+ "File '/src/types/jquery/index.d.ts' does not exist.",
+ "Resolving with primary search path '/src/node_modules/'",
+ "File '/src/node_modules/jquery/package.json' does not exist.",
+ "File '/src/node_modules/jquery/index.d.ts' exist - use it as a name resolution result.",
+ "======== Type reference directive 'jquery' was successfully resolved to '/src/node_modules/jquery/index.d.ts', primary: true. ========"
+]
\ No newline at end of file
diff --git a/tests/baselines/reference/library-reference-3.types b/tests/baselines/reference/library-reference-3.types
index 231dc451c22..ed7da59525f 100644
--- a/tests/baselines/reference/library-reference-3.types
+++ b/tests/baselines/reference/library-reference-3.types
@@ -1,12 +1,12 @@
-=== tests/cases/conformance/references/src/consumer.ts ===
-///
+=== /src/consumer.ts ===
+///
$.foo();
>$.foo() : void
>$.foo : () => void
>$ : { foo(): void; }
>foo : () => void
-=== tests/cases/conformance/references/src/node_modules/jquery/index.d.ts ===
+=== /src/node_modules/jquery/index.d.ts ===
// Secondary references are possible
diff --git a/tests/baselines/reference/library-reference-4.errors.txt b/tests/baselines/reference/library-reference-4.errors.txt
deleted file mode 100644
index 0090b64afc2..00000000000
--- a/tests/baselines/reference/library-reference-4.errors.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-tests/cases/conformance/references/src/root.ts(1,1): error TS2304: Cannot find name 'foo'.
-tests/cases/conformance/references/src/root.ts(2,1): error TS2304: Cannot find name 'bar'.
-
-
-==== tests/cases/conformance/references/src/root.ts (2 errors) ====
- ///
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-!!! error TS2304: Cannot find name 'foo'.
- ///
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-!!! error TS2304: Cannot find name 'bar'.
-
-==== tests/cases/conformance/references/node_modules/foo/index.d.ts (0 errors) ====
-
- // Secondary references may be duplicated if they agree in content
-
- ///
- declare var foo: any;
-
-==== tests/cases/conformance/references/node_modules/foo/node_modules/alpha/index.d.ts (0 errors) ====
- declare var alpha: any;
-
-==== tests/cases/conformance/references/node_modules/bar/index.d.ts (0 errors) ====
- ///
- declare var bar: any;
-
-==== tests/cases/conformance/references/node_modules/bar/node_modules/alpha/index.d.ts (0 errors) ====
- declare var alpha: any;
-
\ No newline at end of file
diff --git a/tests/baselines/reference/library-reference-4.js b/tests/baselines/reference/library-reference-4.js
index 514b3430e8b..39e4b1d73a5 100644
--- a/tests/baselines/reference/library-reference-4.js
+++ b/tests/baselines/reference/library-reference-4.js
@@ -4,24 +4,24 @@
// Secondary references may be duplicated if they agree in content
-///
+///
declare var foo: any;
//// [index.d.ts]
declare var alpha: any;
//// [index.d.ts]
-///
+///
declare var bar: any;
//// [index.d.ts]
declare var alpha: any;
//// [root.ts]
-///
-///
+///
+///
//// [root.js]
-///
-///
+///
+///
diff --git a/tests/baselines/reference/library-reference-4.symbols b/tests/baselines/reference/library-reference-4.symbols
new file mode 100644
index 00000000000..f7c082a946d
--- /dev/null
+++ b/tests/baselines/reference/library-reference-4.symbols
@@ -0,0 +1,21 @@
+=== /src/root.ts ===
+///
+No type information for this code.///
+No type information for this code.
+No type information for this code.=== /node_modules/foo/index.d.ts ===
+
+// Secondary references may be duplicated if they agree in content
+
+///
+declare var foo: any;
+>foo : Symbol(foo, Decl(index.d.ts, 4, 11))
+
+=== /node_modules/foo/node_modules/alpha/index.d.ts ===
+declare var alpha: any;
+>alpha : Symbol(alpha, Decl(index.d.ts, 0, 11))
+
+=== /node_modules/bar/index.d.ts ===
+///
+declare var bar: any;
+>bar : Symbol(bar, Decl(index.d.ts, 1, 11))
+
diff --git a/tests/baselines/reference/library-reference-4.trace.json b/tests/baselines/reference/library-reference-4.trace.json
new file mode 100644
index 00000000000..c0ac8c39512
--- /dev/null
+++ b/tests/baselines/reference/library-reference-4.trace.json
@@ -0,0 +1,90 @@
+[
+ "======== Resolving type reference directive 'foo' from '/src/root.ts' with compilation root dir '/src'. ========",
+ "Resolving with primary search path '/src/types/'",
+ "File '/src/types/foo/package.json' does not exist.",
+ "File '/src/types/foo/index.d.ts' does not exist.",
+ "Resolving with primary search path '/src/node_modules/'",
+ "File '/src/node_modules/foo/package.json' does not exist.",
+ "File '/src/node_modules/foo/index.d.ts' does not exist.",
+ "Resolving with primary search path '/src/node_modules/@types/'",
+ "File '/src/node_modules/@types/foo/package.json' does not exist.",
+ "File '/src/node_modules/@types/foo/index.d.ts' does not exist.",
+ "Resolving from node_modules folder...",
+ "File '/src/node_modules/foo.ts' does not exist.",
+ "File '/src/node_modules/foo.d.ts' does not exist.",
+ "File '/src/node_modules/foo/package.json' does not exist.",
+ "File '/src/node_modules/foo/index.ts' does not exist.",
+ "File '/src/node_modules/foo/index.d.ts' does not exist.",
+ "File '/src/node_modules/@types/foo.ts' does not exist.",
+ "File '/src/node_modules/@types/foo.d.ts' does not exist.",
+ "File '/src/node_modules/@types/foo/package.json' does not exist.",
+ "File '/src/node_modules/@types/foo/index.ts' does not exist.",
+ "File '/src/node_modules/@types/foo/index.d.ts' does not exist.",
+ "File '/node_modules/foo.ts' does not exist.",
+ "File '/node_modules/foo.d.ts' does not exist.",
+ "File '/node_modules/foo/package.json' does not exist.",
+ "File '/node_modules/foo/index.ts' does not exist.",
+ "File '/node_modules/foo/index.d.ts' exist - use it as a name resolution result.",
+ "======== Type reference directive 'foo' was successfully resolved to '/node_modules/foo/index.d.ts', primary: false. ========",
+ "======== Resolving type reference directive 'bar' from '/src/root.ts' with compilation root dir '/src'. ========",
+ "Resolving with primary search path '/src/types/'",
+ "File '/src/types/bar/package.json' does not exist.",
+ "File '/src/types/bar/index.d.ts' does not exist.",
+ "Resolving with primary search path '/src/node_modules/'",
+ "File '/src/node_modules/bar/package.json' does not exist.",
+ "File '/src/node_modules/bar/index.d.ts' does not exist.",
+ "Resolving with primary search path '/src/node_modules/@types/'",
+ "File '/src/node_modules/@types/bar/package.json' does not exist.",
+ "File '/src/node_modules/@types/bar/index.d.ts' does not exist.",
+ "Resolving from node_modules folder...",
+ "File '/src/node_modules/bar.ts' does not exist.",
+ "File '/src/node_modules/bar.d.ts' does not exist.",
+ "File '/src/node_modules/bar/package.json' does not exist.",
+ "File '/src/node_modules/bar/index.ts' does not exist.",
+ "File '/src/node_modules/bar/index.d.ts' does not exist.",
+ "File '/src/node_modules/@types/bar.ts' does not exist.",
+ "File '/src/node_modules/@types/bar.d.ts' does not exist.",
+ "File '/src/node_modules/@types/bar/package.json' does not exist.",
+ "File '/src/node_modules/@types/bar/index.ts' does not exist.",
+ "File '/src/node_modules/@types/bar/index.d.ts' does not exist.",
+ "File '/node_modules/bar.ts' does not exist.",
+ "File '/node_modules/bar.d.ts' does not exist.",
+ "File '/node_modules/bar/package.json' does not exist.",
+ "File '/node_modules/bar/index.ts' does not exist.",
+ "File '/node_modules/bar/index.d.ts' exist - use it as a name resolution result.",
+ "======== Type reference directive 'bar' was successfully resolved to '/node_modules/bar/index.d.ts', primary: false. ========",
+ "======== Resolving type reference directive 'alpha' from '/node_modules/foo/index.d.ts' with compilation root dir '/src'. ========",
+ "Resolving with primary search path '/src/types/'",
+ "File '/src/types/alpha/package.json' does not exist.",
+ "File '/src/types/alpha/index.d.ts' does not exist.",
+ "Resolving with primary search path '/src/node_modules/'",
+ "File '/src/node_modules/alpha/package.json' does not exist.",
+ "File '/src/node_modules/alpha/index.d.ts' does not exist.",
+ "Resolving with primary search path '/src/node_modules/@types/'",
+ "File '/src/node_modules/@types/alpha/package.json' does not exist.",
+ "File '/src/node_modules/@types/alpha/index.d.ts' does not exist.",
+ "Resolving from node_modules folder...",
+ "File '/node_modules/foo/node_modules/alpha.ts' does not exist.",
+ "File '/node_modules/foo/node_modules/alpha.d.ts' does not exist.",
+ "File '/node_modules/foo/node_modules/alpha/package.json' does not exist.",
+ "File '/node_modules/foo/node_modules/alpha/index.ts' does not exist.",
+ "File '/node_modules/foo/node_modules/alpha/index.d.ts' exist - use it as a name resolution result.",
+ "======== Type reference directive 'alpha' was successfully resolved to '/node_modules/foo/node_modules/alpha/index.d.ts', primary: false. ========",
+ "======== Resolving type reference directive 'alpha' from '/node_modules/bar/index.d.ts' with compilation root dir '/src'. ========",
+ "Resolving with primary search path '/src/types/'",
+ "File '/src/types/alpha/package.json' does not exist.",
+ "File '/src/types/alpha/index.d.ts' does not exist.",
+ "Resolving with primary search path '/src/node_modules/'",
+ "File '/src/node_modules/alpha/package.json' does not exist.",
+ "File '/src/node_modules/alpha/index.d.ts' does not exist.",
+ "Resolving with primary search path '/src/node_modules/@types/'",
+ "File '/src/node_modules/@types/alpha/package.json' does not exist.",
+ "File '/src/node_modules/@types/alpha/index.d.ts' does not exist.",
+ "Resolving from node_modules folder...",
+ "File '/node_modules/bar/node_modules/alpha.ts' does not exist.",
+ "File '/node_modules/bar/node_modules/alpha.d.ts' does not exist.",
+ "File '/node_modules/bar/node_modules/alpha/package.json' does not exist.",
+ "File '/node_modules/bar/node_modules/alpha/index.ts' does not exist.",
+ "File '/node_modules/bar/node_modules/alpha/index.d.ts' exist - use it as a name resolution result.",
+ "======== Type reference directive 'alpha' was successfully resolved to '/node_modules/bar/node_modules/alpha/index.d.ts', primary: false. ========"
+]
\ No newline at end of file
diff --git a/tests/baselines/reference/library-reference-4.types b/tests/baselines/reference/library-reference-4.types
new file mode 100644
index 00000000000..a0a7d370b4c
--- /dev/null
+++ b/tests/baselines/reference/library-reference-4.types
@@ -0,0 +1,21 @@
+=== /src/root.ts ===
+///
+No type information for this code.///
+No type information for this code.
+No type information for this code.=== /node_modules/foo/index.d.ts ===
+
+// Secondary references may be duplicated if they agree in content
+
+///
+declare var foo: any;
+>foo : any
+
+=== /node_modules/foo/node_modules/alpha/index.d.ts ===
+declare var alpha: any;
+>alpha : any
+
+=== /node_modules/bar/index.d.ts ===
+///
+declare var bar: any;
+>bar : any
+
diff --git a/tests/baselines/reference/library-reference-5.errors.txt b/tests/baselines/reference/library-reference-5.errors.txt
index 3d1483af9f2..ea571cad1a3 100644
--- a/tests/baselines/reference/library-reference-5.errors.txt
+++ b/tests/baselines/reference/library-reference-5.errors.txt
@@ -1,29 +1,26 @@
-tests/cases/conformance/references/src/root.ts(1,1): error TS2304: Cannot find name 'foo'.
-tests/cases/conformance/references/src/root.ts(2,1): error TS2304: Cannot find name 'bar'.
+/node_modules/bar/index.d.ts(1,1): message TS4090: Conflicting library definitions for 'alpha' found at '/node_modules/bar/node_modules/alpha/index.d.ts' and '/node_modules/foo/node_modules/alpha/index.d.ts'. Copy the correct file to the 'typings' folder to resolve this conflict.
-==== tests/cases/conformance/references/src/root.ts (2 errors) ====
- ///
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-!!! error TS2304: Cannot find name 'foo'.
- ///
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-!!! error TS2304: Cannot find name 'bar'.
+==== /src/root.ts (0 errors) ====
+ ///
+ ///
-==== tests/cases/conformance/references/node_modules/foo/index.d.ts (0 errors) ====
+==== /node_modules/foo/index.d.ts (0 errors) ====
// Secondary references may not be duplicated if they disagree in content
- ///
+ ///
declare var foo: any;
-==== tests/cases/conformance/references/node_modules/foo/node_modules/alpha/index.d.ts (0 errors) ====
+==== /node_modules/foo/node_modules/alpha/index.d.ts (0 errors) ====
declare var alpha: any;
-==== tests/cases/conformance/references/node_modules/bar/index.d.ts (0 errors) ====
- ///
+==== /node_modules/bar/index.d.ts (1 errors) ====
+ ///
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+!!! message TS4090: Conflicting library definitions for 'alpha' found at 'index.d.ts' and 'index.d.ts'. Copy the correct file to the 'typings' folder to resolve this conflict.
declare var bar: any;
-==== tests/cases/conformance/references/node_modules/bar/node_modules/alpha/index.d.ts (0 errors) ====
+==== /node_modules/bar/node_modules/alpha/index.d.ts (0 errors) ====
declare var alpha: {};
\ No newline at end of file
diff --git a/tests/baselines/reference/library-reference-5.js b/tests/baselines/reference/library-reference-5.js
index 00872041253..40d2131920e 100644
--- a/tests/baselines/reference/library-reference-5.js
+++ b/tests/baselines/reference/library-reference-5.js
@@ -4,24 +4,24 @@
// Secondary references may not be duplicated if they disagree in content
-///
+///
declare var foo: any;
//// [index.d.ts]
declare var alpha: any;
//// [index.d.ts]
-///
+///
declare var bar: any;
//// [index.d.ts]
declare var alpha: {};
//// [root.ts]
-///
-///
+///
+///
//// [root.js]
-///
-///
+///
+///
diff --git a/tests/baselines/reference/library-reference-5.trace.json b/tests/baselines/reference/library-reference-5.trace.json
new file mode 100644
index 00000000000..c0ac8c39512
--- /dev/null
+++ b/tests/baselines/reference/library-reference-5.trace.json
@@ -0,0 +1,90 @@
+[
+ "======== Resolving type reference directive 'foo' from '/src/root.ts' with compilation root dir '/src'. ========",
+ "Resolving with primary search path '/src/types/'",
+ "File '/src/types/foo/package.json' does not exist.",
+ "File '/src/types/foo/index.d.ts' does not exist.",
+ "Resolving with primary search path '/src/node_modules/'",
+ "File '/src/node_modules/foo/package.json' does not exist.",
+ "File '/src/node_modules/foo/index.d.ts' does not exist.",
+ "Resolving with primary search path '/src/node_modules/@types/'",
+ "File '/src/node_modules/@types/foo/package.json' does not exist.",
+ "File '/src/node_modules/@types/foo/index.d.ts' does not exist.",
+ "Resolving from node_modules folder...",
+ "File '/src/node_modules/foo.ts' does not exist.",
+ "File '/src/node_modules/foo.d.ts' does not exist.",
+ "File '/src/node_modules/foo/package.json' does not exist.",
+ "File '/src/node_modules/foo/index.ts' does not exist.",
+ "File '/src/node_modules/foo/index.d.ts' does not exist.",
+ "File '/src/node_modules/@types/foo.ts' does not exist.",
+ "File '/src/node_modules/@types/foo.d.ts' does not exist.",
+ "File '/src/node_modules/@types/foo/package.json' does not exist.",
+ "File '/src/node_modules/@types/foo/index.ts' does not exist.",
+ "File '/src/node_modules/@types/foo/index.d.ts' does not exist.",
+ "File '/node_modules/foo.ts' does not exist.",
+ "File '/node_modules/foo.d.ts' does not exist.",
+ "File '/node_modules/foo/package.json' does not exist.",
+ "File '/node_modules/foo/index.ts' does not exist.",
+ "File '/node_modules/foo/index.d.ts' exist - use it as a name resolution result.",
+ "======== Type reference directive 'foo' was successfully resolved to '/node_modules/foo/index.d.ts', primary: false. ========",
+ "======== Resolving type reference directive 'bar' from '/src/root.ts' with compilation root dir '/src'. ========",
+ "Resolving with primary search path '/src/types/'",
+ "File '/src/types/bar/package.json' does not exist.",
+ "File '/src/types/bar/index.d.ts' does not exist.",
+ "Resolving with primary search path '/src/node_modules/'",
+ "File '/src/node_modules/bar/package.json' does not exist.",
+ "File '/src/node_modules/bar/index.d.ts' does not exist.",
+ "Resolving with primary search path '/src/node_modules/@types/'",
+ "File '/src/node_modules/@types/bar/package.json' does not exist.",
+ "File '/src/node_modules/@types/bar/index.d.ts' does not exist.",
+ "Resolving from node_modules folder...",
+ "File '/src/node_modules/bar.ts' does not exist.",
+ "File '/src/node_modules/bar.d.ts' does not exist.",
+ "File '/src/node_modules/bar/package.json' does not exist.",
+ "File '/src/node_modules/bar/index.ts' does not exist.",
+ "File '/src/node_modules/bar/index.d.ts' does not exist.",
+ "File '/src/node_modules/@types/bar.ts' does not exist.",
+ "File '/src/node_modules/@types/bar.d.ts' does not exist.",
+ "File '/src/node_modules/@types/bar/package.json' does not exist.",
+ "File '/src/node_modules/@types/bar/index.ts' does not exist.",
+ "File '/src/node_modules/@types/bar/index.d.ts' does not exist.",
+ "File '/node_modules/bar.ts' does not exist.",
+ "File '/node_modules/bar.d.ts' does not exist.",
+ "File '/node_modules/bar/package.json' does not exist.",
+ "File '/node_modules/bar/index.ts' does not exist.",
+ "File '/node_modules/bar/index.d.ts' exist - use it as a name resolution result.",
+ "======== Type reference directive 'bar' was successfully resolved to '/node_modules/bar/index.d.ts', primary: false. ========",
+ "======== Resolving type reference directive 'alpha' from '/node_modules/foo/index.d.ts' with compilation root dir '/src'. ========",
+ "Resolving with primary search path '/src/types/'",
+ "File '/src/types/alpha/package.json' does not exist.",
+ "File '/src/types/alpha/index.d.ts' does not exist.",
+ "Resolving with primary search path '/src/node_modules/'",
+ "File '/src/node_modules/alpha/package.json' does not exist.",
+ "File '/src/node_modules/alpha/index.d.ts' does not exist.",
+ "Resolving with primary search path '/src/node_modules/@types/'",
+ "File '/src/node_modules/@types/alpha/package.json' does not exist.",
+ "File '/src/node_modules/@types/alpha/index.d.ts' does not exist.",
+ "Resolving from node_modules folder...",
+ "File '/node_modules/foo/node_modules/alpha.ts' does not exist.",
+ "File '/node_modules/foo/node_modules/alpha.d.ts' does not exist.",
+ "File '/node_modules/foo/node_modules/alpha/package.json' does not exist.",
+ "File '/node_modules/foo/node_modules/alpha/index.ts' does not exist.",
+ "File '/node_modules/foo/node_modules/alpha/index.d.ts' exist - use it as a name resolution result.",
+ "======== Type reference directive 'alpha' was successfully resolved to '/node_modules/foo/node_modules/alpha/index.d.ts', primary: false. ========",
+ "======== Resolving type reference directive 'alpha' from '/node_modules/bar/index.d.ts' with compilation root dir '/src'. ========",
+ "Resolving with primary search path '/src/types/'",
+ "File '/src/types/alpha/package.json' does not exist.",
+ "File '/src/types/alpha/index.d.ts' does not exist.",
+ "Resolving with primary search path '/src/node_modules/'",
+ "File '/src/node_modules/alpha/package.json' does not exist.",
+ "File '/src/node_modules/alpha/index.d.ts' does not exist.",
+ "Resolving with primary search path '/src/node_modules/@types/'",
+ "File '/src/node_modules/@types/alpha/package.json' does not exist.",
+ "File '/src/node_modules/@types/alpha/index.d.ts' does not exist.",
+ "Resolving from node_modules folder...",
+ "File '/node_modules/bar/node_modules/alpha.ts' does not exist.",
+ "File '/node_modules/bar/node_modules/alpha.d.ts' does not exist.",
+ "File '/node_modules/bar/node_modules/alpha/package.json' does not exist.",
+ "File '/node_modules/bar/node_modules/alpha/index.ts' does not exist.",
+ "File '/node_modules/bar/node_modules/alpha/index.d.ts' exist - use it as a name resolution result.",
+ "======== Type reference directive 'alpha' was successfully resolved to '/node_modules/bar/node_modules/alpha/index.d.ts', primary: false. ========"
+]
\ No newline at end of file
diff --git a/tests/baselines/reference/library-reference-6.js b/tests/baselines/reference/library-reference-6.js
index 5bcd3b85541..d78a3a131a1 100644
--- a/tests/baselines/reference/library-reference-6.js
+++ b/tests/baselines/reference/library-reference-6.js
@@ -7,10 +7,10 @@
declare var alpha: { a: string };
//// [foo.ts]
-///
+///
var x: string = alpha.a;
//// [foo.js]
-///
+///
var x = alpha.a;
diff --git a/tests/baselines/reference/library-reference-6.symbols b/tests/baselines/reference/library-reference-6.symbols
index 06128adb89c..328842f804c 100644
--- a/tests/baselines/reference/library-reference-6.symbols
+++ b/tests/baselines/reference/library-reference-6.symbols
@@ -1,12 +1,12 @@
-=== tests/cases/conformance/references/src/foo.ts ===
-///
+=== /src/foo.ts ===
+///
var x: string = alpha.a;
>x : Symbol(x, Decl(foo.ts, 1, 3))
>alpha.a : Symbol(a, Decl(index.d.ts, 3, 20))
>alpha : Symbol(alpha, Decl(index.d.ts, 3, 11))
>a : Symbol(a, Decl(index.d.ts, 3, 20))
-=== tests/cases/conformance/references/typings/alpha/index.d.ts ===
+=== /types/alpha/index.d.ts ===
// The primary lookup folder is relative to tsconfig.json, if present
diff --git a/tests/baselines/reference/library-reference-6.trace.json b/tests/baselines/reference/library-reference-6.trace.json
new file mode 100644
index 00000000000..2fec0fa7547
--- /dev/null
+++ b/tests/baselines/reference/library-reference-6.trace.json
@@ -0,0 +1,10 @@
+[
+ "======== Resolving type reference directive 'alpha' from '/src/foo.ts' with compilation root dir '/'. ========",
+ "Resolving with primary search path '/'",
+ "File '/alpha/package.json' does not exist.",
+ "File '/alpha/index.d.ts' does not exist.",
+ "Resolving with primary search path '/types/'",
+ "File '/types/alpha/package.json' does not exist.",
+ "File '/types/alpha/index.d.ts' exist - use it as a name resolution result.",
+ "======== Type reference directive 'alpha' was successfully resolved to '/types/alpha/index.d.ts', primary: true. ========"
+]
\ No newline at end of file
diff --git a/tests/baselines/reference/library-reference-6.types b/tests/baselines/reference/library-reference-6.types
index 843bf6990a0..2f6c1e49b89 100644
--- a/tests/baselines/reference/library-reference-6.types
+++ b/tests/baselines/reference/library-reference-6.types
@@ -1,12 +1,12 @@
-=== tests/cases/conformance/references/src/foo.ts ===
-///
+=== /src/foo.ts ===
+///
var x: string = alpha.a;
>x : string
>alpha.a : string
>alpha : { a: string; }
>a : string
-=== tests/cases/conformance/references/typings/alpha/index.d.ts ===
+=== /types/alpha/index.d.ts ===
// The primary lookup folder is relative to tsconfig.json, if present
diff --git a/tests/baselines/reference/library-reference-7.js b/tests/baselines/reference/library-reference-7.js
index ff7febbbd4c..fce1598b2fd 100644
--- a/tests/baselines/reference/library-reference-7.js
+++ b/tests/baselines/reference/library-reference-7.js
@@ -7,10 +7,10 @@
declare var alpha: { a: string };
//// [foo.ts]
-///
+///
var x: string = alpha.a;
//// [foo.js]
-///
+///
var x = alpha.a;
diff --git a/tests/baselines/reference/library-reference-7.symbols b/tests/baselines/reference/library-reference-7.symbols
index ce0df1fa2fc..ec8c2f014ac 100644
--- a/tests/baselines/reference/library-reference-7.symbols
+++ b/tests/baselines/reference/library-reference-7.symbols
@@ -1,12 +1,12 @@
-=== tests/cases/conformance/references/base/src/foo.ts ===
-///
+=== /base/src/foo.ts ===
+///
var x: string = alpha.a;
>x : Symbol(x, Decl(foo.ts, 1, 3))
>alpha.a : Symbol(a, Decl(index.d.ts, 3, 20))
>alpha : Symbol(alpha, Decl(index.d.ts, 3, 11))
>a : Symbol(a, Decl(index.d.ts, 3, 20))
-=== tests/cases/conformance/references/base/typings/alpha/index.d.ts ===
+=== /base/types/alpha/index.d.ts ===
// The primary lookup folder is relative to tsconfig.json's 'root', if present
diff --git a/tests/baselines/reference/library-reference-7.trace.json b/tests/baselines/reference/library-reference-7.trace.json
new file mode 100644
index 00000000000..094e3640da7
--- /dev/null
+++ b/tests/baselines/reference/library-reference-7.trace.json
@@ -0,0 +1,10 @@
+[
+ "======== Resolving type reference directive 'alpha' from '/base/src/foo.ts' with compilation root dir '/base'. ========",
+ "Resolving with primary search path '/'",
+ "File '/alpha/package.json' does not exist.",
+ "File '/alpha/index.d.ts' does not exist.",
+ "Resolving with primary search path '/base/types/'",
+ "File '/base/types/alpha/package.json' does not exist.",
+ "File '/base/types/alpha/index.d.ts' exist - use it as a name resolution result.",
+ "======== Type reference directive 'alpha' was successfully resolved to '/base/types/alpha/index.d.ts', primary: true. ========"
+]
\ No newline at end of file
diff --git a/tests/baselines/reference/library-reference-7.types b/tests/baselines/reference/library-reference-7.types
index 5f8b5bc23ee..3f6c720c882 100644
--- a/tests/baselines/reference/library-reference-7.types
+++ b/tests/baselines/reference/library-reference-7.types
@@ -1,12 +1,12 @@
-=== tests/cases/conformance/references/base/src/foo.ts ===
-///
+=== /base/src/foo.ts ===
+///
var x: string = alpha.a;
>x : string
>alpha.a : string
>alpha : { a: string; }
>a : string
-=== tests/cases/conformance/references/base/typings/alpha/index.d.ts ===
+=== /base/types/alpha/index.d.ts ===
// The primary lookup folder is relative to tsconfig.json's 'root', if present
diff --git a/tests/baselines/reference/library-reference-8.js b/tests/baselines/reference/library-reference-8.js
index 7357ad22143..a48b226cb62 100644
--- a/tests/baselines/reference/library-reference-8.js
+++ b/tests/baselines/reference/library-reference-8.js
@@ -4,21 +4,21 @@
// Don't crash in circular library reference situations
-///
+///
declare var alpha: { a: string };
//// [index.d.ts]
-///
+///
declare var beta: { b: string };
//// [foo.ts]
-///
-///
+///
+///
var x: string = alpha.a + beta.b;
//// [foo.js]
-///
-///
+///
+///
var x = alpha.a + beta.b;
diff --git a/tests/baselines/reference/library-reference-8.symbols b/tests/baselines/reference/library-reference-8.symbols
index 7a7bc9e5097..299a60f1b1d 100644
--- a/tests/baselines/reference/library-reference-8.symbols
+++ b/tests/baselines/reference/library-reference-8.symbols
@@ -1,6 +1,6 @@
-=== tests/cases/conformance/references/foo.ts ===
-///
-///
+=== /foo.ts ===
+///
+///
var x: string = alpha.a + beta.b;
>x : Symbol(x, Decl(foo.ts, 2, 3))
>alpha.a : Symbol(a, Decl(index.d.ts, 4, 20))
@@ -11,17 +11,17 @@ var x: string = alpha.a + beta.b;
>b : Symbol(b, Decl(index.d.ts, 1, 19))
-=== tests/cases/conformance/references/typings/alpha/index.d.ts ===
+=== /types/alpha/index.d.ts ===
// Don't crash in circular library reference situations
-///
+///
declare var alpha: { a: string };
>alpha : Symbol(alpha, Decl(index.d.ts, 4, 11))
>a : Symbol(a, Decl(index.d.ts, 4, 20))
-=== tests/cases/conformance/references/typings/beta/index.d.ts ===
-///
+=== /types/beta/index.d.ts ===
+///
declare var beta: { b: string };
>beta : Symbol(beta, Decl(index.d.ts, 1, 11))
>b : Symbol(b, Decl(index.d.ts, 1, 19))
diff --git a/tests/baselines/reference/library-reference-8.trace.json b/tests/baselines/reference/library-reference-8.trace.json
new file mode 100644
index 00000000000..0dec47d9375
--- /dev/null
+++ b/tests/baselines/reference/library-reference-8.trace.json
@@ -0,0 +1,22 @@
+[
+ "======== Resolving type reference directive 'alpha' from '/foo.ts' with compilation root dir '/'. ========",
+ "Resolving with primary search path '/types/'",
+ "File '/types/alpha/package.json' does not exist.",
+ "File '/types/alpha/index.d.ts' exist - use it as a name resolution result.",
+ "======== Type reference directive 'alpha' was successfully resolved to '/types/alpha/index.d.ts', primary: true. ========",
+ "======== Resolving type reference directive 'beta' from '/foo.ts' with compilation root dir '/'. ========",
+ "Resolving with primary search path '/types/'",
+ "File '/types/beta/package.json' does not exist.",
+ "File '/types/beta/index.d.ts' exist - use it as a name resolution result.",
+ "======== Type reference directive 'beta' was successfully resolved to '/types/beta/index.d.ts', primary: true. ========",
+ "======== Resolving type reference directive 'beta' from '/types/alpha/index.d.ts' with compilation root dir '/'. ========",
+ "Resolving with primary search path '/types/'",
+ "File '/types/beta/package.json' does not exist.",
+ "File '/types/beta/index.d.ts' exist - use it as a name resolution result.",
+ "======== Type reference directive 'beta' was successfully resolved to '/types/beta/index.d.ts', primary: true. ========",
+ "======== Resolving type reference directive 'alpha' from '/types/beta/index.d.ts' with compilation root dir '/'. ========",
+ "Resolving with primary search path '/types/'",
+ "File '/types/alpha/package.json' does not exist.",
+ "File '/types/alpha/index.d.ts' exist - use it as a name resolution result.",
+ "======== Type reference directive 'alpha' was successfully resolved to '/types/alpha/index.d.ts', primary: true. ========"
+]
\ No newline at end of file
diff --git a/tests/baselines/reference/library-reference-8.types b/tests/baselines/reference/library-reference-8.types
index 2057559b498..b0780d90f63 100644
--- a/tests/baselines/reference/library-reference-8.types
+++ b/tests/baselines/reference/library-reference-8.types
@@ -1,6 +1,6 @@
-=== tests/cases/conformance/references/foo.ts ===
-///
-///
+=== /foo.ts ===
+///
+///
var x: string = alpha.a + beta.b;
>x : string
>alpha.a + beta.b : string
@@ -12,17 +12,17 @@ var x: string = alpha.a + beta.b;
>b : string
-=== tests/cases/conformance/references/typings/alpha/index.d.ts ===
+=== /types/alpha/index.d.ts ===
// Don't crash in circular library reference situations
-///
+///
declare var alpha: { a: string };
>alpha : { a: string; }
>a : string
-=== tests/cases/conformance/references/typings/beta/index.d.ts ===
-///
+=== /types/beta/index.d.ts ===
+///
declare var beta: { b: string };
>beta : { b: string; }
>b : string
diff --git a/tests/baselines/reference/library-reference-9.js b/tests/baselines/reference/library-reference-9.js
new file mode 100644
index 00000000000..ccb3b3213a9
--- /dev/null
+++ b/tests/baselines/reference/library-reference-9.js
@@ -0,0 +1,16 @@
+//// [tests/cases/conformance/references/library-reference-9.ts] ////
+
+//// [index.d.ts]
+
+// Use types search path
+
+declare var alpha: { a: string };
+
+//// [foo.ts]
+///
+var x: string = alpha.a;
+
+
+//// [foo.js]
+///
+var x = alpha.a;
diff --git a/tests/baselines/reference/library-reference-9.symbols b/tests/baselines/reference/library-reference-9.symbols
new file mode 100644
index 00000000000..62cde2117df
--- /dev/null
+++ b/tests/baselines/reference/library-reference-9.symbols
@@ -0,0 +1,16 @@
+=== /base/src/foo.ts ===
+///
+var x: string = alpha.a;
+>x : Symbol(x, Decl(foo.ts, 1, 3))
+>alpha.a : Symbol(a, Decl(index.d.ts, 3, 20))
+>alpha : Symbol(alpha, Decl(index.d.ts, 3, 11))
+>a : Symbol(a, Decl(index.d.ts, 3, 20))
+
+=== /share/typelib/alpha/index.d.ts ===
+
+// Use types search path
+
+declare var alpha: { a: string };
+>alpha : Symbol(alpha, Decl(index.d.ts, 3, 11))
+>a : Symbol(a, Decl(index.d.ts, 3, 20))
+
diff --git a/tests/baselines/reference/library-reference-9.trace.json b/tests/baselines/reference/library-reference-9.trace.json
new file mode 100644
index 00000000000..36119298d07
--- /dev/null
+++ b/tests/baselines/reference/library-reference-9.trace.json
@@ -0,0 +1,7 @@
+[
+ "======== Resolving type reference directive 'alpha' from '/base/src/foo.ts' with compilation root dir '/'. ========",
+ "Resolving with primary search path '/share/typelib'",
+ "File '/share/typelib/alpha/package.json' does not exist.",
+ "File '/share/typelib/alpha/index.d.ts' exist - use it as a name resolution result.",
+ "======== Type reference directive 'alpha' was successfully resolved to '/share/typelib/alpha/index.d.ts', primary: true. ========"
+]
\ No newline at end of file
diff --git a/tests/baselines/reference/library-reference-9.types b/tests/baselines/reference/library-reference-9.types
new file mode 100644
index 00000000000..8df2179e249
--- /dev/null
+++ b/tests/baselines/reference/library-reference-9.types
@@ -0,0 +1,16 @@
+=== /base/src/foo.ts ===
+///
+var x: string = alpha.a;
+>x : string
+>alpha.a : string
+>alpha : { a: string; }
+>a : string
+
+=== /share/typelib/alpha/index.d.ts ===
+
+// Use types search path
+
+declare var alpha: { a: string };
+>alpha : { a: string; }
+>a : string
+
diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution3_classic.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution3_classic.trace.json
index 513198c50b0..8b003e05e8f 100644
--- a/tests/baselines/reference/pathMappingBasedModuleResolution3_classic.trace.json
+++ b/tests/baselines/reference/pathMappingBasedModuleResolution3_classic.trace.json
@@ -3,11 +3,11 @@
"Explicitly specified module resolution kind: 'Classic'.",
"'baseUrl' option is set to 'c:/root', using this value to resolve non-relative module name 'folder2/file2'",
"Resolving module name 'folder2/file2' relative to base url 'c:/root' - 'c:/root/folder2/file2'.",
- "File 'c:/root/folder2/file2.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/folder2/file2.ts' exist - use it as a name resolution result.",
"======== Module name 'folder2/file2' was successfully resolved to 'c:/root/folder2/file2.ts'. ========",
"======== Resolving module './file3' from 'c:/root/folder2/file2.ts'. ========",
"Explicitly specified module resolution kind: 'Classic'.",
- "File 'c:/root/folder2/file3.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/folder2/file3.ts' exist - use it as a name resolution result.",
"======== Module name './file3' was successfully resolved to 'c:/root/folder2/file3.ts'. ========",
"======== Resolving module 'file4' from 'c:/root/folder2/file2.ts'. ========",
"Explicitly specified module resolution kind: 'Classic'.",
@@ -19,6 +19,6 @@
"File 'c:/root/folder2/file4.d.ts' does not exist.",
"File 'c:/root/file4.ts' does not exist.",
"File 'c:/root/file4.d.ts' does not exist.",
- "File 'c:/file4.ts' exist - use it as a module resolution result.",
+ "File 'c:/file4.ts' exist - use it as a name resolution result.",
"======== Module name 'file4' was successfully resolved to 'c:/file4.ts'. ========"
]
\ No newline at end of file
diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution3_node.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution3_node.trace.json
index 6d0de807bc0..af5e20a3cc3 100644
--- a/tests/baselines/reference/pathMappingBasedModuleResolution3_node.trace.json
+++ b/tests/baselines/reference/pathMappingBasedModuleResolution3_node.trace.json
@@ -4,12 +4,12 @@
"'baseUrl' option is set to 'c:/root', using this value to resolve non-relative module name 'folder2/file2'",
"Resolving module name 'folder2/file2' relative to base url 'c:/root' - 'c:/root/folder2/file2'.",
"Loading module as file / folder, candidate module location 'c:/root/folder2/file2'.",
- "File 'c:/root/folder2/file2.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/folder2/file2.ts' exist - use it as a name resolution result.",
"======== Module name 'folder2/file2' was successfully resolved to 'c:/root/folder2/file2.ts'. ========",
"======== Resolving module './file3' from 'c:/root/folder2/file2.ts'. ========",
"Explicitly specified module resolution kind: 'NodeJs'.",
"Loading module as file / folder, candidate module location 'c:/root/folder2/file3'.",
- "File 'c:/root/folder2/file3.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/folder2/file3.ts' exist - use it as a name resolution result.",
"======== Module name './file3' was successfully resolved to 'c:/root/folder2/file3.ts'. ========",
"======== Resolving module 'file4' from 'c:/root/folder2/file2.ts'. ========",
"Explicitly specified module resolution kind: 'NodeJs'.",
@@ -31,6 +31,13 @@
"File 'c:/root/folder2/node_modules/file4/index.ts' does not exist.",
"File 'c:/root/folder2/node_modules/file4/index.tsx' does not exist.",
"File 'c:/root/folder2/node_modules/file4/index.d.ts' does not exist.",
+ "File 'c:/root/folder2/node_modules/@types/file4.ts' does not exist.",
+ "File 'c:/root/folder2/node_modules/@types/file4.tsx' does not exist.",
+ "File 'c:/root/folder2/node_modules/@types/file4.d.ts' does not exist.",
+ "File 'c:/root/folder2/node_modules/@types/file4/package.json' does not exist.",
+ "File 'c:/root/folder2/node_modules/@types/file4/index.ts' does not exist.",
+ "File 'c:/root/folder2/node_modules/@types/file4/index.tsx' does not exist.",
+ "File 'c:/root/folder2/node_modules/@types/file4/index.d.ts' does not exist.",
"File 'c:/root/node_modules/file4.ts' does not exist.",
"File 'c:/root/node_modules/file4.tsx' does not exist.",
"File 'c:/root/node_modules/file4.d.ts' does not exist.",
@@ -38,12 +45,19 @@
"File 'c:/root/node_modules/file4/index.ts' does not exist.",
"File 'c:/root/node_modules/file4/index.tsx' does not exist.",
"File 'c:/root/node_modules/file4/index.d.ts' does not exist.",
+ "File 'c:/root/node_modules/@types/file4.ts' does not exist.",
+ "File 'c:/root/node_modules/@types/file4.tsx' does not exist.",
+ "File 'c:/root/node_modules/@types/file4.d.ts' does not exist.",
+ "File 'c:/root/node_modules/@types/file4/package.json' does not exist.",
+ "File 'c:/root/node_modules/@types/file4/index.ts' does not exist.",
+ "File 'c:/root/node_modules/@types/file4/index.tsx' does not exist.",
+ "File 'c:/root/node_modules/@types/file4/index.d.ts' does not exist.",
"File 'c:/node_modules/file4.ts' does not exist.",
"File 'c:/node_modules/file4.tsx' does not exist.",
"File 'c:/node_modules/file4.d.ts' does not exist.",
"File 'c:/node_modules/file4/package.json' does not exist.",
"File 'c:/node_modules/file4/index.ts' does not exist.",
"File 'c:/node_modules/file4/index.tsx' does not exist.",
- "File 'c:/node_modules/file4/index.d.ts' exist - use it as a module resolution result.",
+ "File 'c:/node_modules/file4/index.d.ts' exist - use it as a name resolution result.",
"======== Module name 'file4' was successfully resolved to 'c:/node_modules/file4/index.d.ts'. ========"
]
\ No newline at end of file
diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution4_classic.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution4_classic.trace.json
index 513198c50b0..8b003e05e8f 100644
--- a/tests/baselines/reference/pathMappingBasedModuleResolution4_classic.trace.json
+++ b/tests/baselines/reference/pathMappingBasedModuleResolution4_classic.trace.json
@@ -3,11 +3,11 @@
"Explicitly specified module resolution kind: 'Classic'.",
"'baseUrl' option is set to 'c:/root', using this value to resolve non-relative module name 'folder2/file2'",
"Resolving module name 'folder2/file2' relative to base url 'c:/root' - 'c:/root/folder2/file2'.",
- "File 'c:/root/folder2/file2.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/folder2/file2.ts' exist - use it as a name resolution result.",
"======== Module name 'folder2/file2' was successfully resolved to 'c:/root/folder2/file2.ts'. ========",
"======== Resolving module './file3' from 'c:/root/folder2/file2.ts'. ========",
"Explicitly specified module resolution kind: 'Classic'.",
- "File 'c:/root/folder2/file3.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/folder2/file3.ts' exist - use it as a name resolution result.",
"======== Module name './file3' was successfully resolved to 'c:/root/folder2/file3.ts'. ========",
"======== Resolving module 'file4' from 'c:/root/folder2/file2.ts'. ========",
"Explicitly specified module resolution kind: 'Classic'.",
@@ -19,6 +19,6 @@
"File 'c:/root/folder2/file4.d.ts' does not exist.",
"File 'c:/root/file4.ts' does not exist.",
"File 'c:/root/file4.d.ts' does not exist.",
- "File 'c:/file4.ts' exist - use it as a module resolution result.",
+ "File 'c:/file4.ts' exist - use it as a name resolution result.",
"======== Module name 'file4' was successfully resolved to 'c:/file4.ts'. ========"
]
\ No newline at end of file
diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution4_node.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution4_node.trace.json
index 6d0de807bc0..af5e20a3cc3 100644
--- a/tests/baselines/reference/pathMappingBasedModuleResolution4_node.trace.json
+++ b/tests/baselines/reference/pathMappingBasedModuleResolution4_node.trace.json
@@ -4,12 +4,12 @@
"'baseUrl' option is set to 'c:/root', using this value to resolve non-relative module name 'folder2/file2'",
"Resolving module name 'folder2/file2' relative to base url 'c:/root' - 'c:/root/folder2/file2'.",
"Loading module as file / folder, candidate module location 'c:/root/folder2/file2'.",
- "File 'c:/root/folder2/file2.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/folder2/file2.ts' exist - use it as a name resolution result.",
"======== Module name 'folder2/file2' was successfully resolved to 'c:/root/folder2/file2.ts'. ========",
"======== Resolving module './file3' from 'c:/root/folder2/file2.ts'. ========",
"Explicitly specified module resolution kind: 'NodeJs'.",
"Loading module as file / folder, candidate module location 'c:/root/folder2/file3'.",
- "File 'c:/root/folder2/file3.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/folder2/file3.ts' exist - use it as a name resolution result.",
"======== Module name './file3' was successfully resolved to 'c:/root/folder2/file3.ts'. ========",
"======== Resolving module 'file4' from 'c:/root/folder2/file2.ts'. ========",
"Explicitly specified module resolution kind: 'NodeJs'.",
@@ -31,6 +31,13 @@
"File 'c:/root/folder2/node_modules/file4/index.ts' does not exist.",
"File 'c:/root/folder2/node_modules/file4/index.tsx' does not exist.",
"File 'c:/root/folder2/node_modules/file4/index.d.ts' does not exist.",
+ "File 'c:/root/folder2/node_modules/@types/file4.ts' does not exist.",
+ "File 'c:/root/folder2/node_modules/@types/file4.tsx' does not exist.",
+ "File 'c:/root/folder2/node_modules/@types/file4.d.ts' does not exist.",
+ "File 'c:/root/folder2/node_modules/@types/file4/package.json' does not exist.",
+ "File 'c:/root/folder2/node_modules/@types/file4/index.ts' does not exist.",
+ "File 'c:/root/folder2/node_modules/@types/file4/index.tsx' does not exist.",
+ "File 'c:/root/folder2/node_modules/@types/file4/index.d.ts' does not exist.",
"File 'c:/root/node_modules/file4.ts' does not exist.",
"File 'c:/root/node_modules/file4.tsx' does not exist.",
"File 'c:/root/node_modules/file4.d.ts' does not exist.",
@@ -38,12 +45,19 @@
"File 'c:/root/node_modules/file4/index.ts' does not exist.",
"File 'c:/root/node_modules/file4/index.tsx' does not exist.",
"File 'c:/root/node_modules/file4/index.d.ts' does not exist.",
+ "File 'c:/root/node_modules/@types/file4.ts' does not exist.",
+ "File 'c:/root/node_modules/@types/file4.tsx' does not exist.",
+ "File 'c:/root/node_modules/@types/file4.d.ts' does not exist.",
+ "File 'c:/root/node_modules/@types/file4/package.json' does not exist.",
+ "File 'c:/root/node_modules/@types/file4/index.ts' does not exist.",
+ "File 'c:/root/node_modules/@types/file4/index.tsx' does not exist.",
+ "File 'c:/root/node_modules/@types/file4/index.d.ts' does not exist.",
"File 'c:/node_modules/file4.ts' does not exist.",
"File 'c:/node_modules/file4.tsx' does not exist.",
"File 'c:/node_modules/file4.d.ts' does not exist.",
"File 'c:/node_modules/file4/package.json' does not exist.",
"File 'c:/node_modules/file4/index.ts' does not exist.",
"File 'c:/node_modules/file4/index.tsx' does not exist.",
- "File 'c:/node_modules/file4/index.d.ts' exist - use it as a module resolution result.",
+ "File 'c:/node_modules/file4/index.d.ts' exist - use it as a name resolution result.",
"======== Module name 'file4' was successfully resolved to 'c:/node_modules/file4/index.d.ts'. ========"
]
\ No newline at end of file
diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution5_classic.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution5_classic.trace.json
index 099acae2aca..d1709c82dc6 100644
--- a/tests/baselines/reference/pathMappingBasedModuleResolution5_classic.trace.json
+++ b/tests/baselines/reference/pathMappingBasedModuleResolution5_classic.trace.json
@@ -5,7 +5,7 @@
"'paths' option is specified, looking for a pattern to match module name 'folder2/file1'.",
"Module name 'folder2/file1', matched pattern '*'.",
"Trying substitution '*', candidate module location: 'folder2/file1'.",
- "File 'c:/root/folder2/file1.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/folder2/file1.ts' exist - use it as a name resolution result.",
"======== Module name 'folder2/file1' was successfully resolved to 'c:/root/folder2/file1.ts'. ========",
"======== Resolving module 'folder3/file2' from 'c:/root/folder1/file1.ts'. ========",
"Module resolution kind is not specified, using 'Classic'.",
@@ -16,7 +16,7 @@
"File 'c:/root/folder3/file2.ts' does not exist.",
"File 'c:/root/folder3/file2.d.ts' does not exist.",
"Trying substitution 'generated/*', candidate module location: 'generated/folder3/file2'.",
- "File 'c:/root/generated/folder3/file2.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/generated/folder3/file2.ts' exist - use it as a name resolution result.",
"======== Module name 'folder3/file2' was successfully resolved to 'c:/root/generated/folder3/file2.ts'. ========",
"======== Resolving module 'components/file3' from 'c:/root/folder1/file1.ts'. ========",
"Module resolution kind is not specified, using 'Classic'.",
@@ -24,7 +24,7 @@
"'paths' option is specified, looking for a pattern to match module name 'components/file3'.",
"Module name 'components/file3', matched pattern 'components/*'.",
"Trying substitution 'shared/components/*', candidate module location: 'shared/components/file3'.",
- "File 'c:/root/shared/components/file3.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/shared/components/file3.ts' exist - use it as a name resolution result.",
"======== Module name 'components/file3' was successfully resolved to 'c:/root/shared/components/file3.ts'. ========",
"======== Resolving module 'file4' from 'c:/root/folder1/file1.ts'. ========",
"Module resolution kind is not specified, using 'Classic'.",
@@ -41,6 +41,6 @@
"File 'c:/root/folder1/file4.d.ts' does not exist.",
"File 'c:/root/file4.ts' does not exist.",
"File 'c:/root/file4.d.ts' does not exist.",
- "File 'c:/file4.ts' exist - use it as a module resolution result.",
+ "File 'c:/file4.ts' exist - use it as a name resolution result.",
"======== Module name 'file4' was successfully resolved to 'c:/file4.ts'. ========"
]
\ No newline at end of file
diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution5_node.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution5_node.trace.json
index 398d15839de..cebd59f01b4 100644
--- a/tests/baselines/reference/pathMappingBasedModuleResolution5_node.trace.json
+++ b/tests/baselines/reference/pathMappingBasedModuleResolution5_node.trace.json
@@ -6,7 +6,7 @@
"Module name 'folder2/file1', matched pattern '*'.",
"Trying substitution '*', candidate module location: 'folder2/file1'.",
"Loading module as file / folder, candidate module location 'c:/root/folder2/file1'.",
- "File 'c:/root/folder2/file1.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/folder2/file1.ts' exist - use it as a name resolution result.",
"======== Module name 'folder2/file1' was successfully resolved to 'c:/root/folder2/file1.ts'. ========",
"======== Resolving module 'folder3/file2' from 'c:/root/folder1/file1.ts'. ========",
"Module resolution kind is not specified, using 'NodeJs'.",
@@ -24,7 +24,7 @@
"File 'c:/root/folder3/file2/index.d.ts' does not exist.",
"Trying substitution 'generated/*', candidate module location: 'generated/folder3/file2'.",
"Loading module as file / folder, candidate module location 'c:/root/generated/folder3/file2'.",
- "File 'c:/root/generated/folder3/file2.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/generated/folder3/file2.ts' exist - use it as a name resolution result.",
"======== Module name 'folder3/file2' was successfully resolved to 'c:/root/generated/folder3/file2.ts'. ========",
"======== Resolving module 'components/file3' from 'c:/root/folder1/file1.ts'. ========",
"Module resolution kind is not specified, using 'NodeJs'.",
@@ -39,7 +39,7 @@
"File 'c:/root/shared/components/file3/package.json' does not exist.",
"File 'c:/root/shared/components/file3/index.ts' does not exist.",
"File 'c:/root/shared/components/file3/index.tsx' does not exist.",
- "File 'c:/root/shared/components/file3/index.d.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/shared/components/file3/index.d.ts' exist - use it as a name resolution result.",
"======== Module name 'components/file3' was successfully resolved to 'c:/root/shared/components/file3/index.d.ts'. ========",
"======== Resolving module 'file4' from 'c:/root/folder1/file1.ts'. ========",
"Module resolution kind is not specified, using 'NodeJs'.",
@@ -72,6 +72,13 @@
"File 'c:/root/folder1/node_modules/file4/index.ts' does not exist.",
"File 'c:/root/folder1/node_modules/file4/index.tsx' does not exist.",
"File 'c:/root/folder1/node_modules/file4/index.d.ts' does not exist.",
+ "File 'c:/root/folder1/node_modules/@types/file4.ts' does not exist.",
+ "File 'c:/root/folder1/node_modules/@types/file4.tsx' does not exist.",
+ "File 'c:/root/folder1/node_modules/@types/file4.d.ts' does not exist.",
+ "File 'c:/root/folder1/node_modules/@types/file4/package.json' does not exist.",
+ "File 'c:/root/folder1/node_modules/@types/file4/index.ts' does not exist.",
+ "File 'c:/root/folder1/node_modules/@types/file4/index.tsx' does not exist.",
+ "File 'c:/root/folder1/node_modules/@types/file4/index.d.ts' does not exist.",
"File 'c:/root/node_modules/file4.ts' does not exist.",
"File 'c:/root/node_modules/file4.tsx' does not exist.",
"File 'c:/root/node_modules/file4.d.ts' does not exist.",
@@ -79,6 +86,13 @@
"File 'c:/root/node_modules/file4/index.ts' does not exist.",
"File 'c:/root/node_modules/file4/index.tsx' does not exist.",
"File 'c:/root/node_modules/file4/index.d.ts' does not exist.",
- "File 'c:/node_modules/file4.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/node_modules/@types/file4.ts' does not exist.",
+ "File 'c:/root/node_modules/@types/file4.tsx' does not exist.",
+ "File 'c:/root/node_modules/@types/file4.d.ts' does not exist.",
+ "File 'c:/root/node_modules/@types/file4/package.json' does not exist.",
+ "File 'c:/root/node_modules/@types/file4/index.ts' does not exist.",
+ "File 'c:/root/node_modules/@types/file4/index.tsx' does not exist.",
+ "File 'c:/root/node_modules/@types/file4/index.d.ts' does not exist.",
+ "File 'c:/node_modules/file4.ts' exist - use it as a name resolution result.",
"======== Module name 'file4' was successfully resolved to 'c:/node_modules/file4.ts'. ========"
]
\ No newline at end of file
diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution6_classic.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution6_classic.trace.json
index 0493e9c216b..20fc416ccd4 100644
--- a/tests/baselines/reference/pathMappingBasedModuleResolution6_classic.trace.json
+++ b/tests/baselines/reference/pathMappingBasedModuleResolution6_classic.trace.json
@@ -10,7 +10,7 @@
"File 'c:/root/src/project/file3.d.ts' does not exist.",
"Trying other entries in 'rootDirs'",
"Loading 'project/file3' from the root dir 'c:/root/generated/src', candidate location 'c:/root/generated/src/project/file3'",
- "File 'c:/root/generated/src/project/file3.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/generated/src/project/file3.ts' exist - use it as a name resolution result.",
"======== Module name './project/file3' was successfully resolved to 'c:/root/generated/src/project/file3.ts'. ========",
"======== Resolving module '../file2' from 'c:/root/generated/src/project/file3.ts'. ========",
"Module resolution kind is not specified, using 'Classic'.",
@@ -24,6 +24,6 @@
"Trying other entries in 'rootDirs'",
"Loading 'file2' from the root dir 'c:/root/src', candidate location 'c:/root/src/file2'",
"File 'c:/root/src/file2.ts' does not exist.",
- "File 'c:/root/src/file2.d.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/src/file2.d.ts' exist - use it as a name resolution result.",
"======== Module name '../file2' was successfully resolved to 'c:/root/src/file2.d.ts'. ========"
]
\ No newline at end of file
diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution6_node.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution6_node.trace.json
index 4ea2f12a63c..7c5e76a2847 100644
--- a/tests/baselines/reference/pathMappingBasedModuleResolution6_node.trace.json
+++ b/tests/baselines/reference/pathMappingBasedModuleResolution6_node.trace.json
@@ -17,7 +17,7 @@
"Trying other entries in 'rootDirs'",
"Loading 'project/file3' from the root dir 'c:/root/generated/src', candidate location 'c:/root/generated/src/project/file3'",
"Loading module as file / folder, candidate module location 'c:/root/generated/src/project/file3'.",
- "File 'c:/root/generated/src/project/file3.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/generated/src/project/file3.ts' exist - use it as a name resolution result.",
"======== Module name './project/file3' was successfully resolved to 'c:/root/generated/src/project/file3.ts'. ========",
"======== Resolving module '../file2' from 'c:/root/generated/src/project/file3.ts'. ========",
"Module resolution kind is not specified, using 'NodeJs'.",
@@ -43,6 +43,6 @@
"File 'c:/root/src/file2/package.json' does not exist.",
"File 'c:/root/src/file2/index.ts' does not exist.",
"File 'c:/root/src/file2/index.tsx' does not exist.",
- "File 'c:/root/src/file2/index.d.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/src/file2/index.d.ts' exist - use it as a name resolution result.",
"======== Module name '../file2' was successfully resolved to 'c:/root/src/file2/index.d.ts'. ========"
]
\ No newline at end of file
diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution7_classic.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution7_classic.trace.json
index b45cd4754c7..2d72108210e 100644
--- a/tests/baselines/reference/pathMappingBasedModuleResolution7_classic.trace.json
+++ b/tests/baselines/reference/pathMappingBasedModuleResolution7_classic.trace.json
@@ -10,7 +10,7 @@
"File 'c:/root/src/project/file2.d.ts' does not exist.",
"Trying other entries in 'rootDirs'",
"Loading 'project/file2' from the root dir 'c:/root/generated/src', candidate location 'c:/root/generated/src/project/file2'",
- "File 'c:/root/generated/src/project/file2.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/generated/src/project/file2.ts' exist - use it as a name resolution result.",
"======== Module name './project/file2' was successfully resolved to 'c:/root/generated/src/project/file2.ts'. ========",
"======== Resolving module 'module3' from 'c:/root/src/file1.ts'. ========",
"Module resolution kind is not specified, using 'Classic'.",
@@ -28,7 +28,7 @@
"File 'c:/root/module3.ts' does not exist.",
"File 'c:/root/module3.d.ts' does not exist.",
"File 'c:/module3.ts' does not exist.",
- "File 'c:/module3.d.ts' exist - use it as a module resolution result.",
+ "File 'c:/module3.d.ts' exist - use it as a name resolution result.",
"======== Module name 'module3' was successfully resolved to 'c:/module3.d.ts'. ========",
"======== Resolving module 'module1' from 'c:/root/generated/src/project/file2.ts'. ========",
"Module resolution kind is not specified, using 'Classic'.",
@@ -40,7 +40,7 @@
"File 'c:/root/module1.d.ts' does not exist.",
"Trying substitution 'c:/shared/*', candidate module location: 'c:/shared/module1'.",
"File 'c:/shared/module1.ts' does not exist.",
- "File 'c:/shared/module1.d.ts' exist - use it as a module resolution result.",
+ "File 'c:/shared/module1.d.ts' exist - use it as a name resolution result.",
"======== Module name 'module1' was successfully resolved to 'c:/shared/module1.d.ts'. ========",
"======== Resolving module 'templates/module2' from 'c:/root/generated/src/project/file2.ts'. ========",
"Module resolution kind is not specified, using 'Classic'.",
@@ -48,7 +48,7 @@
"'paths' option is specified, looking for a pattern to match module name 'templates/module2'.",
"Module name 'templates/module2', matched pattern 'templates/*'.",
"Trying substitution 'generated/src/templates/*', candidate module location: 'generated/src/templates/module2'.",
- "File 'c:/root/generated/src/templates/module2.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/generated/src/templates/module2.ts' exist - use it as a name resolution result.",
"======== Module name 'templates/module2' was successfully resolved to 'c:/root/generated/src/templates/module2.ts'. ========",
"======== Resolving module '../file3' from 'c:/root/generated/src/project/file2.ts'. ========",
"Module resolution kind is not specified, using 'Classic'.",
@@ -62,6 +62,6 @@
"Trying other entries in 'rootDirs'",
"Loading 'file3' from the root dir 'c:/root/src', candidate location 'c:/root/src/file3'",
"File 'c:/root/src/file3.ts' does not exist.",
- "File 'c:/root/src/file3.d.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/src/file3.d.ts' exist - use it as a name resolution result.",
"======== Module name '../file3' was successfully resolved to 'c:/root/src/file3.d.ts'. ========"
]
\ No newline at end of file
diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution7_node.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution7_node.trace.json
index 39d5c25c92a..99d4bf244db 100644
--- a/tests/baselines/reference/pathMappingBasedModuleResolution7_node.trace.json
+++ b/tests/baselines/reference/pathMappingBasedModuleResolution7_node.trace.json
@@ -17,7 +17,7 @@
"Trying other entries in 'rootDirs'",
"Loading 'project/file2' from the root dir 'c:/root/generated/src', candidate location 'c:/root/generated/src/project/file2'",
"Loading module as file / folder, candidate module location 'c:/root/generated/src/project/file2'.",
- "File 'c:/root/generated/src/project/file2.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/generated/src/project/file2.ts' exist - use it as a name resolution result.",
"======== Module name './project/file2' was successfully resolved to 'c:/root/generated/src/project/file2.ts'. ========",
"======== Resolving module 'module3' from 'c:/root/src/file1.ts'. ========",
"Module resolution kind is not specified, using 'NodeJs'.",
@@ -50,6 +50,13 @@
"File 'c:/root/src/node_modules/module3/index.ts' does not exist.",
"File 'c:/root/src/node_modules/module3/index.tsx' does not exist.",
"File 'c:/root/src/node_modules/module3/index.d.ts' does not exist.",
+ "File 'c:/root/src/node_modules/@types/module3.ts' does not exist.",
+ "File 'c:/root/src/node_modules/@types/module3.tsx' does not exist.",
+ "File 'c:/root/src/node_modules/@types/module3.d.ts' does not exist.",
+ "File 'c:/root/src/node_modules/@types/module3/package.json' does not exist.",
+ "File 'c:/root/src/node_modules/@types/module3/index.ts' does not exist.",
+ "File 'c:/root/src/node_modules/@types/module3/index.tsx' does not exist.",
+ "File 'c:/root/src/node_modules/@types/module3/index.d.ts' does not exist.",
"File 'c:/root/node_modules/module3.ts' does not exist.",
"File 'c:/root/node_modules/module3.tsx' does not exist.",
"File 'c:/root/node_modules/module3.d.ts' does not exist.",
@@ -57,9 +64,16 @@
"File 'c:/root/node_modules/module3/index.ts' does not exist.",
"File 'c:/root/node_modules/module3/index.tsx' does not exist.",
"File 'c:/root/node_modules/module3/index.d.ts' does not exist.",
+ "File 'c:/root/node_modules/@types/module3.ts' does not exist.",
+ "File 'c:/root/node_modules/@types/module3.tsx' does not exist.",
+ "File 'c:/root/node_modules/@types/module3.d.ts' does not exist.",
+ "File 'c:/root/node_modules/@types/module3/package.json' does not exist.",
+ "File 'c:/root/node_modules/@types/module3/index.ts' does not exist.",
+ "File 'c:/root/node_modules/@types/module3/index.tsx' does not exist.",
+ "File 'c:/root/node_modules/@types/module3/index.d.ts' does not exist.",
"File 'c:/node_modules/module3.ts' does not exist.",
"File 'c:/node_modules/module3.tsx' does not exist.",
- "File 'c:/node_modules/module3.d.ts' exist - use it as a module resolution result.",
+ "File 'c:/node_modules/module3.d.ts' exist - use it as a name resolution result.",
"======== Module name 'module3' was successfully resolved to 'c:/node_modules/module3.d.ts'. ========",
"======== Resolving module 'module1' from 'c:/root/generated/src/project/file2.ts'. ========",
"Module resolution kind is not specified, using 'NodeJs'.",
@@ -83,7 +97,7 @@
"File 'c:/shared/module1/package.json' does not exist.",
"File 'c:/shared/module1/index.ts' does not exist.",
"File 'c:/shared/module1/index.tsx' does not exist.",
- "File 'c:/shared/module1/index.d.ts' exist - use it as a module resolution result.",
+ "File 'c:/shared/module1/index.d.ts' exist - use it as a name resolution result.",
"======== Module name 'module1' was successfully resolved to 'c:/shared/module1/index.d.ts'. ========",
"======== Resolving module 'templates/module2' from 'c:/root/generated/src/project/file2.ts'. ========",
"Module resolution kind is not specified, using 'NodeJs'.",
@@ -92,7 +106,7 @@
"Module name 'templates/module2', matched pattern 'templates/*'.",
"Trying substitution 'generated/src/templates/*', candidate module location: 'generated/src/templates/module2'.",
"Loading module as file / folder, candidate module location 'c:/root/generated/src/templates/module2'.",
- "File 'c:/root/generated/src/templates/module2.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/generated/src/templates/module2.ts' exist - use it as a name resolution result.",
"======== Module name 'templates/module2' was successfully resolved to 'c:/root/generated/src/templates/module2.ts'. ========",
"======== Resolving module '../file3' from 'c:/root/generated/src/project/file2.ts'. ========",
"Module resolution kind is not specified, using 'NodeJs'.",
@@ -118,6 +132,6 @@
"File 'c:/root/src/file3/package.json' does not exist.",
"File 'c:/root/src/file3/index.ts' does not exist.",
"File 'c:/root/src/file3/index.tsx' does not exist.",
- "File 'c:/root/src/file3/index.d.ts' exist - use it as a module resolution result.",
+ "File 'c:/root/src/file3/index.d.ts' exist - use it as a name resolution result.",
"======== Module name '../file3' was successfully resolved to 'c:/root/src/file3/index.d.ts'. ========"
]
\ No newline at end of file
diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution1_classic.ts b/tests/cases/compiler/pathMappingBasedModuleResolution1_classic.ts
index 20845a49372..054d6ed8a0b 100644
--- a/tests/cases/compiler/pathMappingBasedModuleResolution1_classic.ts
+++ b/tests/cases/compiler/pathMappingBasedModuleResolution1_classic.ts
@@ -1,5 +1,5 @@
// @module: amd
-// @traceModuleResolution: true
+// @traceResolution: true
// paths should error in the absence of baseurl
diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution1_node.ts b/tests/cases/compiler/pathMappingBasedModuleResolution1_node.ts
index 392e85bd7c3..a0ce95f2c1a 100644
--- a/tests/cases/compiler/pathMappingBasedModuleResolution1_node.ts
+++ b/tests/cases/compiler/pathMappingBasedModuleResolution1_node.ts
@@ -1,5 +1,5 @@
// @module: commonjs
-// @traceModuleResolution: true
+// @traceResolution: true
// paths should error in the absence of baseurl
// @filename: c:/root/tsconfig.json
diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution2_classic.ts b/tests/cases/compiler/pathMappingBasedModuleResolution2_classic.ts
index 6c84a197eeb..f24e857fa41 100644
--- a/tests/cases/compiler/pathMappingBasedModuleResolution2_classic.ts
+++ b/tests/cases/compiler/pathMappingBasedModuleResolution2_classic.ts
@@ -1,5 +1,5 @@
// @module: amd
-// @traceModuleResolution: true
+// @traceResolution: true
// baseurl is defined in tsconfig.json
// paths has errors
diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution2_node.ts b/tests/cases/compiler/pathMappingBasedModuleResolution2_node.ts
index 78ef7215e73..ac4d51bacf5 100644
--- a/tests/cases/compiler/pathMappingBasedModuleResolution2_node.ts
+++ b/tests/cases/compiler/pathMappingBasedModuleResolution2_node.ts
@@ -1,5 +1,5 @@
// @module: commonjs
-// @traceModuleResolution: true
+// @traceResolution: true
// baseurl is defined in tsconfig.json
// paths has errors
diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution3_classic.ts b/tests/cases/compiler/pathMappingBasedModuleResolution3_classic.ts
index d46308d089f..350346adebc 100644
--- a/tests/cases/compiler/pathMappingBasedModuleResolution3_classic.ts
+++ b/tests/cases/compiler/pathMappingBasedModuleResolution3_classic.ts
@@ -1,7 +1,7 @@
// @moduleResolution: classic
// @module: amd
// @baseUrl: c:/root
-// @traceModuleResolution: true
+// @traceResolution: true
// baseUrl set via command line
diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution3_node.ts b/tests/cases/compiler/pathMappingBasedModuleResolution3_node.ts
index 30e95c9303e..6cab1df06b0 100644
--- a/tests/cases/compiler/pathMappingBasedModuleResolution3_node.ts
+++ b/tests/cases/compiler/pathMappingBasedModuleResolution3_node.ts
@@ -1,7 +1,7 @@
// @moduleResolution: node
// @module: commonjs
// @baseUrl: c:/root
-// @traceModuleResolution: true
+// @traceResolution: true
// baseUrl set via command line
diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution4_classic.ts b/tests/cases/compiler/pathMappingBasedModuleResolution4_classic.ts
index 723de05b70c..fbf11e61716 100644
--- a/tests/cases/compiler/pathMappingBasedModuleResolution4_classic.ts
+++ b/tests/cases/compiler/pathMappingBasedModuleResolution4_classic.ts
@@ -1,6 +1,6 @@
// @moduleResolution: classic
// @module: amd
-// @traceModuleResolution: true
+// @traceResolution: true
// baseUrl set via command line
diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution4_node.ts b/tests/cases/compiler/pathMappingBasedModuleResolution4_node.ts
index e68635e205e..cfb90ca1cc5 100644
--- a/tests/cases/compiler/pathMappingBasedModuleResolution4_node.ts
+++ b/tests/cases/compiler/pathMappingBasedModuleResolution4_node.ts
@@ -1,6 +1,6 @@
// @moduleResolution: node
// @module: commonjs
-// @traceModuleResolution: true
+// @traceResolution: true
// baseUrl set via command line
diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution5_classic.ts b/tests/cases/compiler/pathMappingBasedModuleResolution5_classic.ts
index a7662688e37..9779f0ca644 100644
--- a/tests/cases/compiler/pathMappingBasedModuleResolution5_classic.ts
+++ b/tests/cases/compiler/pathMappingBasedModuleResolution5_classic.ts
@@ -1,5 +1,5 @@
// @module: amd
-// @traceModuleResolution: true
+// @traceResolution: true
// paths is defined in tsconfig.json
// @filename: c:/root/tsconfig.json
diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution5_node.ts b/tests/cases/compiler/pathMappingBasedModuleResolution5_node.ts
index ef5ef0afd6a..3606ab08cd1 100644
--- a/tests/cases/compiler/pathMappingBasedModuleResolution5_node.ts
+++ b/tests/cases/compiler/pathMappingBasedModuleResolution5_node.ts
@@ -1,5 +1,5 @@
// @module: commonjs
-// @traceModuleResolution: true
+// @traceResolution: true
// paths is defined in tsconfig.json
// @filename: c:/root/tsconfig.json
diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution6_classic.ts b/tests/cases/compiler/pathMappingBasedModuleResolution6_classic.ts
index adaba8478c9..5ce4bd2a18f 100644
--- a/tests/cases/compiler/pathMappingBasedModuleResolution6_classic.ts
+++ b/tests/cases/compiler/pathMappingBasedModuleResolution6_classic.ts
@@ -1,5 +1,5 @@
// @module: amd
-// @traceModuleResolution: true
+// @traceResolution: true
// @filename: c:/root/src/tsconfig.json
{
diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution6_node.ts b/tests/cases/compiler/pathMappingBasedModuleResolution6_node.ts
index a3d0feadf7c..29a82e5412d 100644
--- a/tests/cases/compiler/pathMappingBasedModuleResolution6_node.ts
+++ b/tests/cases/compiler/pathMappingBasedModuleResolution6_node.ts
@@ -1,5 +1,5 @@
// @module: commonjs
-// @traceModuleResolution: true
+// @traceResolution: true
// @filename: c:/root/src/tsconfig.json
{
diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution7_classic.ts b/tests/cases/compiler/pathMappingBasedModuleResolution7_classic.ts
index af092df5ce9..81c2328df67 100644
--- a/tests/cases/compiler/pathMappingBasedModuleResolution7_classic.ts
+++ b/tests/cases/compiler/pathMappingBasedModuleResolution7_classic.ts
@@ -1,5 +1,5 @@
// @module: amd
-// @traceModuleResolution: true
+// @traceResolution: true
// @filename: c:/root/src/tsconfig.json
{
diff --git a/tests/cases/compiler/pathMappingBasedModuleResolution7_node.ts b/tests/cases/compiler/pathMappingBasedModuleResolution7_node.ts
index faecbe4adb9..1ba9630e0cf 100644
--- a/tests/cases/compiler/pathMappingBasedModuleResolution7_node.ts
+++ b/tests/cases/compiler/pathMappingBasedModuleResolution7_node.ts
@@ -1,5 +1,5 @@
// @module: commonjs
-// @traceModuleResolution: true
+// @traceResolution: true
// @filename: c:/root/src/tsconfig.json
{
diff --git a/tests/cases/conformance/references/library-reference-1.ts b/tests/cases/conformance/references/library-reference-1.ts
index 76e33ee72cf..74c748043b5 100644
--- a/tests/cases/conformance/references/library-reference-1.ts
+++ b/tests/cases/conformance/references/library-reference-1.ts
@@ -1,11 +1,12 @@
// @noImplicitReferences: true
+// @traceResolution: true
-// We can find typings in the ./typings folder
+// We can find typings in the ./types folder
-// @filename: typings/jquery/index.d.ts
+// @filename: /types/jquery/index.d.ts
declare var $: { foo(): void };
-// @filename: consumer.ts
-///
+// @filename: /consumer.ts
+///
$.foo();
diff --git a/tests/cases/conformance/references/library-reference-10.ts b/tests/cases/conformance/references/library-reference-10.ts
new file mode 100644
index 00000000000..fcacbd556ac
--- /dev/null
+++ b/tests/cases/conformance/references/library-reference-10.ts
@@ -0,0 +1,17 @@
+// @noImplicitReferences: true
+// @traceResolution: true
+
+// package.json in a primary reference can refer to another file
+
+// @filename: /types/jquery/package.json
+{
+ "typings": "jquery.d.ts"
+}
+
+// @filename: /types/jquery/jquery.d.ts
+declare var $: { foo(): void };
+
+
+// @filename: /consumer.ts
+///
+$.foo();
diff --git a/tests/cases/conformance/references/library-reference-11.ts b/tests/cases/conformance/references/library-reference-11.ts
new file mode 100644
index 00000000000..39c8af56543
--- /dev/null
+++ b/tests/cases/conformance/references/library-reference-11.ts
@@ -0,0 +1,17 @@
+// @noImplicitReferences: true
+// @traceResolution: true
+
+// package.json in a secondary reference can refer to another file
+
+// @filename: /a/node_modules/jquery/package.json
+{
+ "typings": "jquery.d.ts"
+}
+
+// @filename: /a/node_modules/jquery/jquery.d.ts
+declare var $: { foo(): void };
+
+
+// @filename: /a/b/consumer.ts
+///
+$.foo();
diff --git a/tests/cases/conformance/references/library-reference-12.ts b/tests/cases/conformance/references/library-reference-12.ts
new file mode 100644
index 00000000000..c61d6d916ff
--- /dev/null
+++ b/tests/cases/conformance/references/library-reference-12.ts
@@ -0,0 +1,17 @@
+// @noImplicitReferences: true
+// @traceResolution: true
+
+// package.json in a secondary reference can refer to another file
+
+// @filename: /a/node_modules/jquery/package.json
+{
+ "types": "dist/jquery.d.ts"
+}
+
+// @filename: /a/node_modules/jquery/dist/jquery.d.ts
+declare var $: { foo(): void };
+
+
+// @filename: /a/b/consumer.ts
+///
+$.foo();
diff --git a/tests/cases/conformance/references/library-reference-2.ts b/tests/cases/conformance/references/library-reference-2.ts
index aa128290ad4..d0882272a08 100644
--- a/tests/cases/conformance/references/library-reference-2.ts
+++ b/tests/cases/conformance/references/library-reference-2.ts
@@ -1,16 +1,17 @@
// @noImplicitReferences: true
+// @traceResolution: true
// package.json in a primary reference can refer to another file
-// @filename: typings/jquery/package.json
+// @filename: /types/jquery/package.json
{
- "typings": "jquery.d.ts"
+ "types": "jquery.d.ts"
}
-// @filename: typings/jquery/jquery.d.ts
+// @filename: /types/jquery/jquery.d.ts
declare var $: { foo(): void };
-// @filename: consumer.ts
-///
+// @filename: /consumer.ts
+///
$.foo();
diff --git a/tests/cases/conformance/references/library-reference-3.ts b/tests/cases/conformance/references/library-reference-3.ts
index 6e1fa61abb3..64b1c8ddda8 100644
--- a/tests/cases/conformance/references/library-reference-3.ts
+++ b/tests/cases/conformance/references/library-reference-3.ts
@@ -1,10 +1,12 @@
// @noImplicitReferences: true
+// @traceResolution: true
+// @traceResolution: true
// Secondary references are possible
-// @filename: src/node_modules/jquery/index.d.ts
+// @filename: /src/node_modules/jquery/index.d.ts
declare var $: { foo(): void };
-// @filename: src/consumer.ts
-///
+// @filename: /src/consumer.ts
+///
$.foo();
diff --git a/tests/cases/conformance/references/library-reference-4.ts b/tests/cases/conformance/references/library-reference-4.ts
index 2aaac5da78e..a0ba4bff890 100644
--- a/tests/cases/conformance/references/library-reference-4.ts
+++ b/tests/cases/conformance/references/library-reference-4.ts
@@ -1,21 +1,22 @@
// @noImplicitReferences: true
+// @traceResolution: true
// Secondary references may be duplicated if they agree in content
-// @filename: node_modules/foo/index.d.ts
-///
+// @filename: /node_modules/foo/index.d.ts
+///
declare var foo: any;
-// @filename: node_modules/foo/node_modules/alpha/index.d.ts
+// @filename: /node_modules/foo/node_modules/alpha/index.d.ts
declare var alpha: any;
-// @filename: node_modules/bar/index.d.ts
-///
+// @filename: /node_modules/bar/index.d.ts
+///
declare var bar: any;
-// @filename: node_modules/bar/node_modules/alpha/index.d.ts
+// @filename: /node_modules/bar/node_modules/alpha/index.d.ts
declare var alpha: any;
-// @filename: src/root.ts
-///
-///
+// @filename: /src/root.ts
+///
+///
diff --git a/tests/cases/conformance/references/library-reference-5.ts b/tests/cases/conformance/references/library-reference-5.ts
index e6f4049b27c..4660da00a2a 100644
--- a/tests/cases/conformance/references/library-reference-5.ts
+++ b/tests/cases/conformance/references/library-reference-5.ts
@@ -1,21 +1,22 @@
// @noImplicitReferences: true
+// @traceResolution: true
// Secondary references may not be duplicated if they disagree in content
-// @filename: node_modules/foo/index.d.ts
-///
+// @filename: /node_modules/foo/index.d.ts
+///
declare var foo: any;
-// @filename: node_modules/foo/node_modules/alpha/index.d.ts
+// @filename: /node_modules/foo/node_modules/alpha/index.d.ts
declare var alpha: any;
-// @filename: node_modules/bar/index.d.ts
-///
+// @filename: /node_modules/bar/index.d.ts
+///
declare var bar: any;
-// @filename: node_modules/bar/node_modules/alpha/index.d.ts
+// @filename: /node_modules/bar/node_modules/alpha/index.d.ts
declare var alpha: {};
-// @filename: src/root.ts
-///
-///
+// @filename: /src/root.ts
+///
+///
diff --git a/tests/cases/conformance/references/library-reference-6.ts b/tests/cases/conformance/references/library-reference-6.ts
index 7c8ffc812b1..a746262dd73 100644
--- a/tests/cases/conformance/references/library-reference-6.ts
+++ b/tests/cases/conformance/references/library-reference-6.ts
@@ -1,14 +1,15 @@
// @noImplicitReferences: true
+// @traceResolution: true
// The primary lookup folder is relative to tsconfig.json, if present
-// @filename: typings/alpha/index.d.ts
+// @filename: /types/alpha/index.d.ts
declare var alpha: { a: string };
-// @filename: src/foo.ts
-///
+// @filename: /src/foo.ts
+///
var x: string = alpha.a;
-// @filename: tsconfig.json
+// @filename: /tsconfig.json
{
}
diff --git a/tests/cases/conformance/references/library-reference-7.ts b/tests/cases/conformance/references/library-reference-7.ts
index 10b6c365c8c..9d400604a63 100644
--- a/tests/cases/conformance/references/library-reference-7.ts
+++ b/tests/cases/conformance/references/library-reference-7.ts
@@ -1,17 +1,18 @@
// @noImplicitReferences: true
+// @traceResolution: true
// The primary lookup folder is relative to tsconfig.json's 'root', if present
-// @filename: base/typings/alpha/index.d.ts
+// @filename: /base/types/alpha/index.d.ts
declare var alpha: { a: string };
-// @filename: base/src/foo.ts
-///
+// @filename: /base/src/foo.ts
+///
var x: string = alpha.a;
-// @filename: tsconfig.json
+// @filename: /tsconfig.json
{
- "compilerOptions": {
- "rootDir": "base"
- }
+ "compilerOptions": {
+ "rootDir": "base"
+ }
}
diff --git a/tests/cases/conformance/references/library-reference-8.ts b/tests/cases/conformance/references/library-reference-8.ts
index 36f9f129caa..112ec18e446 100644
--- a/tests/cases/conformance/references/library-reference-8.ts
+++ b/tests/cases/conformance/references/library-reference-8.ts
@@ -1,17 +1,18 @@
// @noImplicitReferences: true
+// @traceResolution: true
// Don't crash in circular library reference situations
-// @filename: typings/alpha/index.d.ts
-///
+// @filename: /types/alpha/index.d.ts
+///
declare var alpha: { a: string };
-// @filename: typings/beta/index.d.ts
-///
+// @filename: /types/beta/index.d.ts
+///
declare var beta: { b: string };
-// @filename: foo.ts
-///
-///
+// @filename: /foo.ts
+///
+///
var x: string = alpha.a + beta.b;
diff --git a/tests/cases/conformance/references/library-reference-9.ts b/tests/cases/conformance/references/library-reference-9.ts
new file mode 100644
index 00000000000..a187d3c23b9
--- /dev/null
+++ b/tests/cases/conformance/references/library-reference-9.ts
@@ -0,0 +1,20 @@
+// @noImplicitReferences: true
+// @traceResolution: true
+
+// Use types search path
+
+// @filename: /share/typelib/alpha/index.d.ts
+declare var alpha: { a: string };
+
+// @filename: /base/src/foo.ts
+///
+var x: string = alpha.a;
+
+// @filename: /tsconfig.json
+{
+ "compilerOptions": {
+ "typesSearchPaths": [
+ "./share/typelib"
+ ]
+ }
+}
diff --git a/tests/cases/fourslash/goToDefinitionTypeReferenceDirective.ts b/tests/cases/fourslash/goToDefinitionTypeReferenceDirective.ts
new file mode 100644
index 00000000000..6d2fdc0112d
--- /dev/null
+++ b/tests/cases/fourslash/goToDefinitionTypeReferenceDirective.ts
@@ -0,0 +1,12 @@
+///
+
+// @Filename: src/types/lib/index.d.ts
+/////*0*/declare let $: {x: number};
+
+// @Filename: src/app.ts
+//// ///
+//// $.x;
+
+goTo.marker("1");
+goTo.definition();
+verify.caretAtMarker("0");
\ No newline at end of file
diff --git a/tests/cases/fourslash/shims-pp/goToDefinitionTypeReferenceDirective.ts b/tests/cases/fourslash/shims-pp/goToDefinitionTypeReferenceDirective.ts
new file mode 100644
index 00000000000..6d2fdc0112d
--- /dev/null
+++ b/tests/cases/fourslash/shims-pp/goToDefinitionTypeReferenceDirective.ts
@@ -0,0 +1,12 @@
+///
+
+// @Filename: src/types/lib/index.d.ts
+/////*0*/declare let $: {x: number};
+
+// @Filename: src/app.ts
+//// ///
+//// $.x;
+
+goTo.marker("1");
+goTo.definition();
+verify.caretAtMarker("0");
\ No newline at end of file
diff --git a/tests/cases/fourslash/shims/goToDefinitionTypeReferenceDirective.ts b/tests/cases/fourslash/shims/goToDefinitionTypeReferenceDirective.ts
new file mode 100644
index 00000000000..6d2fdc0112d
--- /dev/null
+++ b/tests/cases/fourslash/shims/goToDefinitionTypeReferenceDirective.ts
@@ -0,0 +1,12 @@
+///
+
+// @Filename: src/types/lib/index.d.ts
+/////*0*/declare let $: {x: number};
+
+// @Filename: src/app.ts
+//// ///
+//// $.x;
+
+goTo.marker("1");
+goTo.definition();
+verify.caretAtMarker("0");
\ No newline at end of file
diff --git a/tests/cases/unittests/convertToBase64.ts b/tests/cases/unittests/convertToBase64.ts
index 76f56f77477..c73d7531c40 100644
--- a/tests/cases/unittests/convertToBase64.ts
+++ b/tests/cases/unittests/convertToBase64.ts
@@ -8,26 +8,28 @@ module ts {
assert.equal(actual, expected, "Encoded string using convertToBase64 does not match buffer.toString('base64')");
}
- it("Converts ASCII charaters correctly", () => {
- runTest(" !\"#$ %&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~");
- });
+ if (Buffer) {
+ it("Converts ASCII charaters correctly", () => {
+ runTest(" !\"#$ %&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~");
+ });
- it("Converts escape sequences correctly", () => {
- runTest("\t\n\r\\\"\'\u0062");
- });
+ it("Converts escape sequences correctly", () => {
+ runTest("\t\n\r\\\"\'\u0062");
+ });
- it("Converts simple unicode characters correctly", () => {
- runTest("ΠΣ ٵپ औठ ⺐⺠");
- });
+ it("Converts simple unicode characters correctly", () => {
+ runTest("ΠΣ ٵپ औठ ⺐⺠");
+ });
- it("Converts simple code snippet correctly", () => {
- runTest(`///
+ it("Converts simple code snippet correctly", () => {
+ runTest(`///
var x: string = "string";
console.log(x);`);
- });
+ });
- it("Converts simple code snippet with unicode characters correctly", () => {
- runTest(`var Π = 3.1415; console.log(Π);`);
- });
+ it("Converts simple code snippet with unicode characters correctly", () => {
+ runTest(`var Π = 3.1415; console.log(Π);`);
+ });
+ }
});
}
diff --git a/tests/cases/unittests/moduleResolution.ts b/tests/cases/unittests/moduleResolution.ts
index 9a52d9896e4..e9677313409 100644
--- a/tests/cases/unittests/moduleResolution.ts
+++ b/tests/cases/unittests/moduleResolution.ts
@@ -204,6 +204,13 @@ module ts {
"/a/b/c/d/node_modules/foo/index.ts",
"/a/b/c/d/node_modules/foo/index.tsx",
"/a/b/c/d/node_modules/foo/index.d.ts",
+ "/a/b/c/d/node_modules/@types/foo.ts",
+ "/a/b/c/d/node_modules/@types/foo.tsx",
+ "/a/b/c/d/node_modules/@types/foo.d.ts",
+ "/a/b/c/d/node_modules/@types/foo/package.json",
+ "/a/b/c/d/node_modules/@types/foo/index.ts",
+ "/a/b/c/d/node_modules/@types/foo/index.tsx",
+ "/a/b/c/d/node_modules/@types/foo/index.d.ts",
"/a/b/c/node_modules/foo.ts",
"/a/b/c/node_modules/foo.tsx",
"/a/b/c/node_modules/foo.d.ts",
@@ -211,6 +218,13 @@ module ts {
"/a/b/c/node_modules/foo/index.ts",
"/a/b/c/node_modules/foo/index.tsx",
"/a/b/c/node_modules/foo/index.d.ts",
+ "/a/b/c/node_modules/@types/foo.ts",
+ "/a/b/c/node_modules/@types/foo.tsx",
+ "/a/b/c/node_modules/@types/foo.d.ts",
+ "/a/b/c/node_modules/@types/foo/package.json",
+ "/a/b/c/node_modules/@types/foo/index.ts",
+ "/a/b/c/node_modules/@types/foo/index.tsx",
+ "/a/b/c/node_modules/@types/foo/index.d.ts",
])
}
});
@@ -246,6 +260,13 @@ module ts {
"/a/node_modules/b/c/node_modules/d/node_modules/foo/index.ts",
"/a/node_modules/b/c/node_modules/d/node_modules/foo/index.tsx",
"/a/node_modules/b/c/node_modules/d/node_modules/foo/index.d.ts",
+ "/a/node_modules/b/c/node_modules/d/node_modules/@types/foo.ts",
+ "/a/node_modules/b/c/node_modules/d/node_modules/@types/foo.tsx",
+ "/a/node_modules/b/c/node_modules/d/node_modules/@types/foo.d.ts",
+ "/a/node_modules/b/c/node_modules/d/node_modules/@types/foo/package.json",
+ "/a/node_modules/b/c/node_modules/d/node_modules/@types/foo/index.ts",
+ "/a/node_modules/b/c/node_modules/d/node_modules/@types/foo/index.tsx",
+ "/a/node_modules/b/c/node_modules/d/node_modules/@types/foo/index.d.ts",
"/a/node_modules/b/c/node_modules/foo.ts",
"/a/node_modules/b/c/node_modules/foo.tsx",
"/a/node_modules/b/c/node_modules/foo.d.ts",
@@ -253,6 +274,13 @@ module ts {
"/a/node_modules/b/c/node_modules/foo/index.ts",
"/a/node_modules/b/c/node_modules/foo/index.tsx",
"/a/node_modules/b/c/node_modules/foo/index.d.ts",
+ "/a/node_modules/b/c/node_modules/@types/foo.ts",
+ "/a/node_modules/b/c/node_modules/@types/foo.tsx",
+ "/a/node_modules/b/c/node_modules/@types/foo.d.ts",
+ "/a/node_modules/b/c/node_modules/@types/foo/package.json",
+ "/a/node_modules/b/c/node_modules/@types/foo/index.ts",
+ "/a/node_modules/b/c/node_modules/@types/foo/index.tsx",
+ "/a/node_modules/b/c/node_modules/@types/foo/index.d.ts",
"/a/node_modules/b/node_modules/foo.ts",
"/a/node_modules/b/node_modules/foo.tsx",
"/a/node_modules/b/node_modules/foo.d.ts",
@@ -260,6 +288,13 @@ module ts {
"/a/node_modules/b/node_modules/foo/index.ts",
"/a/node_modules/b/node_modules/foo/index.tsx",
"/a/node_modules/b/node_modules/foo/index.d.ts",
+ "/a/node_modules/b/node_modules/@types/foo.ts",
+ "/a/node_modules/b/node_modules/@types/foo.tsx",
+ "/a/node_modules/b/node_modules/@types/foo.d.ts",
+ "/a/node_modules/b/node_modules/@types/foo/package.json",
+ "/a/node_modules/b/node_modules/@types/foo/index.ts",
+ "/a/node_modules/b/node_modules/@types/foo/index.tsx",
+ "/a/node_modules/b/node_modules/@types/foo/index.d.ts",
"/a/node_modules/foo.ts",
"/a/node_modules/foo.tsx",
"/a/node_modules/foo.d.ts",
@@ -267,7 +302,6 @@ module ts {
"/a/node_modules/foo/index.ts",
"/a/node_modules/foo/index.tsx"
]);
-
}
});
});
@@ -664,6 +698,13 @@ import b = require("./moduleB.ts");
"/root/folder1/node_modules/file6/index.ts",
"/root/folder1/node_modules/file6/index.tsx",
"/root/folder1/node_modules/file6/index.d.ts",
+ "/root/folder1/node_modules/@types/file6.ts",
+ "/root/folder1/node_modules/@types/file6.tsx",
+ "/root/folder1/node_modules/@types/file6.d.ts",
+ "/root/folder1/node_modules/@types/file6/package.json",
+ "/root/folder1/node_modules/@types/file6/index.ts",
+ "/root/folder1/node_modules/@types/file6/index.tsx",
+ "/root/folder1/node_modules/@types/file6/index.d.ts"
// success on /root/node_modules/file6.ts
]);
@@ -913,4 +954,119 @@ import b = require("./moduleB.ts");
assert(!result.resolvedModule);
});
});
+
+ describe("Type reference directive resolution: ", () => {
+ function test(compilationRoot: string, typeDirective: string, primary: boolean, initialFile: File, targetFile: File, ...otherFiles: File[]) {
+ const host = createModuleResolutionHost(false, ...[initialFile, targetFile].concat(...otherFiles));
+ const result = resolveTypeReferenceDirective(typeDirective, initialFile.name, compilationRoot, {}, host);
+ assert(result.resolvedTypeReferenceDirective.resolvedFileName !== undefined, "expected type directive to be resolved");
+ assert.equal(result.resolvedTypeReferenceDirective.resolvedFileName, targetFile.name, "unexpected result of type reference resolution");
+ assert.equal(result.resolvedTypeReferenceDirective.primary, primary, "unexpected 'primary' value");
+ }
+
+ it("Can be resolved from primary location", () => {
+ {
+ const f1 = { name: "/root/src/app.ts" }
+ const f2 = { name: "/root/src/types/lib/index.d.ts" };
+ test(/*libraryRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ true, f1, f2);
+ }
+ {
+ const f1 = { name: "/root/src/app.ts" }
+ const f2 = { name: "/root/src/types/lib/typings/lib.d.ts" };
+ const package = { name: "/root/src/types/lib/package.json", content: JSON.stringify({types: "typings/lib.d.ts"}) };
+ test(/*libraryRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ true, f1, f2, package);
+ }
+ {
+ const f1 = { name: "/root/src/app.ts" }
+ const f2 = { name: "/root/src/node_modules/lib/index.d.ts" };
+ test(/*libraryRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ true, f1, f2);
+ }
+ {
+ const f1 = { name: "/root/src/app.ts" }
+ const f2 = { name: "/root/src/node_modules/lib/typings/lib.d.ts" };
+ const package = { name: "/root/src/node_modules/lib/package.json", content: JSON.stringify({types: "typings/lib.d.ts"}) };
+ test(/*libraryRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ true, f1, f2, package);
+ }
+ {
+ const f1 = { name: "/root/src/app.ts" }
+ const f2 = { name: "/root/src/node_modules/@types/lib/index.d.ts" };
+ test(/*libraryRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ true, f1, f2);
+ }
+ {
+ const f1 = { name: "/root/src/app.ts" }
+ const f2 = { name: "/root/src/node_modules/@types/lib/typings/lib.d.ts" };
+ const package = { name: "/root/src/node_modules/@types/lib/package.json", content: JSON.stringify({types: "typings/lib.d.ts"}) };
+ test(/*libraryRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ true, f1, f2, package);
+ }
+ });
+ it("Can be resolved from secondary location", () => {
+ {
+ const f1 = { name: "/root/src/app.ts" }
+ const f2 = { name: "/root/node_modules/lib.d.ts" };
+ test(/*libraryRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ false, f1, f2);
+ }
+ {
+ const f1 = { name: "/root/src/app.ts" }
+ const f2 = { name: "/root/node_modules/lib/index.d.ts" };
+ test(/*libraryRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ false, f1, f2);
+ }
+ {
+ const f1 = { name: "/root/src/app.ts" }
+ const f2 = { name: "/root/node_modules/lib/typings/lib.d.ts" };
+ const package = { name: "/root/node_modules/lib/package.json", content: JSON.stringify({typings: "typings/lib.d.ts"}) };
+ test(/*libraryRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ false, f1, f2, package);
+ }
+ {
+ const f1 = { name: "/root/src/app.ts" }
+ const f2 = { name: "/root/node_modules/@types/lib/index.d.ts" };
+ test(/*libraryRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ false, f1, f2);
+ }
+ {
+ const f1 = { name: "/root/src/app.ts" }
+ const f2 = { name: "/root/node_modules/@types/lib/typings/lib.d.ts" };
+ const package = { name: "/root/node_modules/@types/lib/package.json", content: JSON.stringify({typings: "typings/lib.d.ts"}) };
+ test(/*libraryRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ false, f1, f2, package);
+ }
+ });
+ it("Primary resolution overrides secondary resolutions", () => {
+ {
+ const f1 = { name: "/root/src/a/b/c/app.ts" };
+ const f2 = { name: "/root/src/types/lib/index.d.ts" };
+ const f3 = { name: "/root/src/a/b/node_modules/lib.d.ts" }
+ test(/*libraryRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ true, f1, f2, f3);
+ }
+ })
+ it("Reused program keeps errors", () => {
+ const f1 = { name: "/root/src/a/b/c/d/e/app.ts", content: `/// ` };
+ const f2 = { name: "/root/src/a/b/c/d/node_modules/lib/index.d.ts", content: `declare var x: number;` };
+ const f3 = { name: "/root/src/a/b/c/d/f/g/app.ts", content: `/// ` };
+ const f4 = { name: "/root/src/a/b/c/d/f/node_modules/lib/index.d.ts", content: `declare var x: number;` };
+ const files = [f1, f2, f3, f4];
+
+ const names = map(files, f => f.name);
+ const sourceFiles = arrayToMap(map(files, f => createSourceFile(f.name, f.content, ScriptTarget.ES6)), f => f.fileName);
+ const compilerHost: CompilerHost = {
+ fileExists : fileName => hasProperty(sourceFiles, fileName),
+ getSourceFile: fileName => sourceFiles[fileName],
+ getDefaultLibFileName: () => "lib.d.ts",
+ writeFile(file, text) {
+ throw new Error("NYI");
+ },
+ getCurrentDirectory: () => "/",
+ getCanonicalFileName: f => f.toLowerCase(),
+ getNewLine: () => "\r\n",
+ useCaseSensitiveFileNames: () => false,
+ readFile: fileName => hasProperty(sourceFiles, fileName) ? sourceFiles[fileName].text : undefined
+ };
+ const program1 = createProgram(names, {}, compilerHost);
+ const diagnostics1 = program1.getFileProcessingDiagnostics().getDiagnostics();
+ assert.equal(diagnostics1.length, 1, "expected one diagnostic");
+
+ const program2 = createProgram(names, {}, compilerHost, program1);
+ assert.isTrue(program1.structureIsReused);
+ const diagnostics2 = program1.getFileProcessingDiagnostics().getDiagnostics();
+ assert.equal(diagnostics2.length, 1, "expected one diagnostic");
+ assert.equal(diagnostics1[0].messageText, diagnostics2[0].messageText, "expected one diagnostic");
+ })
+ });
}
\ No newline at end of file
diff --git a/tests/cases/unittests/reuseProgramStructure.ts b/tests/cases/unittests/reuseProgramStructure.ts
index 5f313eeae2b..4b85e2fa827 100644
--- a/tests/cases/unittests/reuseProgramStructure.ts
+++ b/tests/cases/unittests/reuseProgramStructure.ts
@@ -118,13 +118,13 @@ module ts {
return "";
},
getCanonicalFileName(fileName): string {
- return sys.useCaseSensitiveFileNames ? fileName : fileName.toLowerCase();
+ return sys && sys.useCaseSensitiveFileNames ? fileName : fileName.toLowerCase();
},
useCaseSensitiveFileNames(): boolean {
- return sys.useCaseSensitiveFileNames;
+ return sys && sys.useCaseSensitiveFileNames;
},
getNewLine(): string {
- return sys.newLine;
+ return sys ? sys.newLine : newLine;
},
fileExists: fileName => hasProperty(files, fileName),
readFile: fileName => {
@@ -160,36 +160,55 @@ module ts {
return size;
}
- function checkResolvedModulesCache(program: Program, fileName: string, expectedContent: Map): void {
+ function checkResolvedModule(expected: ResolvedModule, actual: ResolvedModule): void {
+ assert.isTrue(actual !== undefined);
+ assert.isTrue(expected.resolvedFileName === actual.resolvedFileName, `'resolvedFileName': expected '${expected.resolvedFileName}' to be equal to '${actual.resolvedFileName}'`);
+ assert.isTrue(expected.isExternalLibraryImport === actual.isExternalLibraryImport, `'isExternalLibraryImport': expected '${expected.isExternalLibraryImport}' to be equal to '${actual.isExternalLibraryImport}'`);
+ }
+
+ function checkResolvedTypeDirective(expected: ResolvedTypeReferenceDirective, actual: ResolvedTypeReferenceDirective): void {
+ assert.isTrue(actual !== undefined);
+ assert.isTrue(expected.resolvedFileName === actual.resolvedFileName, `'resolvedFileName': expected '${expected.resolvedFileName}' to be equal to '${actual.resolvedFileName}'`);
+ assert.isTrue(expected.primary === actual.primary, `'primary': expected '${expected.primary}' to be equal to '${actual.primary}'`);
+ }
+
+ function checkCache(caption: string, program: Program, fileName: string, expectedContent: Map, getCache: (f: SourceFile) => Map, entryChecker: (expected: T, original:T) => void): void {
let file = program.getSourceFile(fileName);
assert.isTrue(file !== undefined, `cannot find file ${fileName}`);
+ const cache = getCache(file)
if (expectedContent === undefined) {
- assert.isTrue(file.resolvedModules === undefined, "expected resolvedModules to be undefined");
+ assert.isTrue(cache === undefined, `expected ${caption} to be undefined`);
}
else {
- assert.isTrue(file.resolvedModules !== undefined, "expected resolvedModuled to be set");
- let actualCacheSize = getSizeOfMap(file.resolvedModules);
+ assert.isTrue(cache !== undefined, `expected ${caption} to be set`);
+ let actualCacheSize = getSizeOfMap(cache);
let expectedSize = getSizeOfMap(expectedContent);
assert.isTrue(actualCacheSize === expectedSize, `expected actual size: ${actualCacheSize} to be equal to ${expectedSize}`);
for (let id in expectedContent) {
if (hasProperty(expectedContent, id)) {
- assert.isTrue(hasProperty(file.resolvedModules, id), `expected ${id} to be found in resolved modules`);
+
if (expectedContent[id]) {
const expected = expectedContent[id];
- const actual = file.resolvedModules[id];
- assert.isTrue(actual !== undefined);
- assert.isTrue(expected.resolvedFileName === actual.resolvedFileName, `'resolvedFileName': expected '${expected.resolvedFileName}' to be equal to '${actual.resolvedFileName}'`);
- assert.isTrue(expected.isExternalLibraryImport === actual.isExternalLibraryImport, `'shouldBeProperExternalModule': expected '${expected.isExternalLibraryImport}' to be equal to '${actual.isExternalLibraryImport}'`);
- }
- else {
- assert.isTrue(file.resolvedModules[id] === undefined);
+ const actual = cache[id];
+ entryChecker(expected, actual);
}
}
+ else {
+ assert.isTrue(cache[id] === undefined);
+ }
}
}
}
+ function checkResolvedModulesCache(program: Program, fileName: string, expectedContent: Map): void {
+ checkCache("resolved modules", program, fileName, expectedContent, f => f.resolvedModules, checkResolvedModule);
+ }
+
+ function checkResolvedTypeDirectivesCache(program: Program, fileName: string, expectedContent: Map): void {
+ checkCache("resolved type directives", program, fileName, expectedContent, f => f.resolvedTypeReferenceDirectiveNames, checkResolvedTypeDirective);
+ }
+
describe("Reuse program structure", () => {
let target = ScriptTarget.Latest;
let files = [
@@ -197,9 +216,11 @@ module ts {
`
///
///
+///
`, "",`var x = 1`) },
{ name: "b.ts", text: SourceText.New(`/// `, "", `var y = 2`) },
{ name: "c.ts", text: SourceText.New("", "", `var z = 1;`) },
+ { name: "types/typerefs/index.d.ts", text: SourceText.New("", "", `declare let z: number;`) },
]
it("successful if change does not affect imports", () => {
@@ -213,6 +234,17 @@ module ts {
assert.equal(program1Diagnostics.length, program2Diagnostics.length);
});
+ it("successful if change does not affect type reference directives", () => {
+ var program_1 = newProgram(files, ["a.ts"], { target });
+ var program_2 = updateProgram(program_1, ["a.ts"], { target }, files => {
+ files[0].text = files[0].text.updateProgram("var x = 100");
+ });
+ assert.isTrue(program_1.structureIsReused);
+ let program1Diagnostics = program_1.getSemanticDiagnostics(program_1.getSourceFile("a.ts"))
+ let program2Diagnostics = program_2.getSemanticDiagnostics(program_1.getSourceFile("a.ts"))
+ assert.equal(program1Diagnostics.length, program2Diagnostics.length);
+ });
+
it("fails if change affects tripleslash references", () => {
var program_1 = newProgram(files, ["a.ts"], { target });
var program_2 = updateProgram(program_1, ["a.ts"], { target }, files => {
@@ -232,11 +264,35 @@ module ts {
assert.isTrue(!program_1.structureIsReused);
});
+ it("fails if change affects type directives", () => {
+ var program_1 = newProgram(files, ["a.ts"], { target });
+ var program_2 = updateProgram(program_1, ["a.ts"], { target }, files => {
+ let newReferences = `
+///
+///
+/// `;
+ files[0].text = files[0].text.updateReferences(newReferences);
+ });
+ assert.isTrue(!program_1.structureIsReused);
+ });
+
it("fails if module kind changes", () => {
var program_1 = newProgram(files, ["a.ts"], { target, module: ModuleKind.CommonJS });
var program_2 = updateProgram(program_1, ["a.ts"], { target, module: ModuleKind.AMD }, files => void 0);
assert.isTrue(!program_1.structureIsReused);
});
+
+ it("fails if rootdir changes", () => {
+ var program_1 = newProgram(files, ["a.ts"], { target, module: ModuleKind.CommonJS, rootDir: "/a/b" });
+ var program_2 = updateProgram(program_1, ["a.ts"], { target, module: ModuleKind.CommonJS, rootDir: "/a/c" }, files => void 0);
+ assert.isTrue(!program_1.structureIsReused);
+ });
+
+ it("fails if config path changes", () => {
+ var program_1 = newProgram(files, ["a.ts"], { target, module: ModuleKind.CommonJS, configFilePath: "/a/b/tsconfig.json" });
+ var program_2 = updateProgram(program_1, ["a.ts"], { target, module: ModuleKind.CommonJS, configFilePath: "/a/c/tsconfig.json" }, files => void 0);
+ assert.isTrue(!program_1.structureIsReused);
+ });
it("resolution cache follows imports", () => {
let files = [
@@ -274,5 +330,43 @@ module ts {
assert.isTrue(!program_3.structureIsReused);
checkResolvedModulesCache(program_4, "a.ts", { "b": { resolvedFileName: "b.ts" }, "c": undefined });
});
+
+ it("resolved type directives cache follows type directives", () => {
+ let files = [
+ { name: "a.ts", text: SourceText.New("/// ", "", "var x = $") },
+ { name: "types/typedefs/index.d.ts", text: SourceText.New("", "", "declare var $: number") },
+ ];
+ var options: CompilerOptions = { target };
+
+ var program_1 = newProgram(files, ["a.ts"], options);
+ checkResolvedTypeDirectivesCache(program_1, "a.ts", { "typedefs": { resolvedFileName: "types/typedefs/index.d.ts", primary: true } });
+ checkResolvedTypeDirectivesCache(program_1, "types/typedefs/index.d.ts", undefined);
+
+ var program_2 = updateProgram(program_1, ["a.ts"], options, files => {
+ files[0].text = files[0].text.updateProgram("var x = 2");
+ });
+ assert.isTrue(program_1.structureIsReused);
+
+ // content of resolution cache should not change
+ checkResolvedTypeDirectivesCache(program_1, "a.ts", { "typedefs": { resolvedFileName: "types/typedefs/index.d.ts", primary: true } });
+ checkResolvedTypeDirectivesCache(program_1, "types/typedefs/index.d.ts", undefined);
+
+ // type reference directives has changed - program is not reused
+ var program_3 = updateProgram(program_2, ["a.ts"], options, files => {
+ files[0].text = files[0].text.updateReferences("");
+ });
+
+ assert.isTrue(!program_2.structureIsReused);
+ checkResolvedTypeDirectivesCache(program_3, "a.ts", undefined);
+
+ var program_4 = updateProgram(program_3, ["a.ts"], options, files => {
+ let newReferences = `///
+ ///
+ `;
+ files[0].text = files[0].text.updateReferences(newReferences);
+ });
+ assert.isTrue(!program_3.structureIsReused);
+ checkResolvedTypeDirectivesCache(program_1, "a.ts", { "typedefs": { resolvedFileName: "types/typedefs/index.d.ts", primary: true } });
+ });
})
}
\ No newline at end of file
diff --git a/tests/cases/unittests/services/preProcessFile.ts b/tests/cases/unittests/services/preProcessFile.ts
index a648a3c4b26..7fa25b440c5 100644
--- a/tests/cases/unittests/services/preProcessFile.ts
+++ b/tests/cases/unittests/services/preProcessFile.ts
@@ -9,18 +9,11 @@ describe('PreProcessFile:', function () {
function test(sourceText: string, readImportFile: boolean, detectJavaScriptImports: boolean, expectedPreProcess: ts.PreProcessedFileInfo): void {
var resultPreProcess = ts.preProcessFile(sourceText, readImportFile, detectJavaScriptImports);
- var resultIsLibFile = resultPreProcess.isLibFile;
- var resultImportedFiles = resultPreProcess.importedFiles;
- var resultReferencedFiles = resultPreProcess.referencedFiles;
+ assert.equal(resultPreProcess.isLibFile, expectedPreProcess.isLibFile, "Pre-processed file has different value for isLibFile. Expected: " + expectedPreProcess.isLibFile + ". Actual: " + resultPreProcess.isLibFile);
- var expectedIsLibFile = expectedPreProcess.isLibFile;
- var expectedImportedFiles = expectedPreProcess.importedFiles;
- var expectedReferencedFiles = expectedPreProcess.referencedFiles;
-
- assert.equal(resultIsLibFile, expectedIsLibFile, "Pre-processed file has different value for isLibFile. Expected: " + expectedPreProcess + ". Actual: " + resultIsLibFile);
-
- checkFileReferenceList("Imported files", expectedImportedFiles, resultImportedFiles);
- checkFileReferenceList("Referenced files", expectedReferencedFiles, resultReferencedFiles);
+ checkFileReferenceList("Imported files", expectedPreProcess.importedFiles, resultPreProcess.importedFiles);
+ checkFileReferenceList("Referenced files", expectedPreProcess.referencedFiles, resultPreProcess.referencedFiles);
+ checkFileReferenceList("Type reference directives", expectedPreProcess.typeReferenceDirectives, resultPreProcess.typeReferenceDirectives);
assert.deepEqual(resultPreProcess.ambientExternalModules, expectedPreProcess.ambientExternalModules);
}
@@ -52,6 +45,7 @@ describe('PreProcessFile:', function () {
referencedFiles: [{ fileName: "refFile1.ts", pos: 0, end: 37 }, { fileName: "refFile2.ts", pos: 38, end: 73 },
{ fileName: "refFile3.ts", pos: 74, end: 109 }, { fileName: "..\\refFile4d.ts", pos: 110, end: 150 }],
importedFiles: [],
+ typeReferenceDirectives: [],
ambientExternalModules: undefined,
isLibFile: false
});
@@ -64,6 +58,7 @@ describe('PreProcessFile:', function () {
{
referencedFiles: [],
importedFiles: [],
+ typeReferenceDirectives: [],
ambientExternalModules: undefined,
isLibFile: false
});
@@ -75,6 +70,7 @@ describe('PreProcessFile:', function () {
/* detectJavaScriptImports */ false,
{
referencedFiles: [],
+ typeReferenceDirectives: [],
importedFiles: [{ fileName: "r1.ts", pos: 20, end: 25 }, { fileName: "r2.ts", pos: 49, end: 54 }, { fileName: "r3.ts", pos: 78, end: 83 },
{ fileName: "r4.ts", pos: 106, end: 111 }, { fileName: "r5.ts", pos: 138, end: 143 }],
ambientExternalModules: undefined,
@@ -88,6 +84,7 @@ describe('PreProcessFile:', function () {
/* detectJavaScriptImports */ false,
{
referencedFiles: [],
+ typeReferenceDirectives: [],
importedFiles: [],
ambientExternalModules: undefined,
isLibFile: false
@@ -100,6 +97,7 @@ describe('PreProcessFile:', function () {
/* detectJavaScriptImports */ false,
{
referencedFiles: [],
+ typeReferenceDirectives: [],
importedFiles: [{ fileName: "r3.ts", pos: 73, end: 78 }],
ambientExternalModules: undefined,
isLibFile: false
@@ -112,6 +110,7 @@ describe('PreProcessFile:', function () {
/* detectJavaScriptImports */ false,
{
referencedFiles: [{ fileName: "refFile1.ts", pos: 0, end: 35 }, { fileName: "refFile2.ts", pos: 36, end: 71 }],
+ typeReferenceDirectives: [],
importedFiles: [{ fileName: "r1.ts", pos: 92, end: 97 }, { fileName: "r2.ts", pos: 121, end: 126 }],
ambientExternalModules: undefined,
isLibFile: false
@@ -124,6 +123,7 @@ describe('PreProcessFile:', function () {
/* detectJavaScriptImports */ false,
{
referencedFiles: [{ fileName: "refFile1.ts", pos: 0, end: 35 }],
+ typeReferenceDirectives: [],
importedFiles: [{ fileName: "r1.ts", pos: 91, end: 96 }, { fileName: "r3.ts", pos: 148, end: 153 }],
ambientExternalModules: undefined,
isLibFile: false
@@ -142,6 +142,7 @@ describe('PreProcessFile:', function () {
/* detectJavaScriptImports */ false,
{
referencedFiles: [],
+ typeReferenceDirectives: [],
importedFiles: [
{ fileName: "m1", pos: 20, end: 22 },
{ fileName: "m2", pos: 51, end: 53 },
@@ -165,6 +166,7 @@ describe('PreProcessFile:', function () {
/* detectJavaScriptImports */ false,
{
referencedFiles: [],
+ typeReferenceDirectives: [],
importedFiles: [
{ fileName: "m1", pos: 14, end: 16 },
{ fileName: "m2", pos: 36, end: 38 },
@@ -188,6 +190,7 @@ describe('PreProcessFile:', function () {
{
referencedFiles: [],
+ typeReferenceDirectives: [],
importedFiles: [],
ambientExternalModules: ["B"],
isLibFile: false
@@ -200,6 +203,7 @@ describe('PreProcessFile:', function () {
/* detectJavaScriptImports */ false,
{
referencedFiles: [],
+ typeReferenceDirectives: [],
importedFiles: [
{ fileName: "m1", pos: 26, end: 28 }
],
@@ -218,6 +222,7 @@ describe('PreProcessFile:', function () {
/* detectJavaScriptImports */ true,
{
referencedFiles: [],
+ typeReferenceDirectives: [],
importedFiles: [
{ fileName: "m1", pos: 39, end: 41 },
{ fileName: "m2", pos: 74, end: 76 },
@@ -237,6 +242,7 @@ describe('PreProcessFile:', function () {
/* detectJavaScriptImports */ true,
{
referencedFiles: [],
+ typeReferenceDirectives: [],
importedFiles: [
{ fileName: "mod1", pos: 21, end: 25 },
{ fileName: "mod2", pos: 29, end: 33 },
@@ -254,6 +260,7 @@ describe('PreProcessFile:', function () {
/* detectJavaScriptImports */ true,
{
referencedFiles: [],
+ typeReferenceDirectives: [],
importedFiles: [
{ fileName: "mod1", pos: 28, end: 32 },
{ fileName: "mod2", pos: 36, end: 40 },
@@ -274,6 +281,7 @@ describe('PreProcessFile:', function () {
/*detectJavaScriptImports*/ false,
{
referencedFiles: [],
+ typeReferenceDirectives: [],
importedFiles: [
{ "fileName": "../Observable", "pos": 28, "end": 41 }
],
@@ -293,6 +301,7 @@ describe('PreProcessFile:', function () {
/*detectJavaScriptImports*/ false,
{
referencedFiles: [],
+ typeReferenceDirectives: [],
importedFiles: [
{ "fileName": "m", "pos": 135, "end": 136 },
{ "fileName": "../Observable", "pos": 28, "end": 41 }
@@ -313,6 +322,7 @@ describe('PreProcessFile:', function () {
/*detectJavaScriptImports*/ false,
{
referencedFiles: [],
+ typeReferenceDirectives: [],
importedFiles: [
{ "fileName": "m", "pos": 135, "end": 136 },
{ "fileName": "../Observable", "pos": 28, "end": 41 }
@@ -333,6 +343,7 @@ describe('PreProcessFile:', function () {
/*detectJavaScriptImports*/ false,
{
referencedFiles: [],
+ typeReferenceDirectives: [],
importedFiles: [
{ "fileName": "../Observable", "pos": 28, "end": 41 }
],
@@ -352,6 +363,7 @@ describe('PreProcessFile:', function () {
/*detectJavaScriptImports*/ false,
{
referencedFiles: [],
+ typeReferenceDirectives: [],
importedFiles: [
{ "fileName": "../Observable", "pos": 28, "end": 41 }
],
@@ -370,6 +382,7 @@ describe('PreProcessFile:', function () {
/*detectJavaScriptImports*/ false,
{
referencedFiles: [],
+ typeReferenceDirectives: [],
importedFiles: [
{ "fileName": "../Observable", "pos": 28, "end": 41 }
],
@@ -390,6 +403,7 @@ describe('PreProcessFile:', function () {
/*detectJavaScriptImports*/ false,
{
referencedFiles: [],
+ typeReferenceDirectives: [],
importedFiles: [
{ "fileName": "m2", "pos": 65, "end": 67 },
{ "fileName": "augmentation", "pos": 102, "end": 114 }
@@ -413,6 +427,7 @@ describe('PreProcessFile:', function () {
/*detectJavaScriptImports*/ false,
{
referencedFiles: [],
+ typeReferenceDirectives: [],
importedFiles: [
{ "fileName": "m2", "pos": 127, "end": 129 },
{ "fileName": "augmentation", "pos": 164, "end": 176 }
@@ -420,7 +435,30 @@ describe('PreProcessFile:', function () {
ambientExternalModules: ["m1"],
isLibFile: false
});
- });
+ });
+ it ("correctly recognizes type reference directives", () => {
+ test(`
+ ///
+ ///
+ ///
+ ///
+ `,
+ /*readImportFile*/ true,
+ /*detectJavaScriptImports*/ false,
+ {
+ referencedFiles: [
+ { "pos": 13, "end": 38, "fileName": "a" },
+ { "pos": 91, "end": 117, "fileName": "a2" }
+ ],
+ typeReferenceDirectives: [
+ { "pos": 51, "end": 78, "fileName": "a1" },
+ { "pos": 130, "end": 157, "fileName": "a3" }
+ ],
+ importedFiles: [],
+ ambientExternalModules: undefined,
+ isLibFile: false
+ });
+ })
});
});
diff --git a/tests/cases/unittests/session.ts b/tests/cases/unittests/session.ts
index 41f4bc599f6..ee9742482cd 100644
--- a/tests/cases/unittests/session.ts
+++ b/tests/cases/unittests/session.ts
@@ -36,7 +36,7 @@ namespace ts.server {
let lastSent: protocol.Message;
beforeEach(() => {
- session = new Session(mockHost, Buffer.byteLength, process.hrtime, mockLogger);
+ session = new Session(mockHost, Utils.byteLength, process.hrtime, mockLogger);
session.send = (msg: protocol.Message) => {
lastSent = msg;
};
@@ -161,7 +161,7 @@ namespace ts.server {
it("is an overrideable handle which sends protocol messages over the wire", () => {
const msg = {seq: 0, type: "none"};
const strmsg = JSON.stringify(msg);
- const len = 1 + Buffer.byteLength(strmsg, "utf8");
+ const len = 1 + Utils.byteLength(strmsg, "utf8");
const resultMsg = `Content-Length: ${len}\r\n\r\n${strmsg}\n`;
session.send = Session.prototype.send;
@@ -253,7 +253,7 @@ namespace ts.server {
lastSent: protocol.Message;
customHandler = "testhandler";
constructor() {
- super(mockHost, Buffer.byteLength, process.hrtime, mockLogger);
+ super(mockHost, Utils.byteLength, process.hrtime, mockLogger);
this.addProtocolHandler(this.customHandler, () => {
return {response: undefined, responseRequired: true};
});
@@ -311,7 +311,7 @@ namespace ts.server {
class InProcSession extends Session {
private queue: protocol.Request[] = [];
constructor(private client: InProcClient) {
- super(mockHost, Buffer.byteLength, process.hrtime, mockLogger);
+ super(mockHost, Utils.byteLength, process.hrtime, mockLogger);
this.addProtocolHandler("echo", (req: protocol.Request) => ({
response: req.arguments,
responseRequired: true