Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
206 changes: 175 additions & 31 deletions src/compiler/moduleNameResolver.ts

Large diffs are not rendered by default.

16 changes: 16 additions & 0 deletions tests/baselines/reference/cachedModuleResolution1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
//// [tests/cases/compiler/cachedModuleResolution1.ts] ////

//// [foo.d.ts]

export declare let x: number

//// [app.ts]
import {x} from "foo";

//// [lib.ts]
import {x} from "foo";

//// [app.js]
"use strict";
//// [lib.js]
"use strict";
13 changes: 13 additions & 0 deletions tests/baselines/reference/cachedModuleResolution1.symbols
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
=== /a/b/node_modules/foo.d.ts ===

export declare let x: number
>x : Symbol(x, Decl(foo.d.ts, 1, 18))

=== /a/b/c/d/e/app.ts ===
import {x} from "foo";
>x : Symbol(x, Decl(app.ts, 0, 8))

=== /a/b/c/lib.ts ===
import {x} from "foo";
>x : Symbol(x, Decl(lib.ts, 0, 8))

46 changes: 46 additions & 0 deletions tests/baselines/reference/cachedModuleResolution1.trace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
[
"======== Resolving module 'foo' from '/a/b/c/d/e/app.ts'. ========",
"Explicitly specified module resolution kind: 'NodeJs'.",
"Loading module 'foo' from 'node_modules' folder.",
"File '/a/b/c/d/e/node_modules/foo.ts' does not exist.",
"File '/a/b/c/d/e/node_modules/foo.tsx' does not exist.",
"File '/a/b/c/d/e/node_modules/foo.d.ts' does not exist.",
"File '/a/b/c/d/e/node_modules/foo/package.json' does not exist.",
"File '/a/b/c/d/e/node_modules/foo/index.ts' does not exist.",
"File '/a/b/c/d/e/node_modules/foo/index.tsx' does not exist.",
"File '/a/b/c/d/e/node_modules/foo/index.d.ts' does not exist.",
"File '/a/b/c/d/e/node_modules/@types/foo.d.ts' does not exist.",
"File '/a/b/c/d/e/node_modules/@types/foo/package.json' does not exist.",
"File '/a/b/c/d/e/node_modules/@types/foo/index.d.ts' does not exist.",
"File '/a/b/c/d/node_modules/foo.ts' does not exist.",
"File '/a/b/c/d/node_modules/foo.tsx' does not exist.",
"File '/a/b/c/d/node_modules/foo.d.ts' does not exist.",
"File '/a/b/c/d/node_modules/foo/package.json' does not exist.",
"File '/a/b/c/d/node_modules/foo/index.ts' does not exist.",
"File '/a/b/c/d/node_modules/foo/index.tsx' does not exist.",
"File '/a/b/c/d/node_modules/foo/index.d.ts' does not exist.",
"File '/a/b/c/d/node_modules/@types/foo.d.ts' does not exist.",
"File '/a/b/c/d/node_modules/@types/foo/package.json' does not exist.",
"File '/a/b/c/d/node_modules/@types/foo/index.d.ts' does not exist.",
"File '/a/b/c/node_modules/foo.ts' does not exist.",
"File '/a/b/c/node_modules/foo.tsx' does not exist.",
"File '/a/b/c/node_modules/foo.d.ts' does not exist.",
"File '/a/b/c/node_modules/foo/package.json' does not exist.",
"File '/a/b/c/node_modules/foo/index.ts' does not exist.",
"File '/a/b/c/node_modules/foo/index.tsx' does not exist.",
"File '/a/b/c/node_modules/foo/index.d.ts' does not exist.",
"File '/a/b/c/node_modules/@types/foo.d.ts' does not exist.",
"File '/a/b/c/node_modules/@types/foo/package.json' does not exist.",
"File '/a/b/c/node_modules/@types/foo/index.d.ts' does not exist.",
"File '/a/b/node_modules/foo.ts' does not exist.",
"File '/a/b/node_modules/foo.tsx' does not exist.",
"File '/a/b/node_modules/foo.d.ts' exist - use it as a name resolution result.",
"Resolving real path for '/a/b/node_modules/foo.d.ts', result '/a/b/node_modules/foo.d.ts'",
"======== Module name 'foo' was successfully resolved to '/a/b/node_modules/foo.d.ts'. ========",
"======== Resolving module 'foo' from '/a/b/c/lib.ts'. ========",
"Explicitly specified module resolution kind: 'NodeJs'.",
"Loading module 'foo' from 'node_modules' folder.",
"Resolution for module 'foo' was found in cache",
"Resolving real path for '/a/b/node_modules/foo.d.ts', result '/a/b/node_modules/foo.d.ts'",
"======== Module name 'foo' was successfully resolved to '/a/b/node_modules/foo.d.ts'. ========"
]
13 changes: 13 additions & 0 deletions tests/baselines/reference/cachedModuleResolution1.types
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
=== /a/b/node_modules/foo.d.ts ===

