initial implementation of path mapping based module resolution

This commit is contained in:
Vladimir Matveev
2015-11-18 21:46:45 -08:00
parent bd84b844ff
commit d2fd6437d7
90 changed files with 3391 additions and 49 deletions

View File

@@ -0,0 +1,27 @@
//// [tests/cases/compiler/pathMappingBasedModuleResolution1.ts] ////
//// [file1.ts]
// user defined base url
import {x} from "folder2/file2"
declare function use(a: any): void;
use(x.toExponential());
//// [file2.ts]
export {x} from "./file3"
//// [file3.ts]
export var x = 1;
//// [file3.js]
exports.x = 1;
//// [file2.js]
var file3_1 = require("./file3");
exports.x = file3_1.x;
//// [file1.js]
// user defined base url
var file2_1 = require("folder2/file2");
use(file2_1.x.toExponential());

View File

@@ -0,0 +1,25 @@
=== tests/cases/compiler/root/folder1/file1.ts ===
// user defined base url
import {x} from "folder2/file2"
>x : Symbol(x, Decl(file1.ts, 3, 8))
declare function use(a: any): void;
>use : Symbol(use, Decl(file1.ts, 3, 31))
>a : Symbol(a, Decl(file1.ts, 5, 21))
use(x.toExponential());
>use : Symbol(use, Decl(file1.ts, 3, 31))
>x.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>x : Symbol(x, Decl(file1.ts, 3, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
=== tests/cases/compiler/root/folder2/file2.ts ===
export {x} from "./file3"
>x : Symbol(x, Decl(file2.ts, 0, 8))
=== tests/cases/compiler/root/folder2/file3.ts ===
export var x = 1;
>x : Symbol(x, Decl(file3.ts, 0, 10))

View File

@@ -0,0 +1,28 @@
=== tests/cases/compiler/root/folder1/file1.ts ===
// user defined base url
import {x} from "folder2/file2"
>x : number
declare function use(a: any): void;
>use : (a: any) => void
>a : any
use(x.toExponential());
>use(x.toExponential()) : void
>use : (a: any) => void
>x.toExponential() : string
>x.toExponential : (fractionDigits?: number) => string
>x : number
>toExponential : (fractionDigits?: number) => string
=== tests/cases/compiler/root/folder2/file2.ts ===
export {x} from "./file3"
>x : number
=== tests/cases/compiler/root/folder2/file3.ts ===
export var x = 1;
>x : number
>1 : number

View File

@@ -0,0 +1,34 @@
//// [tests/cases/compiler/pathMappingBasedModuleResolution10.ts] ////
//// [file1.ts]
import {x} from "./file2" // should be resolved to 'generated/folder1/file2.ts'
export var z = x.toExponential();
//// [file2.ts]
export {x} from "folder1/file3" // should be resolved to 'folder1/file3.ts'
//// [file3.ts]
export var x = 1;
//// [file3.ts]
import {z as y} from "../folder1/file1" // should be resolved to 'folder1/file1.ts'
let z = y.toLowerCase();
//// [file3.js]
define(["require", "exports"], function (require, exports) {
exports.x = 1;
});
//// [file2.js]
define(["require", "exports", "folder1/file3"], function (require, exports, file3_1) {
exports.x = file3_1.x; // should be resolved to 'folder1/file3.ts'
});
//// [file1.js]
define(["require", "exports", "./file2"], function (require, exports, file2_1) {
exports.z = file2_1.x.toExponential();
});
//// [file3.js]
define(["require", "exports", "../folder1/file1"], function (require, exports, file1_1) {
var z = file1_1.z.toLowerCase();
});

View File

@@ -0,0 +1,29 @@
=== tests/cases/compiler/root/folder1/file1.ts ===
import {x} from "./file2" // should be resolved to 'generated/folder1/file2.ts'
>x : Symbol(x, Decl(file1.ts, 0, 8))
export var z = x.toExponential();
>z : Symbol(z, Decl(file1.ts, 2, 10))
>x.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>x : Symbol(x, Decl(file1.ts, 0, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
=== tests/cases/compiler/root/generated/folder1/file2.ts ===
export {x} from "folder1/file3" // should be resolved to 'folder1/file3.ts'
>x : Symbol(x, Decl(file2.ts, 0, 8))
=== tests/cases/compiler/root/folder1/file3.ts ===
export var x = 1;
>x : Symbol(x, Decl(file3.ts, 0, 10))
=== tests/cases/compiler/root/generated/folder2/file3.ts ===
import {z as y} from "../folder1/file1" // should be resolved to 'folder1/file1.ts'
>z : Symbol(y, Decl(file3.ts, 0, 8))
>y : Symbol(y, Decl(file3.ts, 0, 8))
let z = y.toLowerCase();
>z : Symbol(z, Decl(file3.ts, 1, 3))
>y.toLowerCase : Symbol(String.toLowerCase, Decl(lib.d.ts, --, --))
>y : Symbol(y, Decl(file3.ts, 0, 8))
>toLowerCase : Symbol(String.toLowerCase, Decl(lib.d.ts, --, --))

View File

@@ -0,0 +1,32 @@
=== tests/cases/compiler/root/folder1/file1.ts ===
import {x} from "./file2" // should be resolved to 'generated/folder1/file2.ts'
>x : number
export var z = x.toExponential();
>z : string
>x.toExponential() : string
>x.toExponential : (fractionDigits?: number) => string
>x : number
>toExponential : (fractionDigits?: number) => string
=== tests/cases/compiler/root/generated/folder1/file2.ts ===
export {x} from "folder1/file3" // should be resolved to 'folder1/file3.ts'
>x : number
=== tests/cases/compiler/root/folder1/file3.ts ===
export var x = 1;
>x : number
>1 : number
=== tests/cases/compiler/root/generated/folder2/file3.ts ===
import {z as y} from "../folder1/file1" // should be resolved to 'folder1/file1.ts'
>z : string
>y : string
let z = y.toLowerCase();
>z : string
>y.toLowerCase() : string
>y.toLowerCase : () => string
>y : string
>toLowerCase : () => string

View File

@@ -0,0 +1,34 @@
//// [tests/cases/compiler/pathMappingBasedModuleResolution10_1.ts] ////
//// [file2.ts]
export {x} from "folder1/file3" // should be resolved to 'folder1/file3.ts'
//// [file3.ts]
export var x = 1;
//// [file3.ts]
import {z as y} from "../folder1/file1" // should be resolved to 'folder1/file1.ts'
let z = y.toLowerCase();
//// [file1.ts]
import {x} from "./file2" // should be resolved to 'generated/folder1/file2.ts'
export var z = x.toExponential();
//// [file3.js]
define(["require", "exports"], function (require, exports) {
exports.x = 1;
});
//// [file2.js]
define(["require", "exports", "folder1/file3"], function (require, exports, file3_1) {
exports.x = file3_1.x; // should be resolved to 'folder1/file3.ts'
});
//// [file1.js]
define(["require", "exports", "./file2"], function (require, exports, file2_1) {
exports.z = file2_1.x.toExponential();
});
//// [file3.js]
define(["require", "exports", "../folder1/file1"], function (require, exports, file1_1) {
var z = file1_1.z.toLowerCase();
});

View File

@@ -0,0 +1,29 @@
=== c:/root/generated/folder1/file2.ts ===
export {x} from "folder1/file3" // should be resolved to 'folder1/file3.ts'
>x : Symbol(x, Decl(file2.ts, 0, 8))
=== c:/root/folder1/file3.ts ===
export var x = 1;
>x : Symbol(x, Decl(file3.ts, 0, 10))
=== c:/root/generated/folder2/file3.ts ===
import {z as y} from "../folder1/file1" // should be resolved to 'folder1/file1.ts'
>z : Symbol(y, Decl(file3.ts, 0, 8))
>y : Symbol(y, Decl(file3.ts, 0, 8))
let z = y.toLowerCase();
>z : Symbol(z, Decl(file3.ts, 1, 3))
>y.toLowerCase : Symbol(String.toLowerCase, Decl(lib.d.ts, --, --))
>y : Symbol(y, Decl(file3.ts, 0, 8))
>toLowerCase : Symbol(String.toLowerCase, Decl(lib.d.ts, --, --))
=== c:/root/folder1/file1.ts ===
import {x} from "./file2" // should be resolved to 'generated/folder1/file2.ts'
>x : Symbol(x, Decl(file1.ts, 0, 8))
export var z = x.toExponential();
>z : Symbol(z, Decl(file1.ts, 2, 10))
>x.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>x : Symbol(x, Decl(file1.ts, 0, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))

View File

@@ -0,0 +1,32 @@
=== c:/root/generated/folder1/file2.ts ===
export {x} from "folder1/file3" // should be resolved to 'folder1/file3.ts'
>x : number
=== c:/root/folder1/file3.ts ===
export var x = 1;
>x : number
>1 : number
=== c:/root/generated/folder2/file3.ts ===
import {z as y} from "../folder1/file1" // should be resolved to 'folder1/file1.ts'
>z : string
>y : string
let z = y.toLowerCase();
>z : string
>y.toLowerCase() : string
>y.toLowerCase : () => string
>y : string
>toLowerCase : () => string
=== c:/root/folder1/file1.ts ===
import {x} from "./file2" // should be resolved to 'generated/folder1/file2.ts'
>x : number
export var z = x.toExponential();
>z : string
>x.toExponential() : string
>x.toExponential : (fractionDigits?: number) => string
>x : number
>toExponential : (fractionDigits?: number) => string

View File

@@ -0,0 +1,34 @@
//// [tests/cases/compiler/pathMappingBasedModuleResolution10_2.ts] ////
//// [file2.ts]
export {x} from "folder1/file3" // should be resolved to 'folder1/file3.ts'
//// [file3.ts]
export var x = 1;
//// [file3.ts]
import {z as y} from "../folder1/file1" // should be resolved to 'folder1/file1.ts'
let z = y.toLowerCase();
//// [file1.ts]
import {x} from "./file2" // should be resolved to 'generated/folder1/file2.ts'
export var z = x.toExponential();
//// [file3.js]
define(["require", "exports"], function (require, exports) {
exports.x = 1;
});
//// [file2.js]
define(["require", "exports", "folder1/file3"], function (require, exports, file3_1) {
exports.x = file3_1.x; // should be resolved to 'folder1/file3.ts'
});
//// [file1.js]
define(["require", "exports", "./file2"], function (require, exports, file2_1) {
exports.z = file2_1.x.toExponential();
});
//// [file3.js]
define(["require", "exports", "../folder1/file1"], function (require, exports, file1_1) {
var z = file1_1.z.toLowerCase();
});

View File

@@ -0,0 +1,29 @@
=== c:/root/src/generated/folder1/file2.ts ===
export {x} from "folder1/file3" // should be resolved to 'folder1/file3.ts'
>x : Symbol(x, Decl(file2.ts, 0, 8))
=== c:/root/src/folder1/file3.ts ===
export var x = 1;
>x : Symbol(x, Decl(file3.ts, 0, 10))
=== c:/root/src/generated/folder2/file3.ts ===
import {z as y} from "../folder1/file1" // should be resolved to 'folder1/file1.ts'
>z : Symbol(y, Decl(file3.ts, 0, 8))
>y : Symbol(y, Decl(file3.ts, 0, 8))
let z = y.toLowerCase();
>z : Symbol(z, Decl(file3.ts, 1, 3))
>y.toLowerCase : Symbol(String.toLowerCase, Decl(lib.d.ts, --, --))
>y : Symbol(y, Decl(file3.ts, 0, 8))
>toLowerCase : Symbol(String.toLowerCase, Decl(lib.d.ts, --, --))
=== c:/root/src/folder1/file1.ts ===
import {x} from "./file2" // should be resolved to 'generated/folder1/file2.ts'
>x : Symbol(x, Decl(file1.ts, 0, 8))
export var z = x.toExponential();
>z : Symbol(z, Decl(file1.ts, 2, 10))
>x.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>x : Symbol(x, Decl(file1.ts, 0, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))

View File

@@ -0,0 +1,32 @@
=== c:/root/src/generated/folder1/file2.ts ===
export {x} from "folder1/file3" // should be resolved to 'folder1/file3.ts'
>x : number
=== c:/root/src/folder1/file3.ts ===
export var x = 1;
>x : number
>1 : number
=== c:/root/src/generated/folder2/file3.ts ===
import {z as y} from "../folder1/file1" // should be resolved to 'folder1/file1.ts'
>z : string
>y : string
let z = y.toLowerCase();
>z : string
>y.toLowerCase() : string
>y.toLowerCase : () => string
>y : string
>toLowerCase : () => string
=== c:/root/src/folder1/file1.ts ===
import {x} from "./file2" // should be resolved to 'generated/folder1/file2.ts'
>x : number
export var z = x.toExponential();
>z : string
>x.toExponential() : string
>x.toExponential : (fractionDigits?: number) => string
>x : number
>toExponential : (fractionDigits?: number) => string

View File

@@ -0,0 +1,27 @@
//// [tests/cases/compiler/pathMappingBasedModuleResolution1_1.ts] ////
//// [file1.ts]
// user defined base url
import {x} from "folder2/file2"
declare function use(a: any): void;
use(x.toExponential());
//// [file2.ts]
export {x} from "./file3"
//// [file3.ts]
export var x = 1;
//// [file3.js]
exports.x = 1;
//// [file2.js]
var file3_1 = require("./file3");
exports.x = file3_1.x;
//// [file1.js]
// user defined base url
var file2_1 = require("folder2/file2");
use(file2_1.x.toExponential());

View File

@@ -0,0 +1,25 @@
=== c:/root/folder1/file1.ts ===
// user defined base url
import {x} from "folder2/file2"
>x : Symbol(x, Decl(file1.ts, 3, 8))
declare function use(a: any): void;
>use : Symbol(use, Decl(file1.ts, 3, 31))
>a : Symbol(a, Decl(file1.ts, 5, 21))
use(x.toExponential());
>use : Symbol(use, Decl(file1.ts, 3, 31))
>x.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>x : Symbol(x, Decl(file1.ts, 3, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
=== c:/root/folder2/file2.ts ===
export {x} from "./file3"
>x : Symbol(x, Decl(file2.ts, 0, 8))
=== c:/root/folder2/file3.ts ===
export var x = 1;
>x : Symbol(x, Decl(file3.ts, 0, 10))

View File

@@ -0,0 +1,28 @@
=== c:/root/folder1/file1.ts ===
// user defined base url
import {x} from "folder2/file2"
>x : number
declare function use(a: any): void;
>use : (a: any) => void
>a : any
use(x.toExponential());
>use(x.toExponential()) : void
>use : (a: any) => void
>x.toExponential() : string
>x.toExponential : (fractionDigits?: number) => string
>x : number
>toExponential : (fractionDigits?: number) => string
=== c:/root/folder2/file2.ts ===
export {x} from "./file3"
>x : number
=== c:/root/folder2/file3.ts ===
export var x = 1;
>x : number
>1 : number

View File

@@ -0,0 +1,23 @@
//// [tests/cases/compiler/pathMappingBasedModuleResolution2.ts] ////
//// [file1.ts]
import {x} from "folder2/file2"
declare function use(a: any): void;
use(x.toExponential());
//// [file2.ts]
export {x} from "./file3"
//// [file3.ts]
export var x = 1;
//// [file3.js]
exports.x = 1;
//// [file2.js]
var file3_1 = require("./file3");
exports.x = file3_1.x;
//// [file1.js]
var file2_1 = require("folder2/file2");
use(file2_1.x.toExponential());

View File

@@ -0,0 +1,22 @@
=== tests/cases/compiler/root/folder1/file1.ts ===
import {x} from "folder2/file2"
>x : Symbol(x, Decl(file1.ts, 0, 8))
declare function use(a: any): void;
>use : Symbol(use, Decl(file1.ts, 0, 31))
>a : Symbol(a, Decl(file1.ts, 2, 21))
use(x.toExponential());
>use : Symbol(use, Decl(file1.ts, 0, 31))
>x.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>x : Symbol(x, Decl(file1.ts, 0, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
=== tests/cases/compiler/root/folder2/file2.ts ===
export {x} from "./file3"
>x : Symbol(x, Decl(file2.ts, 0, 8))
=== tests/cases/compiler/root/folder2/file3.ts ===
export var x = 1;
>x : Symbol(x, Decl(file3.ts, 0, 10))

View File

@@ -0,0 +1,25 @@
=== tests/cases/compiler/root/folder1/file1.ts ===
import {x} from "folder2/file2"
>x : number
declare function use(a: any): void;
>use : (a: any) => void
>a : any
use(x.toExponential());
>use(x.toExponential()) : void
>use : (a: any) => void
>x.toExponential() : string
>x.toExponential : (fractionDigits?: number) => string
>x : number
>toExponential : (fractionDigits?: number) => string
=== tests/cases/compiler/root/folder2/file2.ts ===
export {x} from "./file3"
>x : number
=== tests/cases/compiler/root/folder2/file3.ts ===
export var x = 1;
>x : number
>1 : number

View File

@@ -0,0 +1,23 @@
//// [tests/cases/compiler/pathMappingBasedModuleResolution2_1.ts] ////
//// [file1.ts]
import {x} from "folder2/file2"
declare function use(a: any): void;
use(x.toExponential());
//// [file2.ts]
export {x} from "./file3"
//// [file3.ts]
export var x = 1;
//// [file3.js]
exports.x = 1;
//// [file2.js]
var file3_1 = require("./file3");
exports.x = file3_1.x;
//// [file1.js]
var file2_1 = require("folder2/file2");
use(file2_1.x.toExponential());

View File

@@ -0,0 +1,22 @@
=== c:/root/folder1/file1.ts ===
import {x} from "folder2/file2"
>x : Symbol(x, Decl(file1.ts, 0, 8))
declare function use(a: any): void;
>use : Symbol(use, Decl(file1.ts, 0, 31))
>a : Symbol(a, Decl(file1.ts, 2, 21))
use(x.toExponential());
>use : Symbol(use, Decl(file1.ts, 0, 31))
>x.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>x : Symbol(x, Decl(file1.ts, 0, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
=== c:/root/folder2/file2.ts ===
export {x} from "./file3"
>x : Symbol(x, Decl(file2.ts, 0, 8))
=== c:/root/folder2/file3.ts ===
export var x = 1;
>x : Symbol(x, Decl(file3.ts, 0, 10))

View File

@@ -0,0 +1,25 @@
=== c:/root/folder1/file1.ts ===
import {x} from "folder2/file2"
>x : number
declare function use(a: any): void;
>use : (a: any) => void
>a : any
use(x.toExponential());
>use(x.toExponential()) : void
>use : (a: any) => void
>x.toExponential() : string
>x.toExponential : (fractionDigits?: number) => string
>x : number
>toExponential : (fractionDigits?: number) => string
=== c:/root/folder2/file2.ts ===
export {x} from "./file3"
>x : number
=== c:/root/folder2/file3.ts ===
export var x = 1;
>x : number
>1 : number

View File

@@ -0,0 +1,23 @@
//// [tests/cases/compiler/pathMappingBasedModuleResolution3.ts] ////
//// [file1.ts]
import {x} from "folder2/file2"
declare function use(a: any): void;
use(x.toExponential());
//// [file2.ts]
export {x} from "./file3"
//// [file3.ts]
export var x = 1;
//// [file3.js]
exports.x = 1;
//// [file2.js]
var file3_1 = require("./file3");
exports.x = file3_1.x;
//// [file1.js]
var file2_1 = require("folder2/file2");
use(file2_1.x.toExponential());

View File

@@ -0,0 +1,22 @@
=== tests/cases/compiler/root/src/folder1/file1.ts ===
import {x} from "folder2/file2"
>x : Symbol(x, Decl(file1.ts, 0, 8))
declare function use(a: any): void;
>use : Symbol(use, Decl(file1.ts, 0, 31))
>a : Symbol(a, Decl(file1.ts, 2, 21))
use(x.toExponential());
>use : Symbol(use, Decl(file1.ts, 0, 31))
>x.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>x : Symbol(x, Decl(file1.ts, 0, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
=== tests/cases/compiler/root/src/folder2/file2.ts ===
export {x} from "./file3"
>x : Symbol(x, Decl(file2.ts, 0, 8))
=== tests/cases/compiler/root/src/folder2/file3.ts ===
export var x = 1;
>x : Symbol(x, Decl(file3.ts, 0, 10))

View File

@@ -0,0 +1,25 @@
=== tests/cases/compiler/root/src/folder1/file1.ts ===
import {x} from "folder2/file2"
>x : number
declare function use(a: any): void;
>use : (a: any) => void
>a : any
use(x.toExponential());
>use(x.toExponential()) : void
>use : (a: any) => void
>x.toExponential() : string
>x.toExponential : (fractionDigits?: number) => string
>x : number
>toExponential : (fractionDigits?: number) => string
=== tests/cases/compiler/root/src/folder2/file2.ts ===
export {x} from "./file3"
>x : number
=== tests/cases/compiler/root/src/folder2/file3.ts ===
export var x = 1;
>x : number
>1 : number

View File

@@ -0,0 +1,23 @@
//// [tests/cases/compiler/pathMappingBasedModuleResolution3_1.ts] ////
//// [file1.ts]
import {x} from "folder2/file2"
declare function use(a: any): void;
use(x.toExponential());
//// [file2.ts]
export {x} from "./file3"
//// [file3.ts]
export var x = 1;
//// [file3.js]
exports.x = 1;
//// [file2.js]
var file3_1 = require("./file3");
exports.x = file3_1.x;
//// [file1.js]
var file2_1 = require("folder2/file2");
use(file2_1.x.toExponential());

View File

@@ -0,0 +1,22 @@
=== c:/root/src/folder1/file1.ts ===
import {x} from "folder2/file2"
>x : Symbol(x, Decl(file1.ts, 0, 8))
declare function use(a: any): void;
>use : Symbol(use, Decl(file1.ts, 0, 31))
>a : Symbol(a, Decl(file1.ts, 2, 21))
use(x.toExponential());
>use : Symbol(use, Decl(file1.ts, 0, 31))
>x.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>x : Symbol(x, Decl(file1.ts, 0, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
=== c:/root/src/folder2/file2.ts ===
export {x} from "./file3"
>x : Symbol(x, Decl(file2.ts, 0, 8))
=== c:/root/src/folder2/file3.ts ===
export var x = 1;
>x : Symbol(x, Decl(file3.ts, 0, 10))

View File

@@ -0,0 +1,25 @@
=== c:/root/src/folder1/file1.ts ===
import {x} from "folder2/file2"
>x : number
declare function use(a: any): void;
>use : (a: any) => void
>a : any
use(x.toExponential());
>use(x.toExponential()) : void
>use : (a: any) => void
>x.toExponential() : string
>x.toExponential : (fractionDigits?: number) => string
>x : number
>toExponential : (fractionDigits?: number) => string
=== c:/root/src/folder2/file2.ts ===
export {x} from "./file3"
>x : number
=== c:/root/src/folder2/file3.ts ===
export var x = 1;
>x : number
>1 : number

View File

@@ -0,0 +1,27 @@
//// [tests/cases/compiler/pathMappingBasedModuleResolution4.ts] ////
//// [file1.ts]
import {x} from "folder2/file2"
declare function use(a: any): void;
use(x.toExponential());
//// [file2.ts]
export {x} from "./file3"
//// [file3.ts]
export var x = 1;
//// [file3.js]
define(["require", "exports"], function (require, exports) {
exports.x = 1;
});
//// [file2.js]
define(["require", "exports", "./file3"], function (require, exports, file3_1) {
exports.x = file3_1.x;
});
//// [file1.js]
define(["require", "exports", "folder2/file2"], function (require, exports, file2_1) {
use(file2_1.x.toExponential());
});

View File

@@ -0,0 +1,22 @@
=== tests/cases/compiler/root/src/folder1/file1.ts ===
import {x} from "folder2/file2"
>x : Symbol(x, Decl(file1.ts, 0, 8))
declare function use(a: any): void;
>use : Symbol(use, Decl(file1.ts, 0, 31))
>a : Symbol(a, Decl(file1.ts, 2, 21))
use(x.toExponential());
>use : Symbol(use, Decl(file1.ts, 0, 31))
>x.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>x : Symbol(x, Decl(file1.ts, 0, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
=== tests/cases/compiler/root/src/folder2/file2.ts ===
export {x} from "./file3"
>x : Symbol(x, Decl(file2.ts, 0, 8))
=== tests/cases/compiler/root/src/folder2/file3.ts ===
export var x = 1;
>x : Symbol(x, Decl(file3.ts, 0, 10))

View File

@@ -0,0 +1,25 @@
=== tests/cases/compiler/root/src/folder1/file1.ts ===
import {x} from "folder2/file2"
>x : number
declare function use(a: any): void;
>use : (a: any) => void
>a : any
use(x.toExponential());
>use(x.toExponential()) : void
>use : (a: any) => void
>x.toExponential() : string
>x.toExponential : (fractionDigits?: number) => string
>x : number
>toExponential : (fractionDigits?: number) => string
=== tests/cases/compiler/root/src/folder2/file2.ts ===
export {x} from "./file3"
>x : number
=== tests/cases/compiler/root/src/folder2/file3.ts ===
export var x = 1;
>x : number
>1 : number

View File

@@ -0,0 +1,27 @@
//// [tests/cases/compiler/pathMappingBasedModuleResolution4_1.ts] ////
//// [file1.ts]
import {x} from "folder2/file2"
declare function use(a: any): void;
use(x.toExponential());
//// [file2.ts]
export {x} from "./file3"
//// [file3.ts]
export var x = 1;
//// [file3.js]
define(["require", "exports"], function (require, exports) {
exports.x = 1;
});
//// [file2.js]
define(["require", "exports", "./file3"], function (require, exports, file3_1) {
exports.x = file3_1.x;
});
//// [file1.js]
define(["require", "exports", "folder2/file2"], function (require, exports, file2_1) {
use(file2_1.x.toExponential());
});

View File

@@ -0,0 +1,22 @@
=== c:/root/src/folder1/file1.ts ===
import {x} from "folder2/file2"
>x : Symbol(x, Decl(file1.ts, 0, 8))
declare function use(a: any): void;
>use : Symbol(use, Decl(file1.ts, 0, 31))
>a : Symbol(a, Decl(file1.ts, 2, 21))
use(x.toExponential());
>use : Symbol(use, Decl(file1.ts, 0, 31))
>x.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>x : Symbol(x, Decl(file1.ts, 0, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
=== c:/root/src/folder2/file2.ts ===
export {x} from "./file3"
>x : Symbol(x, Decl(file2.ts, 0, 8))
=== c:/root/src/folder2/file3.ts ===
export var x = 1;
>x : Symbol(x, Decl(file3.ts, 0, 10))

View File

@@ -0,0 +1,25 @@
=== c:/root/src/folder1/file1.ts ===
import {x} from "folder2/file2"
>x : number
declare function use(a: any): void;
>use : (a: any) => void
>a : any
use(x.toExponential());
>use(x.toExponential()) : void
>use : (a: any) => void
>x.toExponential() : string
>x.toExponential : (fractionDigits?: number) => string
>x : number
>toExponential : (fractionDigits?: number) => string
=== c:/root/src/folder2/file2.ts ===
export {x} from "./file3"
>x : number
=== c:/root/src/folder2/file3.ts ===
export var x = 1;
>x : number
>1 : number

View File

@@ -0,0 +1,6 @@
error TS5059: Module resolution kind cannot be determined automatically. Please specify module resolution explicitly via 'moduleResolution' option.
!!! error TS5059: Module resolution kind cannot be determined automatically. Please specify module resolution explicitly via 'moduleResolution' option.
==== tests/cases/compiler/root/src/folder1/file1.ts (0 errors) ====
export var x = 1;

View File

@@ -0,0 +1,5 @@
//// [file1.ts]
export var x = 1;
//// [file1.js]
exports.x = 1;

View File

@@ -0,0 +1,8 @@
error TS5056: Pattern '*1*' can have at most one '*' character
error TS5057: Substitution '*2*' in pattern '*1*' in can have at most one '*' character
!!! error TS5056: Pattern '*1*' can have at most one '*' character
!!! error TS5057: Substitution '*2*' in pattern '*1*' in can have at most one '*' character
==== tests/cases/compiler/root/src/folder1/file1.ts (0 errors) ====
export var x = 1;

View File

@@ -0,0 +1,7 @@
//// [file1.ts]
export var x = 1;
//// [file1.js]
define(["require", "exports"], function (require, exports) {
exports.x = 1;
});

View File

@@ -0,0 +1,40 @@
//// [tests/cases/compiler/pathMappingBasedModuleResolution7.ts] ////
//// [file1.ts]
import {x} from "folder2/file1"
import {y} from "folder3/file2"
import {z} from "components/file3"
declare function use(a: any): void;
use(x.toExponential());
use(y.toExponential());
use(z.toExponential());
//// [file1.ts]
export var x = 1;
//// [file2.ts]
export var y = 1;
//// [file3.ts]
export var z = 1;
//// [file1.js]
define(["require", "exports"], function (require, exports) {
exports.x = 1;
});
//// [file2.js]
define(["require", "exports"], function (require, exports) {
exports.y = 1;
});
//// [file3.js]
define(["require", "exports"], function (require, exports) {
exports.z = 1;
});
//// [file1.js]
define(["require", "exports", "folder2/file1", "folder3/file2", "components/file3"], function (require, exports, file1_1, file2_1, file3_1) {
use(file1_1.x.toExponential());
use(file2_1.y.toExponential());
use(file3_1.z.toExponential());
});

View File

@@ -0,0 +1,44 @@
=== tests/cases/compiler/root/folder1/file1.ts ===
import {x} from "folder2/file1"
>x : Symbol(x, Decl(file1.ts, 0, 8))
import {y} from "folder3/file2"
>y : Symbol(y, Decl(file1.ts, 1, 8))
import {z} from "components/file3"
>z : Symbol(z, Decl(file1.ts, 2, 8))
declare function use(a: any): void;
>use : Symbol(use, Decl(file1.ts, 2, 34))
>a : Symbol(a, Decl(file1.ts, 4, 21))
use(x.toExponential());
>use : Symbol(use, Decl(file1.ts, 2, 34))
>x.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>x : Symbol(x, Decl(file1.ts, 0, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
use(y.toExponential());
>use : Symbol(use, Decl(file1.ts, 2, 34))
>y.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>y : Symbol(y, Decl(file1.ts, 1, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
use(z.toExponential());
>use : Symbol(use, Decl(file1.ts, 2, 34))
>z.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>z : Symbol(z, Decl(file1.ts, 2, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
=== tests/cases/compiler/root/folder2/file1.ts ===
export var x = 1;
>x : Symbol(x, Decl(file1.ts, 0, 10))
=== tests/cases/compiler/root/generated/folder3/file2.ts ===
export var y = 1;
>y : Symbol(y, Decl(file2.ts, 0, 10))
=== tests/cases/compiler/root/shared/components/file3.ts ===
export var z = 1;
>z : Symbol(z, Decl(file3.ts, 0, 10))

View File

@@ -0,0 +1,53 @@
=== tests/cases/compiler/root/folder1/file1.ts ===
import {x} from "folder2/file1"
>x : number
import {y} from "folder3/file2"
>y : number
import {z} from "components/file3"
>z : number
declare function use(a: any): void;
>use : (a: any) => void
>a : any
use(x.toExponential());
>use(x.toExponential()) : void
>use : (a: any) => void
>x.toExponential() : string
>x.toExponential : (fractionDigits?: number) => string
>x : number
>toExponential : (fractionDigits?: number) => string
use(y.toExponential());
>use(y.toExponential()) : void
>use : (a: any) => void
>y.toExponential() : string
>y.toExponential : (fractionDigits?: number) => string
>y : number
>toExponential : (fractionDigits?: number) => string
use(z.toExponential());
>use(z.toExponential()) : void
>use : (a: any) => void
>z.toExponential() : string
>z.toExponential : (fractionDigits?: number) => string
>z : number
>toExponential : (fractionDigits?: number) => string
=== tests/cases/compiler/root/folder2/file1.ts ===
export var x = 1;
>x : number
>1 : number
=== tests/cases/compiler/root/generated/folder3/file2.ts ===
export var y = 1;
>y : number
>1 : number
=== tests/cases/compiler/root/shared/components/file3.ts ===
export var z = 1;
>z : number
>1 : number

View File

@@ -0,0 +1,40 @@
//// [tests/cases/compiler/pathMappingBasedModuleResolution7_1.ts] ////
//// [file1.ts]
import {x} from "folder2/file1"
import {y} from "folder3/file2"
import {z} from "components/file3"
declare function use(a: any): void;
use(x.toExponential());
use(y.toExponential());
use(z.toExponential());
//// [file1.ts]
export var x = 1;
//// [file2.ts]
export var y = 1;
//// [file3.ts]
export var z = 1;
//// [file1.js]
define(["require", "exports"], function (require, exports) {
exports.x = 1;
});
//// [file2.js]
define(["require", "exports"], function (require, exports) {
exports.y = 1;
});
//// [file3.js]
define(["require", "exports"], function (require, exports) {
exports.z = 1;
});
//// [file1.js]
define(["require", "exports", "folder2/file1", "folder3/file2", "components/file3"], function (require, exports, file1_1, file2_1, file3_1) {
use(file1_1.x.toExponential());
use(file2_1.y.toExponential());
use(file3_1.z.toExponential());
});

View File

@@ -0,0 +1,44 @@
=== c:/root/folder1/file1.ts ===
import {x} from "folder2/file1"
>x : Symbol(x, Decl(file1.ts, 0, 8))
import {y} from "folder3/file2"
>y : Symbol(y, Decl(file1.ts, 1, 8))
import {z} from "components/file3"
>z : Symbol(z, Decl(file1.ts, 2, 8))
declare function use(a: any): void;
>use : Symbol(use, Decl(file1.ts, 2, 34))
>a : Symbol(a, Decl(file1.ts, 4, 21))
use(x.toExponential());
>use : Symbol(use, Decl(file1.ts, 2, 34))
>x.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>x : Symbol(x, Decl(file1.ts, 0, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
use(y.toExponential());
>use : Symbol(use, Decl(file1.ts, 2, 34))
>y.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>y : Symbol(y, Decl(file1.ts, 1, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
use(z.toExponential());
>use : Symbol(use, Decl(file1.ts, 2, 34))
>z.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>z : Symbol(z, Decl(file1.ts, 2, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
=== c:/root/folder2/file1.ts ===
export var x = 1;
>x : Symbol(x, Decl(file1.ts, 0, 10))
=== c:/root/generated/folder3/file2.ts ===
export var y = 1;
>y : Symbol(y, Decl(file2.ts, 0, 10))
=== c:/root/shared/components/file3.ts ===
export var z = 1;
>z : Symbol(z, Decl(file3.ts, 0, 10))

View File

@@ -0,0 +1,53 @@
=== c:/root/folder1/file1.ts ===
import {x} from "folder2/file1"
>x : number
import {y} from "folder3/file2"
>y : number
import {z} from "components/file3"
>z : number
declare function use(a: any): void;
>use : (a: any) => void
>a : any
use(x.toExponential());
>use(x.toExponential()) : void
>use : (a: any) => void
>x.toExponential() : string
>x.toExponential : (fractionDigits?: number) => string
>x : number
>toExponential : (fractionDigits?: number) => string
use(y.toExponential());
>use(y.toExponential()) : void
>use : (a: any) => void
>y.toExponential() : string
>y.toExponential : (fractionDigits?: number) => string
>y : number
>toExponential : (fractionDigits?: number) => string
use(z.toExponential());
>use(z.toExponential()) : void
>use : (a: any) => void
>z.toExponential() : string
>z.toExponential : (fractionDigits?: number) => string
>z : number
>toExponential : (fractionDigits?: number) => string
=== c:/root/folder2/file1.ts ===
export var x = 1;
>x : number
>1 : number
=== c:/root/generated/folder3/file2.ts ===
export var y = 1;
>y : number
>1 : number
=== c:/root/shared/components/file3.ts ===
export var z = 1;
>z : number
>1 : number

View File

@@ -0,0 +1,50 @@
//// [tests/cases/compiler/pathMappingBasedModuleResolution7_2.ts] ////
//// [file1.ts]
import {x} from "folder2/file1"
import {y} from "folder3/file2"
import {z} from "components/file3"
import {z1} from "file4"
declare function use(a: any): void;
use(x.toExponential());
use(y.toExponential());
use(z.toExponential());
use(z1.toExponential());
//// [file1.ts]
export var x = 1;
//// [file2.ts]
export var y = 1;
//// [file3.ts]
export var z = 1;
//// [file4.ts]
export var z1 = 1;
//// [file1.js]
define(["require", "exports"], function (require, exports) {
exports.x = 1;
});
//// [file2.js]
define(["require", "exports"], function (require, exports) {
exports.y = 1;
});
//// [file3.js]
define(["require", "exports"], function (require, exports) {
exports.z = 1;
});
//// [file4.js]
define(["require", "exports"], function (require, exports) {
exports.z1 = 1;
});
//// [file1.js]
define(["require", "exports", "folder2/file1", "folder3/file2", "components/file3", "file4"], function (require, exports, file1_1, file2_1, file3_1, file4_1) {
use(file1_1.x.toExponential());
use(file2_1.y.toExponential());
use(file3_1.z.toExponential());
use(file4_1.z1.toExponential());
});

View File

@@ -0,0 +1,57 @@
=== c:/root/folder1/file1.ts ===
import {x} from "folder2/file1"
>x : Symbol(x, Decl(file1.ts, 0, 8))
import {y} from "folder3/file2"
>y : Symbol(y, Decl(file1.ts, 1, 8))
import {z} from "components/file3"
>z : Symbol(z, Decl(file1.ts, 2, 8))
import {z1} from "file4"
>z1 : Symbol(z1, Decl(file1.ts, 3, 8))
declare function use(a: any): void;
>use : Symbol(use, Decl(file1.ts, 3, 24))
>a : Symbol(a, Decl(file1.ts, 5, 21))
use(x.toExponential());
>use : Symbol(use, Decl(file1.ts, 3, 24))
>x.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>x : Symbol(x, Decl(file1.ts, 0, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
use(y.toExponential());
>use : Symbol(use, Decl(file1.ts, 3, 24))
>y.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>y : Symbol(y, Decl(file1.ts, 1, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
use(z.toExponential());
>use : Symbol(use, Decl(file1.ts, 3, 24))
>z.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>z : Symbol(z, Decl(file1.ts, 2, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
use(z1.toExponential());
>use : Symbol(use, Decl(file1.ts, 3, 24))
>z1.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>z1 : Symbol(z1, Decl(file1.ts, 3, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
=== c:/root/folder2/file1.ts ===
export var x = 1;
>x : Symbol(x, Decl(file1.ts, 0, 10))
=== c:/root/generated/folder3/file2.ts ===
export var y = 1;
>y : Symbol(y, Decl(file2.ts, 0, 10))
=== c:/root/shared/components/file3.ts ===
export var z = 1;
>z : Symbol(z, Decl(file3.ts, 0, 10))
=== c:/sharedrepo/file4.ts ===
export var z1 = 1;
>z1 : Symbol(z1, Decl(file4.ts, 0, 10))

View File

@@ -0,0 +1,69 @@
=== c:/root/folder1/file1.ts ===
import {x} from "folder2/file1"
>x : number
import {y} from "folder3/file2"
>y : number
import {z} from "components/file3"
>z : number
import {z1} from "file4"
>z1 : number
declare function use(a: any): void;
>use : (a: any) => void
>a : any
use(x.toExponential());
>use(x.toExponential()) : void
>use : (a: any) => void
>x.toExponential() : string
>x.toExponential : (fractionDigits?: number) => string
>x : number
>toExponential : (fractionDigits?: number) => string
use(y.toExponential());
>use(y.toExponential()) : void
>use : (a: any) => void
>y.toExponential() : string
>y.toExponential : (fractionDigits?: number) => string
>y : number
>toExponential : (fractionDigits?: number) => string
use(z.toExponential());
>use(z.toExponential()) : void
>use : (a: any) => void
>z.toExponential() : string
>z.toExponential : (fractionDigits?: number) => string
>z : number
>toExponential : (fractionDigits?: number) => string
use(z1.toExponential());
>use(z1.toExponential()) : void
>use : (a: any) => void
>z1.toExponential() : string
>z1.toExponential : (fractionDigits?: number) => string
>z1 : number
>toExponential : (fractionDigits?: number) => string
=== c:/root/folder2/file1.ts ===
export var x = 1;
>x : number
>1 : number
=== c:/root/generated/folder3/file2.ts ===
export var y = 1;
>y : number
>1 : number
=== c:/root/shared/components/file3.ts ===
export var z = 1;
>z : number
>1 : number
=== c:/sharedrepo/file4.ts ===
export var z1 = 1;
>z1 : number
>1 : number

View File

@@ -0,0 +1,40 @@
//// [tests/cases/compiler/pathMappingBasedModuleResolution8.ts] ////
//// [file1.ts]
import {x} from "folder2/file1"
import {y} from "folder3/file2"
import {z} from "components/file3"
declare function use(a: any): void;
use(x.toExponential());
use(y.toExponential());
use(z.toExponential());
//// [file1.ts]
export var x = 1;
//// [file2.ts]
export var y = 1;
//// [file3.ts]
export var z = 1;
//// [file1.js]
define(["require", "exports"], function (require, exports) {
exports.x = 1;
});
//// [file2.js]
define(["require", "exports"], function (require, exports) {
exports.y = 1;
});
//// [file3.js]
define(["require", "exports"], function (require, exports) {
exports.z = 1;
});
//// [file1.js]
define(["require", "exports", "folder2/file1", "folder3/file2", "components/file3"], function (require, exports, file1_1, file2_1, file3_1) {
use(file1_1.x.toExponential());
use(file2_1.y.toExponential());
use(file3_1.z.toExponential());
});

View File

@@ -0,0 +1,44 @@
=== tests/cases/compiler/root/folder1/file1.ts ===
import {x} from "folder2/file1"
>x : Symbol(x, Decl(file1.ts, 0, 8))
import {y} from "folder3/file2"
>y : Symbol(y, Decl(file1.ts, 1, 8))
import {z} from "components/file3"
>z : Symbol(z, Decl(file1.ts, 2, 8))
declare function use(a: any): void;
>use : Symbol(use, Decl(file1.ts, 2, 34))
>a : Symbol(a, Decl(file1.ts, 4, 21))
use(x.toExponential());
>use : Symbol(use, Decl(file1.ts, 2, 34))
>x.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>x : Symbol(x, Decl(file1.ts, 0, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
use(y.toExponential());
>use : Symbol(use, Decl(file1.ts, 2, 34))
>y.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>y : Symbol(y, Decl(file1.ts, 1, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
use(z.toExponential());
>use : Symbol(use, Decl(file1.ts, 2, 34))
>z.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>z : Symbol(z, Decl(file1.ts, 2, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
=== tests/cases/compiler/root/src/folder2/file1.ts ===
export var x = 1;
>x : Symbol(x, Decl(file1.ts, 0, 10))
=== tests/cases/compiler/root/src/generated/folder3/file2.ts ===
export var y = 1;
>y : Symbol(y, Decl(file2.ts, 0, 10))
=== tests/cases/compiler/root/src/shared/components/file3.ts ===
export var z = 1;
>z : Symbol(z, Decl(file3.ts, 0, 10))

View File

@@ -0,0 +1,53 @@
=== tests/cases/compiler/root/folder1/file1.ts ===
import {x} from "folder2/file1"
>x : number
import {y} from "folder3/file2"
>y : number
import {z} from "components/file3"
>z : number
declare function use(a: any): void;
>use : (a: any) => void
>a : any
use(x.toExponential());
>use(x.toExponential()) : void
>use : (a: any) => void
>x.toExponential() : string
>x.toExponential : (fractionDigits?: number) => string
>x : number
>toExponential : (fractionDigits?: number) => string
use(y.toExponential());
>use(y.toExponential()) : void
>use : (a: any) => void
>y.toExponential() : string
>y.toExponential : (fractionDigits?: number) => string
>y : number
>toExponential : (fractionDigits?: number) => string
use(z.toExponential());
>use(z.toExponential()) : void
>use : (a: any) => void
>z.toExponential() : string
>z.toExponential : (fractionDigits?: number) => string
>z : number
>toExponential : (fractionDigits?: number) => string
=== tests/cases/compiler/root/src/folder2/file1.ts ===
export var x = 1;
>x : number
>1 : number
=== tests/cases/compiler/root/src/generated/folder3/file2.ts ===
export var y = 1;
>y : number
>1 : number
=== tests/cases/compiler/root/src/shared/components/file3.ts ===
export var z = 1;
>z : number
>1 : number

View File

@@ -0,0 +1,50 @@
//// [tests/cases/compiler/pathMappingBasedModuleResolution8_1.ts] ////
//// [file1.ts]
import {x} from "folder2/file1"
import {y} from "folder3/file2"
import {z} from "components/file3"
import {z1} from "file4"
declare function use(a: any): void;
use(x.toExponential());
use(y.toExponential());
use(z.toExponential());
use(z1.toExponential());
//// [file1.ts]
export var x = 1;
//// [file2.ts]
export var y = 1;
//// [file3.ts]
export var z = 1;
//// [file4.ts]
export var z1 = 1;
//// [file1.js]
define(["require", "exports"], function (require, exports) {
exports.x = 1;
});
//// [file2.js]
define(["require", "exports"], function (require, exports) {
exports.y = 1;
});
//// [file3.js]
define(["require", "exports"], function (require, exports) {
exports.z = 1;
});
//// [file4.js]
define(["require", "exports"], function (require, exports) {
exports.z1 = 1;
});
//// [file1.js]
define(["require", "exports", "folder2/file1", "folder3/file2", "components/file3", "file4"], function (require, exports, file1_1, file2_1, file3_1, file4_1) {
use(file1_1.x.toExponential());
use(file2_1.y.toExponential());
use(file3_1.z.toExponential());
use(file4_1.z1.toExponential());
});

View File

@@ -0,0 +1,57 @@
=== c:/root/folder1/file1.ts ===
import {x} from "folder2/file1"
>x : Symbol(x, Decl(file1.ts, 0, 8))
import {y} from "folder3/file2"
>y : Symbol(y, Decl(file1.ts, 1, 8))
import {z} from "components/file3"
>z : Symbol(z, Decl(file1.ts, 2, 8))
import {z1} from "file4"
>z1 : Symbol(z1, Decl(file1.ts, 3, 8))
declare function use(a: any): void;
>use : Symbol(use, Decl(file1.ts, 3, 24))
>a : Symbol(a, Decl(file1.ts, 5, 21))
use(x.toExponential());
>use : Symbol(use, Decl(file1.ts, 3, 24))
>x.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>x : Symbol(x, Decl(file1.ts, 0, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
use(y.toExponential());
>use : Symbol(use, Decl(file1.ts, 3, 24))
>y.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>y : Symbol(y, Decl(file1.ts, 1, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
use(z.toExponential());
>use : Symbol(use, Decl(file1.ts, 3, 24))
>z.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>z : Symbol(z, Decl(file1.ts, 2, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
use(z1.toExponential());
>use : Symbol(use, Decl(file1.ts, 3, 24))
>z1.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>z1 : Symbol(z1, Decl(file1.ts, 3, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
=== c:/root/src/folder2/file1.ts ===
export var x = 1;
>x : Symbol(x, Decl(file1.ts, 0, 10))
=== c:/root/src/generated/folder3/file2.ts ===
export var y = 1;
>y : Symbol(y, Decl(file2.ts, 0, 10))
=== c:/root/src/shared/components/file3.ts ===
export var z = 1;
>z : Symbol(z, Decl(file3.ts, 0, 10))
=== c:/sharedrepo/file4.ts ===
export var z1 = 1;
>z1 : Symbol(z1, Decl(file4.ts, 0, 10))

View File

@@ -0,0 +1,69 @@
=== c:/root/folder1/file1.ts ===
import {x} from "folder2/file1"
>x : number
import {y} from "folder3/file2"
>y : number
import {z} from "components/file3"
>z : number
import {z1} from "file4"
>z1 : number
declare function use(a: any): void;
>use : (a: any) => void
>a : any
use(x.toExponential());
>use(x.toExponential()) : void
>use : (a: any) => void
>x.toExponential() : string
>x.toExponential : (fractionDigits?: number) => string
>x : number
>toExponential : (fractionDigits?: number) => string
use(y.toExponential());
>use(y.toExponential()) : void
>use : (a: any) => void
>y.toExponential() : string
>y.toExponential : (fractionDigits?: number) => string
>y : number
>toExponential : (fractionDigits?: number) => string
use(z.toExponential());
>use(z.toExponential()) : void
>use : (a: any) => void
>z.toExponential() : string
>z.toExponential : (fractionDigits?: number) => string
>z : number
>toExponential : (fractionDigits?: number) => string
use(z1.toExponential());
>use(z1.toExponential()) : void
>use : (a: any) => void
>z1.toExponential() : string
>z1.toExponential : (fractionDigits?: number) => string
>z1 : number
>toExponential : (fractionDigits?: number) => string
=== c:/root/src/folder2/file1.ts ===
export var x = 1;
>x : number
>1 : number
=== c:/root/src/generated/folder3/file2.ts ===
export var y = 1;
>y : number
>1 : number
=== c:/root/src/shared/components/file3.ts ===
export var z = 1;
>z : number
>1 : number
=== c:/sharedrepo/file4.ts ===
export var z1 = 1;
>z1 : number
>1 : number

View File

@@ -0,0 +1,47 @@
//// [tests/cases/compiler/pathMappingBasedModuleResolution9.ts] ////
//// [file1.ts]
import {x} from "folder2/file1"
import {y} from "folder3/file2"
import {z} from "components/file3"
declare function use(a: any): void;
use(x.toExponential());
use(y.toExponential());
use(z.toExponential());
//// [file1.ts]
export var x = 1;
//// [file2.ts]
export var y = 1;
//// [file3.ts]
export {z} from "./file4"
//// [file4.ts]
export var z = 1;
//// [file1.js]
define(["require", "exports"], function (require, exports) {
exports.x = 1;
});
//// [file2.js]
define(["require", "exports"], function (require, exports) {
exports.y = 1;
});
//// [file4.js]
define(["require", "exports"], function (require, exports) {
exports.z = 1;
});
//// [file3.js]
define(["require", "exports", "./file4"], function (require, exports, file4_1) {
exports.z = file4_1.z;
});
//// [file1.js]
define(["require", "exports", "folder2/file1", "folder3/file2", "components/file3"], function (require, exports, file1_1, file2_1, file3_1) {
use(file1_1.x.toExponential());
use(file2_1.y.toExponential());
use(file3_1.z.toExponential());
});

View File

@@ -0,0 +1,48 @@
=== tests/cases/compiler/root/folder1/file1.ts ===
import {x} from "folder2/file1"
>x : Symbol(x, Decl(file1.ts, 0, 8))
import {y} from "folder3/file2"
>y : Symbol(y, Decl(file1.ts, 1, 8))
import {z} from "components/file3"
>z : Symbol(z, Decl(file1.ts, 2, 8))
declare function use(a: any): void;
>use : Symbol(use, Decl(file1.ts, 2, 34))
>a : Symbol(a, Decl(file1.ts, 4, 21))
use(x.toExponential());
>use : Symbol(use, Decl(file1.ts, 2, 34))
>x.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>x : Symbol(x, Decl(file1.ts, 0, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
use(y.toExponential());
>use : Symbol(use, Decl(file1.ts, 2, 34))
>y.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>y : Symbol(y, Decl(file1.ts, 1, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
use(z.toExponential());
>use : Symbol(use, Decl(file1.ts, 2, 34))
>z.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>z : Symbol(z, Decl(file1.ts, 2, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
=== tests/cases/compiler/root/src/folder2/file1.ts ===
export var x = 1;
>x : Symbol(x, Decl(file1.ts, 0, 10))
=== tests/cases/compiler/root/src/generated/folder3/file2.ts ===
export var y = 1;
>y : Symbol(y, Decl(file2.ts, 0, 10))
=== tests/cases/compiler/root/src/shared/components/file3.ts ===
export {z} from "./file4"
>z : Symbol(z, Decl(file3.ts, 0, 8))
=== tests/cases/compiler/root/src/shared/components/file4.ts ===
export var z = 1;
>z : Symbol(z, Decl(file4.ts, 0, 10))

View File

@@ -0,0 +1,57 @@
=== tests/cases/compiler/root/folder1/file1.ts ===
import {x} from "folder2/file1"
>x : number
import {y} from "folder3/file2"
>y : number
import {z} from "components/file3"
>z : number
declare function use(a: any): void;
>use : (a: any) => void
>a : any
use(x.toExponential());
>use(x.toExponential()) : void
>use : (a: any) => void
>x.toExponential() : string
>x.toExponential : (fractionDigits?: number) => string
>x : number
>toExponential : (fractionDigits?: number) => string
use(y.toExponential());
>use(y.toExponential()) : void
>use : (a: any) => void
>y.toExponential() : string
>y.toExponential : (fractionDigits?: number) => string
>y : number
>toExponential : (fractionDigits?: number) => string
use(z.toExponential());
>use(z.toExponential()) : void
>use : (a: any) => void
>z.toExponential() : string
>z.toExponential : (fractionDigits?: number) => string
>z : number
>toExponential : (fractionDigits?: number) => string
=== tests/cases/compiler/root/src/folder2/file1.ts ===
export var x = 1;
>x : number
>1 : number
=== tests/cases/compiler/root/src/generated/folder3/file2.ts ===
export var y = 1;
>y : number
>1 : number
=== tests/cases/compiler/root/src/shared/components/file3.ts ===
export {z} from "./file4"
>z : number
=== tests/cases/compiler/root/src/shared/components/file4.ts ===
export var z = 1;
>z : number
>1 : number

View File

@@ -0,0 +1,57 @@
//// [tests/cases/compiler/pathMappingBasedModuleResolution9_1.ts] ////
//// [file1.ts]
import {x} from "folder2/file1"
import {y} from "folder3/file2"
import {z} from "components/file3"
import {z1} from "my/file4"
declare function use(a: any): void;
use(x.toExponential());
use(y.toExponential());
use(z.toExponential());
use(z1.toExponential());
//// [file1.ts]
export var x = 1;
//// [file2.ts]
export var y = 1;
//// [file3.ts]
export {z} from "./file4"
//// [file4.ts]
export var z = 1;
//// [file4.ts]
export var z1 = 1;
//// [file1.js]
define(["require", "exports"], function (require, exports) {
exports.x = 1;
});
//// [file2.js]
define(["require", "exports"], function (require, exports) {
exports.y = 1;
});
//// [file4.js]
define(["require", "exports"], function (require, exports) {
exports.z = 1;
});
//// [file3.js]
define(["require", "exports", "./file4"], function (require, exports, file4_1) {
exports.z = file4_1.z;
});
//// [file4.js]
define(["require", "exports"], function (require, exports) {
exports.z1 = 1;
});
//// [file1.js]
define(["require", "exports", "folder2/file1", "folder3/file2", "components/file3", "my/file4"], function (require, exports, file1_1, file2_1, file3_1, file4_1) {
use(file1_1.x.toExponential());
use(file2_1.y.toExponential());
use(file3_1.z.toExponential());
use(file4_1.z1.toExponential());
});

View File

@@ -0,0 +1,61 @@
=== c:/root/folder1/file1.ts ===
import {x} from "folder2/file1"
>x : Symbol(x, Decl(file1.ts, 0, 8))
import {y} from "folder3/file2"
>y : Symbol(y, Decl(file1.ts, 1, 8))
import {z} from "components/file3"
>z : Symbol(z, Decl(file1.ts, 2, 8))
import {z1} from "my/file4"
>z1 : Symbol(z1, Decl(file1.ts, 3, 8))
declare function use(a: any): void;
>use : Symbol(use, Decl(file1.ts, 3, 27))
>a : Symbol(a, Decl(file1.ts, 5, 21))
use(x.toExponential());
>use : Symbol(use, Decl(file1.ts, 3, 27))
>x.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>x : Symbol(x, Decl(file1.ts, 0, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
use(y.toExponential());
>use : Symbol(use, Decl(file1.ts, 3, 27))
>y.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>y : Symbol(y, Decl(file1.ts, 1, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
use(z.toExponential());
>use : Symbol(use, Decl(file1.ts, 3, 27))
>z.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>z : Symbol(z, Decl(file1.ts, 2, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
use(z1.toExponential());
>use : Symbol(use, Decl(file1.ts, 3, 27))
>z1.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>z1 : Symbol(z1, Decl(file1.ts, 3, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
=== c:/root/src/folder2/file1.ts ===
export var x = 1;
>x : Symbol(x, Decl(file1.ts, 0, 10))
=== c:/root/src/generated/folder3/file2.ts ===
export var y = 1;
>y : Symbol(y, Decl(file2.ts, 0, 10))
=== c:/root/src/shared/components/file3.ts ===
export {z} from "./file4"
>z : Symbol(z, Decl(file3.ts, 0, 8))
=== c:/root/src/shared/components/file4.ts ===
export var z = 1;
>z : Symbol(z, Decl(file4.ts, 0, 10))
=== c:/sharedrepo/my/file4.ts ===
export var z1 = 1;
>z1 : Symbol(z1, Decl(file4.ts, 0, 10))

View File

@@ -0,0 +1,73 @@
=== c:/root/folder1/file1.ts ===
import {x} from "folder2/file1"
>x : number
import {y} from "folder3/file2"
>y : number
import {z} from "components/file3"
>z : number
import {z1} from "my/file4"
>z1 : number
declare function use(a: any): void;
>use : (a: any) => void
>a : any
use(x.toExponential());
>use(x.toExponential()) : void
>use : (a: any) => void
>x.toExponential() : string
>x.toExponential : (fractionDigits?: number) => string
>x : number
>toExponential : (fractionDigits?: number) => string
use(y.toExponential());
>use(y.toExponential()) : void
>use : (a: any) => void
>y.toExponential() : string
>y.toExponential : (fractionDigits?: number) => string
>y : number
>toExponential : (fractionDigits?: number) => string
use(z.toExponential());
>use(z.toExponential()) : void
>use : (a: any) => void
>z.toExponential() : string
>z.toExponential : (fractionDigits?: number) => string
>z : number
>toExponential : (fractionDigits?: number) => string
use(z1.toExponential());
>use(z1.toExponential()) : void
>use : (a: any) => void
>z1.toExponential() : string
>z1.toExponential : (fractionDigits?: number) => string
>z1 : number
>toExponential : (fractionDigits?: number) => string
=== c:/root/src/folder2/file1.ts ===
export var x = 1;
>x : number
>1 : number
=== c:/root/src/generated/folder3/file2.ts ===
export var y = 1;
>y : number
>1 : number
=== c:/root/src/shared/components/file3.ts ===
export {z} from "./file4"
>z : number
=== c:/root/src/shared/components/file4.ts ===
export var z = 1;
>z : number
>1 : number
=== c:/sharedrepo/my/file4.ts ===
export var z1 = 1;
>z1 : number
>1 : number

View File

@@ -0,0 +1,57 @@
//// [tests/cases/compiler/pathMappingBasedModuleResolution9_2.ts] ////
//// [file1.ts]
import {x} from "folder2/file1"
import {y} from "folder3/file2"
import {z} from "components/file3"
import {z1} from "my/file4"
declare function use(a: any): void;
use(x.toExponential());
use(y.toExponential());
use(z.toExponential());
use(z1.toExponential());
//// [file1.ts]
export var x = 1;
//// [file2.ts]
export var y = 1;
//// [file3.ts]
export {z} from "./file4"
//// [file4.ts]
export var z = 1;
//// [file4.ts]
export var z1 = 1;
//// [file1.js]
define(["require", "exports"], function (require, exports) {
exports.x = 1;
});
//// [file2.js]
define(["require", "exports"], function (require, exports) {
exports.y = 1;
});
//// [file4.js]
define(["require", "exports"], function (require, exports) {
exports.z = 1;
});
//// [file3.js]
define(["require", "exports", "./file4"], function (require, exports, file4_1) {
exports.z = file4_1.z;
});
//// [file4.js]
define(["require", "exports"], function (require, exports) {
exports.z1 = 1;
});
//// [file1.js]
define(["require", "exports", "folder2/file1", "folder3/file2", "components/file3", "my/file4"], function (require, exports, file1_1, file2_1, file3_1, file4_1) {
use(file1_1.x.toExponential());
use(file2_1.y.toExponential());
use(file3_1.z.toExponential());
use(file4_1.z1.toExponential());
});

View File

@@ -0,0 +1,61 @@
=== c:/root/folder1/file1.ts ===
import {x} from "folder2/file1"
>x : Symbol(x, Decl(file1.ts, 0, 8))
import {y} from "folder3/file2"
>y : Symbol(y, Decl(file1.ts, 1, 8))
import {z} from "components/file3"
>z : Symbol(z, Decl(file1.ts, 2, 8))
import {z1} from "my/file4"
>z1 : Symbol(z1, Decl(file1.ts, 3, 8))
declare function use(a: any): void;
>use : Symbol(use, Decl(file1.ts, 3, 27))
>a : Symbol(a, Decl(file1.ts, 5, 21))
use(x.toExponential());
>use : Symbol(use, Decl(file1.ts, 3, 27))
>x.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>x : Symbol(x, Decl(file1.ts, 0, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
use(y.toExponential());
>use : Symbol(use, Decl(file1.ts, 3, 27))
>y.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>y : Symbol(y, Decl(file1.ts, 1, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
use(z.toExponential());
>use : Symbol(use, Decl(file1.ts, 3, 27))
>z.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>z : Symbol(z, Decl(file1.ts, 2, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
use(z1.toExponential());
>use : Symbol(use, Decl(file1.ts, 3, 27))
>z1.toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
>z1 : Symbol(z1, Decl(file1.ts, 3, 8))
>toExponential : Symbol(Number.toExponential, Decl(lib.d.ts, --, --))
=== c:/base/folder2/file1.ts ===
export var x = 1;
>x : Symbol(x, Decl(file1.ts, 0, 10))
=== c:/base/generated/folder3/file2.ts ===
export var y = 1;
>y : Symbol(y, Decl(file2.ts, 0, 10))
=== c:/base/shared/components/file3.ts ===
export {z} from "./file4"
>z : Symbol(z, Decl(file3.ts, 0, 8))
=== c:/base/shared/components/file4.ts ===
export var z = 1;
>z : Symbol(z, Decl(file4.ts, 0, 10))
=== c:/sharedrepo/my/file4.ts ===
export var z1 = 1;
>z1 : Symbol(z1, Decl(file4.ts, 0, 10))

View File

@@ -0,0 +1,73 @@
=== c:/root/folder1/file1.ts ===
import {x} from "folder2/file1"
>x : number
import {y} from "folder3/file2"
>y : number
import {z} from "components/file3"
>z : number
import {z1} from "my/file4"
>z1 : number
declare function use(a: any): void;
>use : (a: any) => void
>a : any
use(x.toExponential());
>use(x.toExponential()) : void
>use : (a: any) => void
>x.toExponential() : string
>x.toExponential : (fractionDigits?: number) => string
>x : number
>toExponential : (fractionDigits?: number) => string
use(y.toExponential());
>use(y.toExponential()) : void
>use : (a: any) => void
>y.toExponential() : string
>y.toExponential : (fractionDigits?: number) => string
>y : number
>toExponential : (fractionDigits?: number) => string
use(z.toExponential());
>use(z.toExponential()) : void
>use : (a: any) => void
>z.toExponential() : string
>z.toExponential : (fractionDigits?: number) => string
>z : number
>toExponential : (fractionDigits?: number) => string
use(z1.toExponential());
>use(z1.toExponential()) : void
>use : (a: any) => void
>z1.toExponential() : string
>z1.toExponential : (fractionDigits?: number) => string
>z1 : number
>toExponential : (fractionDigits?: number) => string
=== c:/base/folder2/file1.ts ===
export var x = 1;
>x : number
>1 : number
=== c:/base/generated/folder3/file2.ts ===
export var y = 1;
>y : number
>1 : number
=== c:/base/shared/components/file3.ts ===
export {z} from "./file4"
>z : number
=== c:/base/shared/components/file4.ts ===
export var z = 1;
>z : number
>1 : number
=== c:/sharedrepo/my/file4.ts ===
export var z1 = 1;
>z1 : number
>1 : number

View File

@@ -0,0 +1,18 @@
// @moduleResolution: baseUrl
// @module: commonjs
// @baseUrl: root
// user defined base url
// @filename: root/folder1/file1.ts
import {x} from "folder2/file2"
declare function use(a: any): void;
use(x.toExponential());
// @filename: root/folder2/file2.ts
export {x} from "./file3"
// @filename: root/folder2/file3.ts
export var x = 1;

View File

@@ -0,0 +1,34 @@
// @module: amd
// paths\rootDirs is defined in tsconfig.json
// baseUrl is inferred from tsconfig.json
// @filename: root/tsconfig.json
{
"compilerOptions": {
"paths": {
"*": [
"*",
"generated/*"
]
},
"rootDirs": [
".",
"./generated"
]
}
}
// @filename: root/folder1/file1.ts
import {x} from "./file2" // should be resolved to 'generated/folder1/file2.ts'
export var z = x.toExponential();
// @filename: root/generated/folder1/file2.ts
export {x} from "folder1/file3" // should be resolved to 'folder1/file3.ts'
// @filename: root/folder1/file3.ts
export var x = 1;
// @filename: root/generated/folder2/file3.ts
import {z as y} from "../folder1/file1" // should be resolved to 'folder1/file1.ts'
let z = y.toLowerCase();

View File

@@ -0,0 +1,35 @@
// @module: amd
// paths\rootDirs is defined in tsconfig.json
// baseUrl is inferred from tsconfig.json
// @filename: c:/root/tsconfig.json
{
"compilerOptions": {
"paths": {
"*": [
"*",
"generated/*"
]
},
"rootDirs": [
".",
"./generated"
]
}
}
// @filename: c:/root/generated/folder1/file2.ts
export {x} from "folder1/file3" // should be resolved to 'folder1/file3.ts'
// @filename: c:/root/folder1/file3.ts
export var x = 1;
// @filename: c:/root/generated/folder2/file3.ts
import {z as y} from "../folder1/file1" // should be resolved to 'folder1/file1.ts'
let z = y.toLowerCase();
// @filename: c:/root/folder1/file1.ts
import {x} from "./file2" // should be resolved to 'generated/folder1/file2.ts'
export var z = x.toExponential();

View File

@@ -0,0 +1,36 @@
// @module: amd
// paths\rootDirs is defined in tsconfig.json
// baseUrl is defined in tsconfig.json
// @filename: c:/root/tsconfig.json
{
"compilerOptions": {
"baseUrl": "./src",
"paths": {
"*": [
"*",
"generated/*"
]
},
"rootDirs": [
".",
"./generated"
]
}
}
// @filename: c:/root/src/generated/folder1/file2.ts
export {x} from "folder1/file3" // should be resolved to 'folder1/file3.ts'
// @filename: c:/root/src/folder1/file3.ts
export var x = 1;
// @filename: c:/root/src/generated/folder2/file3.ts
import {z as y} from "../folder1/file1" // should be resolved to 'folder1/file1.ts'
let z = y.toLowerCase();
// @filename: c:/root/src/folder1/file1.ts
import {x} from "./file2" // should be resolved to 'generated/folder1/file2.ts'
export var z = x.toExponential();

View File

@@ -0,0 +1,18 @@
// @moduleResolution: baseUrl
// @module: commonjs
// @baseUrl: c:/root
// user defined base url
// @filename: c:/root/folder1/file1.ts
import {x} from "folder2/file2"
declare function use(a: any): void;
use(x.toExponential());
// @filename: c:/root/folder2/file2.ts
export {x} from "./file3"
// @filename: c:/root/folder2/file3.ts
export var x = 1;

View File

@@ -0,0 +1,22 @@
// @module: commonjs
// location of tsconfig.json as baseurl
// @filename: root/tsconfig.json
{
"compilerOptions": {
"moduleResolution": "baseUrl"
}
}
// @filename: root/folder1/file1.ts
import {x} from "folder2/file2"
declare function use(a: any): void;
use(x.toExponential());
// @filename: root/folder2/file2.ts
export {x} from "./file3"
// @filename: root/folder2/file3.ts
export var x = 1;

View File

@@ -0,0 +1,22 @@
// @module: commonjs
// location of tsconfig.json as baseurl
// @filename: c:/root/tsconfig.json
{
"compilerOptions": {
"moduleResolution": "baseUrl"
}
}
// @filename: c:/root/folder1/file1.ts
import {x} from "folder2/file2"
declare function use(a: any): void;
use(x.toExponential());
// @filename: c:/root/folder2/file2.ts
export {x} from "./file3"
// @filename: c:/root/folder2/file3.ts
export var x = 1;

View File

@@ -0,0 +1,23 @@
// @module: commonjs
// baseurl is defined in tsconfig.json
// @filename: root/tsconfig.json
{
"compilerOptions": {
"moduleResolution": "baseUrl",
"baseUrl": "./src"
}
}
// @filename: root/src/folder1/file1.ts
import {x} from "folder2/file2"
declare function use(a: any): void;
use(x.toExponential());
// @filename: root/src/folder2/file2.ts
export {x} from "./file3"
// @filename: root/src/folder2/file3.ts
export var x = 1;

View File

@@ -0,0 +1,23 @@
// @module: commonjs
// baseurl is defined in tsconfig.json
// @filename: c:/root/tsconfig.json
{
"compilerOptions": {
"moduleResolution": "baseUrl",
"baseUrl": "./src"
}
}
// @filename: c:/root/src/folder1/file1.ts
import {x} from "folder2/file2"
declare function use(a: any): void;
use(x.toExponential());
// @filename: c:/root/src/folder2/file2.ts
export {x} from "./file3"
// @filename: c:/root/src/folder2/file3.ts
export var x = 1;

View File

@@ -0,0 +1,23 @@
// @module: amd
// baseurl is defined in tsconfig.json
// module resolution kind is inferred from settings (baseurl is specified)
// @filename: root/tsconfig.json
{
"compilerOptions": {
"baseUrl": "./src"
}
}
// @filename: root/src/folder1/file1.ts
import {x} from "folder2/file2"
declare function use(a: any): void;
use(x.toExponential());
// @filename: root/src/folder2/file2.ts
export {x} from "./file3"
// @filename: root/src/folder2/file3.ts
export var x = 1;

View File

@@ -0,0 +1,23 @@
// @module: amd
// baseurl is defined in tsconfig.json
// module resolution kind is inferred from settings (baseurl is specified)
// @filename: c:/root/tsconfig.json
{
"compilerOptions": {
"baseUrl": "./src"
}
}
// @filename: c:/root/src/folder1/file1.ts
import {x} from "folder2/file2"
declare function use(a: any): void;
use(x.toExponential());
// @filename: c:/root/src/folder2/file2.ts
export {x} from "./file3"
// @filename: c:/root/src/folder2/file3.ts
export var x = 1;

View File

@@ -0,0 +1,13 @@
// @module: commonjs
// baseurl is defined in tsconfig.json
// module resolution kind is ambiguous - error should be reported
// @filename: root/tsconfig.json
{
"compilerOptions": {
"baseUrl": "./src"
}
}
// @filename: root/src/folder1/file1.ts
export var x = 1;

View File

@@ -0,0 +1,17 @@
// @module: amd
// baseurl is defined in tsconfig.json
// paths has errors
// @filename: root/tsconfig.json
{
"compilerOptions": {
"baseUrl": "./src",
"paths": {
"*1*": [ "*2*" ]
}
}
}
// @filename: root/src/folder1/file1.ts
export var x = 1;

View File

@@ -0,0 +1,38 @@
// @module: amd
// paths is defined in tsconfig.json
// module resolution kind is inferred from the presence of 'paths'
// @filename: root/tsconfig.json
{
"compilerOptions": {
"paths": {
"*": [
"*",
"generated/*"
],
"components/*": [
"shared/components/*"
]
}
}
}
// @filename: root/folder1/file1.ts
import {x} from "folder2/file1"
import {y} from "folder3/file2"
import {z} from "components/file3"
declare function use(a: any): void;
use(x.toExponential());
use(y.toExponential());
use(z.toExponential());
// @filename: root/folder2/file1.ts
export var x = 1;
// @filename: root/generated/folder3/file2.ts
export var y = 1;
// @filename: root/shared/components/file3.ts
export var z = 1;

View File

@@ -0,0 +1,38 @@
// @module: amd
// paths is defined in tsconfig.json
// module resolution kind is inferred from the presence of 'paths'
// @filename: c:/root/tsconfig.json
{
"compilerOptions": {
"paths": {
"*": [
"*",
"generated/*"
],
"components/*": [
"shared/components/*"
]
}
}
}
// @filename: c:/root/folder1/file1.ts
import {x} from "folder2/file1"
import {y} from "folder3/file2"
import {z} from "components/file3"
declare function use(a: any): void;
use(x.toExponential());
use(y.toExponential());
use(z.toExponential());
// @filename: c:/root/folder2/file1.ts
export var x = 1;
// @filename: c:/root/generated/folder3/file2.ts
export var y = 1;
// @filename: c:/root/shared/components/file3.ts
export var z = 1;

View File

@@ -0,0 +1,44 @@
// @module: amd
// paths is defined in tsconfig.json
// module resolution kind is inferred from the presence of 'paths'
// @filename: c:/root/tsconfig.json
{
"compilerOptions": {
"paths": {
"*": [
"*",
"generated/*",
"c:/sharedrepo/*"
],
"components/*": [
"shared/components/*"
]
}
}
}
// @filename: c:/root/folder1/file1.ts
import {x} from "folder2/file1"
import {y} from "folder3/file2"
import {z} from "components/file3"
import {z1} from "file4"
declare function use(a: any): void;
use(x.toExponential());
use(y.toExponential());
use(z.toExponential());
use(z1.toExponential());
// @filename: c:/root/folder2/file1.ts
export var x = 1;
// @filename: c:/root/generated/folder3/file2.ts
export var y = 1;
// @filename: c:/root/shared/components/file3.ts
export var z = 1;
// @filename: c:/sharedrepo/file4.ts
export var z1 = 1;

View File

@@ -0,0 +1,39 @@
// @module: amd
// paths is defined in tsconfig.json
// baseUrl is specified in tsconfig.json
// @filename: root/tsconfig.json
{
"compilerOptions": {
"baseUrl": "./src",
"paths": {
"*": [
"*",
"generated/*"
],
"components/*": [
"shared/components/*"
]
}
}
}
// @filename: root/folder1/file1.ts
import {x} from "folder2/file1"
import {y} from "folder3/file2"
import {z} from "components/file3"
declare function use(a: any): void;
use(x.toExponential());
use(y.toExponential());
use(z.toExponential());
// @filename: root/src/folder2/file1.ts
export var x = 1;
// @filename: root/src/generated/folder3/file2.ts
export var y = 1;
// @filename: root/src/shared/components/file3.ts
export var z = 1;

View File

@@ -0,0 +1,45 @@
// @module: amd
// paths is defined in tsconfig.json
// baseUrl is specified in tsconfig.json
// @filename: c:/root/tsconfig.json
{
"compilerOptions": {
"baseUrl": "./src",
"paths": {
"*": [
"*",
"generated/*",
"c:/sharedrepo/*"
],
"components/*": [
"shared/components/*"
]
}
}
}
// @filename: c:/root/folder1/file1.ts
import {x} from "folder2/file1"
import {y} from "folder3/file2"
import {z} from "components/file3"
import {z1} from "file4"
declare function use(a: any): void;
use(x.toExponential());
use(y.toExponential());
use(z.toExponential());
use(z1.toExponential());
// @filename: c:/root/src/folder2/file1.ts
export var x = 1;
// @filename: c:/root/src/generated/folder3/file2.ts
export var y = 1;
// @filename: c:/root/src/shared/components/file3.ts
export var z = 1;
// @filename: c:/sharedrepo/file4.ts
export var z1 = 1;

View File

@@ -0,0 +1,42 @@
// @module: amd
// paths is defined in tsconfig.json
// baseUrl is specified in tsconfig.json
// @filename: root/tsconfig.json
{
"compilerOptions": {
"baseUrl": "./src",
"paths": {
"*": [
"*",
"generated/*"
],
"components/*": [
"shared/components/*"
]
}
}
}
// @filename: root/folder1/file1.ts
import {x} from "folder2/file1"
import {y} from "folder3/file2"
import {z} from "components/file3"
declare function use(a: any): void;
use(x.toExponential());
use(y.toExponential());
use(z.toExponential());
// @filename: root/src/folder2/file1.ts
export var x = 1;
// @filename: root/src/generated/folder3/file2.ts
export var y = 1;
// @filename: root/src/shared/components/file3.ts
export {z} from "./file4"
// @filename: root/src/shared/components/file4.ts
export var z = 1;

View File

@@ -0,0 +1,48 @@
// @module: amd
// paths is defined in tsconfig.json
// baseUrl is specified in tsconfig.json
// @filename: c:/root/tsconfig.json
{
"compilerOptions": {
"baseUrl": "./src",
"paths": {
"*": [
"*",
"generated/*",
"c:/sharedrepo/*"
],
"components/*": [
"shared/components/*"
]
}
}
}
// @filename: c:/root/folder1/file1.ts
import {x} from "folder2/file1"
import {y} from "folder3/file2"
import {z} from "components/file3"
import {z1} from "my/file4"
declare function use(a: any): void;
use(x.toExponential());
use(y.toExponential());
use(z.toExponential());
use(z1.toExponential());
// @filename: c:/root/src/folder2/file1.ts
export var x = 1;
// @filename: c:/root/src/generated/folder3/file2.ts
export var y = 1;
// @filename: c:/root/src/shared/components/file3.ts
export {z} from "./file4"
// @filename: c:/root/src/shared/components/file4.ts
export var z = 1;
// @filename: c:/sharedrepo/my/file4.ts
export var z1 = 1;

View File

@@ -0,0 +1,48 @@
// @module: amd
// paths is defined in tsconfig.json
// baseUrl is specified in tsconfig.json and it is absolute
// @filename: c:/root/tsconfig.json
{
"compilerOptions": {
"baseUrl": "c:/base",
"paths": {
"*": [
"*",
"generated/*",
"c:/sharedrepo/*"
],
"components/*": [
"shared/components/*"
]
}
}
}
// @filename: c:/root/folder1/file1.ts
import {x} from "folder2/file1"
import {y} from "folder3/file2"
import {z} from "components/file3"
import {z1} from "my/file4"
declare function use(a: any): void;
use(x.toExponential());
use(y.toExponential());
use(z.toExponential());
use(z1.toExponential());
// @filename: c:/base/folder2/file1.ts
export var x = 1;
// @filename: c:/base/generated/folder3/file2.ts
export var y = 1;
// @filename: c:/base/shared/components/file3.ts
export {z} from "./file4"
// @filename: c:/base/shared/components/file4.ts
export var z = 1;
// @filename: c:/sharedrepo/my/file4.ts
export var z1 = 1;

View File

@@ -381,4 +381,132 @@ import b = require("./moduleB.ts");
test(files, { module: ts.ModuleKind.CommonJS, forceConsistentCasingInFileNames: true }, "/a/B/c", /* useCaseSensitiveFileNames */ false, ["moduleD.ts"], []);
})
});
describe("baseUrl module resolution", () => {
it("module resolution without path mappings/rootDirs", () => {
const file1: File = { name: "/root/folder1/file1.ts" };
const file2: File = { name: "/root/folder2/file2.ts" };
const file3: File = { name: "/root/folder2/file3.ts" };
const host = createModuleResolutionHost(file1, file2, file3);
const options: CompilerOptions = { moduleResolution: ModuleResolutionKind.BaseUrl, baseUrl: "/root" };
{
const result = baseUrlModuleNameResolver("folder2/file2", file1.name, options, host);
assert.isTrue(result.resolvedModule !== undefined, "module should be resolved");
assert.equal(result.resolvedModule.resolvedFileName, file2.name);
assert.deepEqual(result.failedLookupLocations, []);
}
{
const result = baseUrlModuleNameResolver("./file3", file2.name, options, host);
assert.isTrue(result.resolvedModule !== undefined, "module should be resolved");
assert.equal(result.resolvedModule.resolvedFileName, file3.name);
assert.deepEqual(result.failedLookupLocations, []);
}
{
const result = baseUrlModuleNameResolver(file1.name, file2.name, options, host);
assert.isTrue(result.resolvedModule !== undefined, "module should be resolved");
assert.equal(result.resolvedModule.resolvedFileName, file1.name);
assert.deepEqual(result.failedLookupLocations, []);
}
// add failure tests
});
it("module resolution with path mappings", () => {
const file1: File = { name: "/root/folder1/file1.ts" };
const file2: File = { name: "/root/folder1/file2.ts" }
const file3: File = { name: "/root/generated/folder1/file3.ts" }
const file4: File = { name: "/root/generated/folder2/file4.ts" }
const file5: File = { name: "/root/someanotherfolder/file5.ts" }
const host = createModuleResolutionHost(file1, file2, file3, file4, file5);
const options: CompilerOptions = {
moduleResolution: ModuleResolutionKind.BaseUrl,
baseUrl: "/root",
paths: {
"*": [
"*",
"generated/*"
],
"somefolder/*": [
"someanotherfolder/*"
]
}
};
{
const result = baseUrlModuleNameResolver("folder1/file2", file1.name, options, host);
assert.isTrue(result.resolvedModule !== undefined, "module should be resolved");
assert.equal(result.resolvedModule.resolvedFileName, file2.name);
assert.deepEqual(result.failedLookupLocations, []);
}
{
const result = baseUrlModuleNameResolver("./file2", file1.name, options, host);
assert.isTrue(result.resolvedModule !== undefined, "module should be resolved");
assert.equal(result.resolvedModule.resolvedFileName, file2.name);
assert.deepEqual(result.failedLookupLocations, []);
}
{
const result = baseUrlModuleNameResolver("folder1/file3", file1.name, options, host);
assert.isTrue(result.resolvedModule !== undefined, "module should be resolved");
assert.equal(result.resolvedModule.resolvedFileName, file3.name);
// non-empty because it tries to use '*' match first
assert.deepEqual(result.failedLookupLocations, [
"/root/folder1/file3.ts",
"/root/folder1/file3.tsx",
"/root/folder1/file3.d.ts",
]);
}
{
const result = baseUrlModuleNameResolver("folder2/file4", file1.name, options, host);
assert.isTrue(result.resolvedModule !== undefined, "module should be resolved");
assert.equal(result.resolvedModule.resolvedFileName, file4.name);
assert.deepEqual(result.failedLookupLocations, [
"/root/folder2/file4.ts",
"/root/folder2/file4.tsx",
"/root/folder2/file4.d.ts",
]);
}
{
const result = baseUrlModuleNameResolver("somefolder/file5", file1.name, options, host);
assert.isTrue(result.resolvedModule !== undefined, "module should be resolved");
assert.equal(result.resolvedModule.resolvedFileName, file5.name);
assert.deepEqual(result.failedLookupLocations, []);
}
// add failure tests
});
it ("module resolution with path mappings and root dirs", () => {
let file1: File = { name: "/root/folder1/file1.ts" };
let file2: File = { name: "/root/generated/folder1/file2.ts" };
let file3: File = { name: "/root/generated/folder2/file3.ts" };
const host = createModuleResolutionHost(file1, file2, file3);
const options: CompilerOptions = {
moduleResolution: ModuleResolutionKind.BaseUrl,
baseUrl: "/root",
paths: {
"*": [
"*",
"generated/*"
]
},
rootDirs: [
".",
"./generated/"
]
};
{
const result = baseUrlModuleNameResolver("./file2", file1.name, options, host);
assert.isTrue(result.resolvedModule !== undefined, "module should be resolved");
assert.equal(result.resolvedModule.resolvedFileName, file2.name);
assert.deepEqual(result.failedLookupLocations, [
"/root/folder1/file2.ts",
"/root/folder1/file2.tsx",
"/root/folder1/file2.d.ts",
]);
}
{
const result = baseUrlModuleNameResolver("../folder1/file1", file3.name, options, host);
assert.isTrue(result.resolvedModule !== undefined, "module should be resolved");
assert.equal(result.resolvedModule.resolvedFileName, file1.name);
assert.deepEqual(result.failedLookupLocations, []);
}
});
})
}