export declare let x: number
>x : number

=== /a/b/c/d/e/app.ts ===
import {x} from "foo";
>x : number

=== /a/b/c/lib.ts ===
import {x} from "foo";
>x : number

17 changes: 17 additions & 0 deletions tests/baselines/reference/cachedModuleResolution2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
//// [tests/cases/compiler/cachedModuleResolution2.ts] ////

//// [foo.d.ts]

export declare let x: number

//// [lib.ts]
import {x} from "foo";

//// [app.ts]
import {x} from "foo";


//// [lib.js]
"use strict";
//// [app.js]
"use strict";
13 changes: 13 additions & 0 deletions tests/baselines/reference/cachedModuleResolution2.symbols
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
=== /a/b/node_modules/foo.d.ts ===

export declare let x: number
>x : Symbol(x, Decl(foo.d.ts, 1, 18))

=== /a/b/c/lib.ts ===
import {x} from "foo";
>x : Symbol(x, Decl(lib.ts, 0, 8))

=== /a/b/c/d/e/app.ts ===
import {x} from "foo";
>x : Symbol(x, Decl(app.ts, 0, 8))

46 changes: 46 additions & 0 deletions tests/baselines/reference/cachedModuleResolution2.trace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
[
"======== Resolving module 'foo' from '/a/b/c/lib.ts'. ========",
"Explicitly specified module resolution kind: 'NodeJs'.",
"Loading module 'foo' from 'node_modules' folder.",
"File '/a/b/c/node_modules/foo.ts' does not exist.",
"File '/a/b/c/node_modules/foo.tsx' does not exist.",
"File '/a/b/c/node_modules/foo.d.ts' does not exist.",
"File '/a/b/c/node_modules/foo/package.json' does not exist.",
"File '/a/b/c/node_modules/foo/index.ts' does not exist.",
"File '/a/b/c/node_modules/foo/index.tsx' does not exist.",
"File '/a/b/c/node_modules/foo/index.d.ts' does not exist.",
"File '/a/b/c/node_modules/@types/foo.d.ts' does not exist.",
"File '/a/b/c/node_modules/@types/foo/package.json' does not exist.",
"File '/a/b/c/node_modules/@types/foo/index.d.ts' does not exist.",
"File '/a/b/node_modules/foo.ts' does not exist.",
"File '/a/b/node_modules/foo.tsx' does not exist.",
"File '/a/b/node_modules/foo.d.ts' exist - use it as a name resolution result.",
"Resolving real path for '/a/b/node_modules/foo.d.ts', result '/a/b/node_modules/foo.d.ts'",
"======== Module name 'foo' was successfully resolved to '/a/b/node_modules/foo.d.ts'. ========",
"======== Resolving module 'foo' from '/a/b/c/d/e/app.ts'. ========",
"Explicitly specified module resolution kind: 'NodeJs'.",
"Loading module 'foo' from 'node_modules' folder.",
"File '/a/b/c/d/e/node_modules/foo.ts' does not exist.",
"File '/a/b/c/d/e/node_modules/foo.tsx' does not exist.",
"File '/a/b/c/d/e/node_modules/foo.d.ts' does not exist.",
"File '/a/b/c/d/e/node_modules/foo/package.json' does not exist.",
"File '/a/b/c/d/e/node_modules/foo/index.ts' does not exist.",
"File '/a/b/c/d/e/node_modules/foo/index.tsx' does not exist.",
"File '/a/b/c/d/e/node_modules/foo/index.d.ts' does not exist.",
"File '/a/b/c/d/e/node_modules/@types/foo.d.ts' does not exist.",
"File '/a/b/c/d/e/node_modules/@types/foo/package.json' does not exist.",
"File '/a/b/c/d/e/node_modules/@types/foo/index.d.ts' does not exist.",
"File '/a/b/c/d/node_modules/foo.ts' does not exist.",
"File '/a/b/c/d/node_modules/foo.tsx' does not exist.",
"File '/a/b/c/d/node_modules/foo.d.ts' does not exist.",
"File '/a/b/c/d/node_modules/foo/package.json' does not exist.",
"File '/a/b/c/d/node_modules/foo/index.ts' does not exist.",
"File '/a/b/c/d/node_modules/foo/index.tsx' does not exist.",
"File '/a/b/c/d/node_modules/foo/index.d.ts' does not exist.",
"File '/a/b/c/d/node_modules/@types/foo.d.ts' does not exist.",
"File '/a/b/c/d/node_modules/@types/foo/package.json' does not exist.",
"File '/a/b/c/d/node_modules/@types/foo/index.d.ts' does not exist.",
"Resolution for module 'foo' was found in cache",
"Resolving real path for '/a/b/node_modules/foo.d.ts', result '/a/b/node_modules/foo.d.ts'",
"======== Module name 'foo' was successfully resolved to '/a/b/node_modules/foo.d.ts'. ========"
]
13 changes: 13 additions & 0 deletions tests/baselines/reference/cachedModuleResolution2.types
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
=== /a/b/node_modules/foo.d.ts ===

export declare let x: number
>x : number

=== /a/b/c/lib.ts ===
import {x} from "foo";
>x : number

=== /a/b/c/d/e/app.ts ===
import {x} from "foo";
>x : number

16 changes: 16 additions & 0 deletions tests/baselines/reference/cachedModuleResolution3.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
//// [tests/cases/compiler/cachedModuleResolution3.ts] ////

//// [foo.d.ts]

export declare let x: number

//// [app.ts]
import {x} from "foo";

//// [lib.ts]
import {x} from "foo";

//// [app.js]
"use strict";
//// [lib.js]
"use strict";
13 changes: 13 additions & 0 deletions tests/baselines/reference/cachedModuleResolution3.symbols
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
=== /a/b/foo.d.ts ===

export declare let x: number
>x : Symbol(x, Decl(foo.d.ts, 1, 18))

=== /a/b/c/d/e/app.ts ===
import {x} from "foo";
>x : Symbol(x, Decl(app.ts, 0, 8))

=== /a/b/c/lib.ts ===
import {x} from "foo";
>x : Symbol(x, Decl(lib.ts, 0, 8))

21 changes: 21 additions & 0 deletions tests/baselines/reference/cachedModuleResolution3.trace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
[
"======== Resolving module 'foo' from '/a/b/c/d/e/app.ts'. ========",
"Explicitly specified module resolution kind: 'Classic'.",
"File '/a/b/c/d/e/foo.ts' does not exist.",
"File '/a/b/c/d/e/foo.tsx' does not exist.",
"File '/a/b/c/d/e/foo.d.ts' does not exist.",
"File '/a/b/c/d/foo.ts' does not exist.",
"File '/a/b/c/d/foo.tsx' does not exist.",
"File '/a/b/c/d/foo.d.ts' does not exist.",
"File '/a/b/c/foo.ts' does not exist.",
"File '/a/b/c/foo.tsx' does not exist.",
"File '/a/b/c/foo.d.ts' does not exist.",
"File '/a/b/foo.ts' does not exist.",
"File '/a/b/foo.tsx' does not exist.",
"File '/a/b/foo.d.ts' exist - use it as a name resolution result.",
"======== Module name 'foo' was successfully resolved to '/a/b/foo.d.ts'. ========",
"======== Resolving module 'foo' from '/a/b/c/lib.ts'. ========",
"Explicitly specified module resolution kind: 'Classic'.",
"Resolution for module 'foo' was found in cache",
"======== Module name 'foo' was successfully resolved to '/a/b/foo.d.ts'. ========"
]
13 changes: 13 additions & 0 deletions tests/baselines/reference/cachedModuleResolution3.types
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
=== /a/b/foo.d.ts ===

export declare let x: number
>x : number

=== /a/b/c/d/e/app.ts ===
import {x} from "foo";
>x : number

=== /a/b/c/lib.ts ===
import {x} from "foo";
>x : number

17 changes: 17 additions & 0 deletions tests/baselines/reference/cachedModuleResolution4.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
//// [tests/cases/compiler/cachedModuleResolution4.ts] ////

//// [foo.d.ts]

export declare let x: number

//// [lib.ts]
import {x} from "foo";

//// [app.ts]
import {x} from "foo";


//// [lib.js]
"use strict";
//// [app.js]
"use strict";
13 changes: 13 additions & 0 deletions tests/baselines/reference/cachedModuleResolution4.symbols
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
=== /a/b/foo.d.ts ===

export declare let x: number
>x : Symbol(x, Decl(foo.d.ts, 1, 18))

=== /a/b/c/lib.ts ===
import {x} from "foo";
>x : Symbol(x, Decl(lib.ts, 0, 8))

=== /a/b/c/d/e/app.ts ===
import {x} from "foo";
>x : Symbol(x, Decl(app.ts, 0, 8))

21 changes: 21 additions & 0 deletions tests/baselines/reference/cachedModuleResolution4.trace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
[
"======== Resolving module 'foo' from '/a/b/c/lib.ts'. ========",
"Explicitly specified module resolution kind: 'Classic'.",
"File '/a/b/c/foo.ts' does not exist.",
"File '/a/b/c/foo.tsx' does not exist.",
"File '/a/b/c/foo.d.ts' does not exist.",
"File '/a/b/foo.ts' does not exist.",
"File '/a/b/foo.tsx' does not exist.",
"File '/a/b/foo.d.ts' exist - use it as a name resolution result.",
"======== Module name 'foo' was successfully resolved to '/a/b/foo.d.ts'. ========",
"======== Resolving module 'foo' from '/a/b/c/d/e/app.ts'. ========",
"Explicitly specified module resolution kind: 'Classic'.",
"File '/a/b/c/d/e/foo.ts' does not exist.",
"File '/a/b/c/d/e/foo.tsx' does not exist.",
"File '/a/b/c/d/e/foo.d.ts' does not exist.",
"File '/a/b/c/d/foo.ts' does not exist.",
"File '/a/b/c/d/foo.tsx' does not exist.",
"File '/a/b/c/d/foo.d.ts' does not exist.",
"Resolution for module 'foo' was found in cache",
"======== Module name 'foo' was successfully resolved to '/a/b/foo.d.ts'. ========"
]
13 changes: 13 additions & 0 deletions tests/baselines/reference/cachedModuleResolution4.types
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
=== /a/b/foo.d.ts ===

export declare let x: number
>x : number

=== /a/b/c/lib.ts ===
import {x} from "foo";
>x : number

=== /a/b/c/d/e/app.ts ===
import {x} from "foo";
>x : number

16 changes: 16 additions & 0 deletions tests/baselines/reference/cachedModuleResolution5.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
//// [tests/cases/compiler/cachedModuleResolution5.ts] ////

//// [foo.d.ts]

export declare let x: number

//// [app.ts]
import {x} from "foo";

//// [lib.ts]
import {x} from "foo";

//// [app.js]
"use strict";
//// [lib.js]
"use strict";
13 changes: 13 additions & 0 deletions tests/baselines/reference/cachedModuleResolution5.symbols
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
=== /a/b/node_modules/foo.d.ts ===

export declare let x: number
>x : Symbol(x, Decl(foo.d.ts, 1, 18))

=== /a/b/c/d/e/app.ts ===
import {x} from "foo";
>x : Symbol(x, Decl(app.ts, 0, 8))

=== /a/b/lib.ts ===
import {x} from "foo";
>x : Symbol(x, Decl(lib.ts, 0, 8))

Loading