From 9827b638b4d1a8f3b36fd3e64a46563927c0b326 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Fri, 10 Jun 2016 15:44:11 -0700 Subject: [PATCH 1/7] Implicit type inclusion changes --- src/compiler/commandLineParser.ts | 8 +- src/compiler/diagnosticMessages.json | 4 + src/compiler/program.ts | 96 +++++++++---------- src/compiler/types.ts | 7 +- src/harness/fourslash.ts | 4 +- src/harness/harness.ts | 59 ++++++++---- src/harness/harnessLanguageService.ts | 21 ++-- src/harness/projectsRunner.ts | 3 +- src/server/editorServices.ts | 4 + src/services/services.ts | 10 +- tests/baselines/reference/commonSourceDir5.js | 1 + .../reference/commonSourceDir5.symbols | 9 +- .../reference/commonSourceDir5.types | 1 + .../reference/library-reference-1.symbols | 4 +- .../reference/library-reference-1.trace.json | 15 ++- .../reference/library-reference-1.types | 4 +- .../reference/library-reference-10.symbols | 4 +- .../reference/library-reference-10.trace.json | 18 ++-- .../reference/library-reference-10.types | 4 +- .../reference/library-reference-11.trace.json | 14 +-- .../reference/library-reference-12.trace.json | 14 +-- .../reference/library-reference-13.trace.json | 4 +- .../reference/library-reference-14.trace.json | 4 +- .../reference/library-reference-15.errors.txt | 14 +-- .../reference/library-reference-15.js | 11 ++- .../reference/library-reference-15.trace.json | 27 +----- .../reference/library-reference-2.trace.json | 10 +- .../reference/library-reference-3.trace.json | 15 +-- .../reference/library-reference-4.trace.json | 48 +++------- .../reference/library-reference-5.trace.json | 78 ++++++++------- .../reference/library-reference-6.symbols | 16 ---- .../reference/library-reference-6.trace.json | 31 +++++- .../reference/library-reference-6.types | 16 ---- .../reference/library-reference-7.trace.json | 14 +-- .../reference/library-reference-8.symbols | 6 +- .../reference/library-reference-8.trace.json | 50 ++++++---- .../reference/library-reference-8.types | 6 +- .../reference/library-reference-9.js | 16 ---- .../reference/library-reference-9.symbols | 16 ---- .../reference/library-reference-9.trace.json | 7 -- .../reference/library-reference-9.types | 16 ---- .../moduleResolutionWithSymlinks.errors.txt | 21 ++++ .../moduleResolutionWithSymlinks.symbols | 36 ------- .../moduleResolutionWithSymlinks.trace.json | 42 +++++++- .../moduleResolutionWithSymlinks.types | 38 -------- ...pingBasedModuleResolution3_node.trace.json | 3 + ...pingBasedModuleResolution4_node.trace.json | 3 + ...pingBasedModuleResolution5_node.trace.json | 4 + ...pingBasedModuleResolution6_node.trace.json | 2 + ...pingBasedModuleResolution7_node.trace.json | 5 + .../typeReferenceDirectives1.trace.json | 9 +- .../typeReferenceDirectives10.trace.json | 12 ++- .../typeReferenceDirectives11.trace.json | 5 +- .../typeReferenceDirectives12.trace.json | 14 ++- .../typeReferenceDirectives13.trace.json | 12 ++- .../typeReferenceDirectives2.trace.json | 4 +- .../typeReferenceDirectives3.trace.json | 9 +- .../typeReferenceDirectives4.trace.json | 9 +- .../typeReferenceDirectives5.trace.json | 12 ++- .../typeReferenceDirectives6.trace.json | 9 +- .../typeReferenceDirectives7.trace.json | 9 +- .../typeReferenceDirectives8.trace.json | 5 +- .../typeReferenceDirectives9.trace.json | 14 ++- tests/baselines/reference/typingsLookup1.js | 2 + .../reference/typingsLookup1.symbols | 5 +- .../reference/typingsLookup1.trace.json | 18 ++++ .../baselines/reference/typingsLookup1.types | 5 +- tests/cases/compiler/commonSourceDir5.ts | 1 + .../compiler/typeReferenceDirectives1.ts | 2 +- .../compiler/typeReferenceDirectives10.ts | 2 +- .../compiler/typeReferenceDirectives11.ts | 2 +- .../compiler/typeReferenceDirectives12.ts | 2 +- .../compiler/typeReferenceDirectives13.ts | 2 +- .../compiler/typeReferenceDirectives2.ts | 2 +- .../compiler/typeReferenceDirectives3.ts | 2 +- .../compiler/typeReferenceDirectives4.ts | 2 +- .../compiler/typeReferenceDirectives5.ts | 2 +- .../compiler/typeReferenceDirectives6.ts | 2 +- .../compiler/typeReferenceDirectives7.ts | 2 +- .../compiler/typeReferenceDirectives8.ts | 2 +- .../compiler/typeReferenceDirectives9.ts | 2 +- .../references/library-reference-1.ts | 7 +- .../references/library-reference-10.ts | 9 +- .../references/library-reference-13.ts | 3 +- .../references/library-reference-14.ts | 3 +- .../references/library-reference-15.ts | 8 +- .../references/library-reference-2.ts | 3 +- .../references/library-reference-3.ts | 2 +- .../references/library-reference-4.ts | 3 +- .../references/library-reference-5.ts | 1 + .../references/library-reference-6.ts | 6 +- .../references/library-reference-8.ts | 9 +- .../references/library-reference-9.ts | 20 ---- .../conformance/typings/typingsLookup1.ts | 8 +- .../goToDefinitionTypeReferenceDirective.ts | 2 +- .../goToDefinitionTypeReferenceDirective.ts | 2 +- .../goToDefinitionTypeReferenceDirective.ts | 4 +- tests/cases/unittests/moduleResolution.ts | 29 +++--- .../cases/unittests/reuseProgramStructure.ts | 5 +- 99 files changed, 605 insertions(+), 562 deletions(-) delete mode 100644 tests/baselines/reference/library-reference-6.symbols delete mode 100644 tests/baselines/reference/library-reference-6.types delete mode 100644 tests/baselines/reference/library-reference-9.js delete mode 100644 tests/baselines/reference/library-reference-9.symbols delete mode 100644 tests/baselines/reference/library-reference-9.trace.json delete mode 100644 tests/baselines/reference/library-reference-9.types create mode 100644 tests/baselines/reference/moduleResolutionWithSymlinks.errors.txt delete mode 100644 tests/baselines/reference/moduleResolutionWithSymlinks.symbols delete mode 100644 tests/baselines/reference/moduleResolutionWithSymlinks.types create mode 100644 tests/baselines/reference/typingsLookup1.trace.json delete mode 100644 tests/cases/conformance/references/library-reference-9.ts diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index 506a2d5bee42d..a79d365fdd464 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -337,8 +337,12 @@ namespace ts { } }, { - name: "typesRoot", - type: "string" + name: "typeRoots", + type: "list", + element: { + name: "typeRoots", + type: "string" + } }, { name: "types", diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 034bd27b1472a..c7052cf71fe0f 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1935,6 +1935,10 @@ "category": "Error", "code": 2687 }, + "Cannot find type definition file for '{0}'.": { + "category": "Error", + "code": 2688 + }, "Import declaration '{0}' is using private name '{1}'.": { "category": "Error", "code": 4000 diff --git a/src/compiler/program.ts b/src/compiler/program.ts index bab554927e726..f7750e43002e8 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -9,16 +9,11 @@ namespace ts { /* @internal */ export let ioWriteTime = 0; /** The version of the TypeScript compiler release */ + export const version = "1.9.0"; const emptyArray: any[] = []; - const defaultLibrarySearchPaths = [ - "types/", - "node_modules/", - "node_modules/@types/", - ]; - - export const version = "1.9.0"; + const defaultTypeRoots = ["node_modules/@types"]; export function findConfigFile(searchPath: string, fileExists: (fileName: string) => boolean): string { while (true) { @@ -196,24 +191,22 @@ namespace ts { traceEnabled }; - // use typesRoot and fallback to directory that contains tsconfig or current directory if typesRoot is not set - const rootDir = options.typesRoot || (options.configFilePath ? getDirectoryPath(options.configFilePath) : (host.getCurrentDirectory && host.getCurrentDirectory())); - + const typeRoots = options.typeRoots || defaultTypeRoots; if (traceEnabled) { if (containingFile === undefined) { - if (rootDir === undefined) { + if (typeRoots === undefined) { trace(host, Diagnostics.Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set, typeReferenceDirectiveName); } else { - trace(host, Diagnostics.Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1, typeReferenceDirectiveName, rootDir); + trace(host, Diagnostics.Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1, typeReferenceDirectiveName, typeRoots); } } else { - if (rootDir === undefined) { + if (typeRoots === undefined) { trace(host, Diagnostics.Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set, typeReferenceDirectiveName, containingFile); } else { - trace(host, Diagnostics.Resolving_type_reference_directive_0_containing_file_1_root_directory_2, typeReferenceDirectiveName, containingFile, rootDir); + trace(host, Diagnostics.Resolving_type_reference_directive_0_containing_file_1_root_directory_2, typeReferenceDirectiveName, containingFile, typeRoots); } } } @@ -221,14 +214,13 @@ namespace ts { const failedLookupLocations: string[] = []; // Check primary library paths - if (rootDir !== undefined) { - const effectivePrimarySearchPaths = options.typesSearchPaths || defaultLibrarySearchPaths; - for (const searchPath of effectivePrimarySearchPaths) { - const primaryPath = combinePaths(rootDir, searchPath); - if (traceEnabled) { - trace(host, Diagnostics.Resolving_with_primary_search_path_0, primaryPath); - } - const candidate = combinePaths(primaryPath, typeReferenceDirectiveName); + if (typeRoots.length) { + if (traceEnabled) { + trace(host, Diagnostics.Resolving_with_primary_search_path_0, typeRoots.join(', ')); + } + const primarySearchPaths = options.typeRoots || defaultTypeRoots; + for (const typeRoot of primarySearchPaths) { + const candidate = combinePaths(typeRoot, typeReferenceDirectiveName); const candidateDirectory = getDirectoryPath(candidate); const resolvedFile = loadNodeModuleFromDirectory(typeReferenceExtensions, candidate, failedLookupLocations, !directoryProbablyExists(candidateDirectory, host), moduleResolutionState); @@ -255,9 +247,6 @@ namespace ts { if (containingFile) { initialLocationForSecondaryLookup = getDirectoryPath(containingFile); } - else { - initialLocationForSecondaryLookup = rootDir; - } if (initialLocationForSecondaryLookup !== undefined) { // check secondary locations @@ -875,19 +864,6 @@ namespace ts { } } - function getDefaultTypeDirectiveNames(rootPath: string): string[] { - const localTypes = combinePaths(rootPath, "types"); - const npmTypes = combinePaths(rootPath, "node_modules/@types"); - let result: string[] = []; - if (sys.directoryExists(localTypes)) { - result = result.concat(sys.getDirectories(localTypes)); - } - if (sys.directoryExists(npmTypes)) { - result = result.concat(sys.getDirectories(npmTypes)); - } - return result; - } - function getDefaultLibLocation(): string { return getDirectoryPath(normalizePath(sys.getExecutingFilePath())); } @@ -896,7 +872,6 @@ namespace ts { const realpath = sys.realpath && ((path: string) => sys.realpath(path)); return { - getDefaultTypeDirectiveNames, getSourceFile, getDefaultLibLocation, getDefaultLibFileName: options => combinePaths(getDefaultLibLocation(), getDefaultLibFileName(options)), @@ -909,6 +884,7 @@ namespace ts { readFile: fileName => sys.readFile(fileName), trace: (s: string) => sys.write(s + newLine), directoryExists: directoryName => sys.directoryExists(directoryName), + getDirectories: (path: string) => sys.getDirectories(path), realpath }; } @@ -972,21 +948,34 @@ namespace ts { return resolutions; } - export function getDefaultTypeDirectiveNames(options: CompilerOptions, rootFiles: string[], host: CompilerHost): string[] { + function getInferredTypesRoot(options: CompilerOptions, rootFiles: string[], host: CompilerHost) { + return computeCommonSourceDirectoryOfFilenames(rootFiles, host.getCurrentDirectory(), f => host.getCanonicalFileName(f)); + } + + /** + * Given a set of options and a set of root files, returns the set of type directive names + * that should be included for this program automatically. + * This list could either come from the config file, + * or from enumerating the types root + initial secondary types lookup location. + * More type directives might appear in the program later as a result of loading actual source files; + * this list is only the set of defaults that are implicitly included. + */ + export function getAutomaticTypeDirectiveNames(options: CompilerOptions, rootFiles: string[], host: CompilerHost): string[] { // Use explicit type list from tsconfig.json if (options.types) { return options.types; } - // or load all types from the automatic type import fields - if (host && host.getDefaultTypeDirectiveNames) { - const commonRoot = computeCommonSourceDirectoryOfFilenames(rootFiles, host.getCurrentDirectory(), f => host.getCanonicalFileName(f)); - if (commonRoot) { - return host.getDefaultTypeDirectiveNames(commonRoot); + // Walk the primary type lookup locations + let result: string[] = []; + if (host.directoryExists && host.getDirectories) { + for (const root of options.typeRoots || defaultTypeRoots) { + if (host.directoryExists(root)) { + result = result.concat(host.getDirectories(root)); + } } } - - return undefined; + return result; } export function createProgram(rootNames: string[], options: CompilerOptions, host?: CompilerHost, oldProgram?: Program): Program { @@ -1038,11 +1027,13 @@ namespace ts { if (!tryReuseStructureFromOldProgram()) { forEach(rootNames, name => processRootFile(name, /*isDefaultLib*/ false)); - // load type declarations specified via 'types' argument - const typeReferences: string[] = getDefaultTypeDirectiveNames(options, rootNames, host); + // load type declarations specified via 'types' argument or implicitly from types/ and node_modules/@types folders + const typeReferences: string[] = getAutomaticTypeDirectiveNames(options, rootNames, host); if (typeReferences) { - const resolutions = resolveTypeReferenceDirectiveNamesWorker(typeReferences, /*containingFile*/ undefined); + const inferredRoot = getInferredTypesRoot(options, rootNames, host); + const containingFilename = combinePaths(inferredRoot, "__inferred type names__.ts"); + const resolutions = resolveTypeReferenceDirectiveNamesWorker(typeReferences, containingFilename); for (let i = 0; i < typeReferences.length; i++) { processTypeReferenceDirective(typeReferences[i], resolutions[i]); } @@ -1149,10 +1140,9 @@ namespace ts { (oldOptions.jsx !== options.jsx) || (oldOptions.allowJs !== options.allowJs) || (oldOptions.rootDir !== options.rootDir) || - (oldOptions.typesSearchPaths !== options.typesSearchPaths) || (oldOptions.configFilePath !== options.configFilePath) || (oldOptions.baseUrl !== options.baseUrl) || - (oldOptions.typesRoot !== options.typesRoot) || + (oldOptions.typeRoots !== options.typeRoots) || !arrayIsEqualTo(oldOptions.rootDirs, options.rootDirs) || !mapIsEqualTo(oldOptions.paths, options.paths)) { return false; @@ -1904,7 +1894,7 @@ namespace ts { } } else { - fileProcessingDiagnostics.add(createDiagnostic(refFile, refPos, refEnd, Diagnostics.Cannot_find_name_0, typeReferenceDirective)); + fileProcessingDiagnostics.add(createDiagnostic(refFile, refPos, refEnd, Diagnostics.Cannot_find_type_definition_file_for_0, typeReferenceDirective)); } if (saveResolution) { diff --git a/src/compiler/types.ts b/src/compiler/types.ts index a86b1ed708d9f..7f53ac29eaf1f 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2496,7 +2496,6 @@ namespace ts { jsx?: JsxEmit; reactNamespace?: string; listFiles?: boolean; - typesSearchPaths?: string[]; locale?: string; mapRoot?: string; module?: ModuleKind; @@ -2555,8 +2554,8 @@ namespace ts { // When options come from a config file, its path is recorded here configFilePath?: string; /* @internal */ - // Path used to used to compute primary search locations - typesRoot?: string; + // Paths used to used to compute primary types search locations + typeRoots?: string[]; types?: string[]; list?: string[]; @@ -2861,9 +2860,9 @@ namespace ts { getCancellationToken?(): CancellationToken; getDefaultLibFileName(options: CompilerOptions): string; getDefaultLibLocation?(): string; - getDefaultTypeDirectiveNames?(rootPath: string): string[]; writeFile: WriteFileCallback; getCurrentDirectory(): string; + getDirectories(path: string): string[]; getCanonicalFileName(fileName: string): string; useCaseSensitiveFileNames(): boolean; getNewLine(): string; diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index c05fca5bb472a..8104f11339223 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -246,8 +246,8 @@ namespace FourSlash { // Create a new Services Adapter this.cancellationToken = new TestCancellationToken(); const compilationOptions = convertGlobalOptionsToCompilerOptions(this.testData.globalOptions); - if (compilationOptions.typesRoot) { - compilationOptions.typesRoot = ts.getNormalizedAbsolutePath(compilationOptions.typesRoot, this.basePath); + if (compilationOptions.typeRoots) { + compilationOptions.typeRoots = compilationOptions.typeRoots.map(p => ts.getNormalizedAbsolutePath(p, this.basePath)); } const languageServiceAdapter = this.getLanguageServiceAdapter(testType, this.cancellationToken, compilationOptions); diff --git a/src/harness/harness.ts b/src/harness/harness.ts index 5fe5b84ac9148..37066abd9bdf7 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -432,6 +432,7 @@ namespace Harness { readFile(path: string): string; writeFile(path: string, contents: string): void; directoryName(path: string): string; + getDirectories(path: string): string[]; createDirectory(path: string): void; fileExists(fileName: string): boolean; directoryExists(path: string): boolean; @@ -477,6 +478,7 @@ namespace Harness { export const readFile: typeof IO.readFile = path => ts.sys.readFile(path); export const writeFile: typeof IO.writeFile = (path, content) => ts.sys.writeFile(path, content); export const directoryName: typeof IO.directoryName = fso.GetParentFolderName; + export const getDirectories: typeof IO.getDirectories = dir => ts.sys.getDirectories(dir); export const directoryExists: typeof IO.directoryExists = fso.FolderExists; export const fileExists: typeof IO.fileExists = fso.FileExists; export const log: typeof IO.log = global.WScript && global.WScript.StdOut.WriteLine; @@ -543,6 +545,7 @@ namespace Harness { export const args = () => ts.sys.args; export const getExecutingFilePath = () => ts.sys.getExecutingFilePath(); export const exit = (exitCode: number) => ts.sys.exit(exitCode); + export const getDirectories: typeof IO.getDirectories = path => ts.sys.getDirectories(path); export const readFile: typeof IO.readFile = path => ts.sys.readFile(path); export const writeFile: typeof IO.writeFile = (path, content) => ts.sys.writeFile(path, content); @@ -616,6 +619,7 @@ namespace Harness { export const args = () => []; export const getExecutingFilePath = () => ""; export const exit = (exitCode: number) => { }; + export const getDirectories = () => []; export let log = (s: string) => console.log(s); @@ -861,7 +865,7 @@ namespace Harness { // Local get canonical file name function, that depends on passed in parameter for useCaseSensitiveFileNames const getCanonicalFileName = ts.createGetCanonicalFileName(useCaseSensitiveFileNames); - let realPathMap: ts.FileMap; + const realPathMap: ts.FileMap = ts.createFileMap(); const fileMap: ts.FileMap<() => ts.SourceFile> = ts.createFileMap<() => ts.SourceFile>(); for (const file of inputFiles) { if (file.content !== undefined) { @@ -870,9 +874,6 @@ namespace Harness { if (file.fileOptions && file.fileOptions["symlink"]) { const link = file.fileOptions["symlink"]; const linkPath = ts.toPath(link, currentDirectory, getCanonicalFileName); - if (!realPathMap) { - realPathMap = ts.createFileMap(); - } realPathMap.set(linkPath, fileName); fileMap.set(path, (): ts.SourceFile => { throw new Error("Symlinks should always be resolved to a realpath first"); }); } @@ -906,20 +907,6 @@ namespace Harness { return { - getDefaultTypeDirectiveNames: (path: string) => { - const results: string[] = []; - fileMap.forEachValue((key, value) => { - const rx = /node_modules\/@types\/(\w+)/; - const typeNameResult = rx.exec(key); - if (typeNameResult) { - const typeName = typeNameResult[1]; - if (results.indexOf(typeName) < 0) { - results.push(typeName); - } - } - }); - return results; - }, getCurrentDirectory: () => currentDirectory, getSourceFile, getDefaultLibFileName, @@ -937,7 +924,37 @@ namespace Harness { realpath: realPathMap && ((f: string) => { const path = ts.toPath(f, currentDirectory, getCanonicalFileName); return realPathMap.contains(path) ? realPathMap.get(path) : path; - }) + }), + directoryExists: dir => { + let path = ts.toPath(dir, currentDirectory, getCanonicalFileName); + // Strip trailing /, which may exist if the path is a drive root + if (path[path.length - 1] === "/") { + path = path.substr(0, path.length - 1); + } + let exists = false; + fileMap.forEachValue(key => { + if (key.indexOf(path) === 0 && key[path.length] === "/") { + exists = true; + } + }); + return exists; + }, + getDirectories: d => { + const path = ts.toPath(d, currentDirectory, getCanonicalFileName); + const result: string[] = []; + fileMap.forEachValue((key, value) => { + if (key.indexOf(path) === 0 && key.lastIndexOf("/") > path.length) { + let dirName = key.substr(path.length, key.indexOf("/", path.length + 1) - path.length); + if (dirName[0] === "/") { + dirName = dirName.substr(1); + } + if (result.indexOf(dirName) < 0) { + result.push(dirName); + } + } + }); + return result; + } }; } @@ -1036,7 +1053,9 @@ namespace Harness { options.noErrorTruncation = true; options.skipDefaultLibCheck = true; - currentDirectory = currentDirectory || Harness.IO.getCurrentDirectory(); + if (typeof currentDirectory === "undefined") { + currentDirectory = Harness.IO.getCurrentDirectory(); + } // Parse settings if (harnessSettings) { diff --git a/src/harness/harnessLanguageService.ts b/src/harness/harnessLanguageService.ts index b3478e4060957..c9d31447df75b 100644 --- a/src/harness/harnessLanguageService.ts +++ b/src/harness/harnessLanguageService.ts @@ -246,16 +246,21 @@ namespace Harness.LanguageService { }; this.getTypeReferenceDirectiveResolutionsForFile = (fileName) => { const scriptInfo = this.getScriptInfo(fileName); - const preprocessInfo = ts.preProcessFile(scriptInfo.content, /*readImportFiles*/ false); - const resolutions: ts.Map = {}; - const settings = this.nativeHost.getCompilationSettings(); - for (const typeReferenceDirective of preprocessInfo.typeReferenceDirectives) { - const resolutionInfo = ts.resolveTypeReferenceDirective(typeReferenceDirective.fileName, fileName, settings, moduleResolutionHost); - if (resolutionInfo.resolvedTypeReferenceDirective.resolvedFileName) { - resolutions[typeReferenceDirective.fileName] = resolutionInfo.resolvedTypeReferenceDirective; + if (scriptInfo) { + const preprocessInfo = ts.preProcessFile(scriptInfo.content, /*readImportFiles*/ false); + const resolutions: ts.Map = {}; + const settings = this.nativeHost.getCompilationSettings(); + for (const typeReferenceDirective of preprocessInfo.typeReferenceDirectives) { + const resolutionInfo = ts.resolveTypeReferenceDirective(typeReferenceDirective.fileName, fileName, settings, moduleResolutionHost); + if (resolutionInfo.resolvedTypeReferenceDirective.resolvedFileName) { + resolutions[typeReferenceDirective.fileName] = resolutionInfo.resolvedTypeReferenceDirective; + } } + return JSON.stringify(resolutions); + } + else { + return "[]"; } - return JSON.stringify(resolutions); }; } } diff --git a/src/harness/projectsRunner.ts b/src/harness/projectsRunner.ts index 64d07b1d88a2a..6bf73ecced773 100644 --- a/src/harness/projectsRunner.ts +++ b/src/harness/projectsRunner.ts @@ -185,7 +185,8 @@ class ProjectRunner extends RunnerBase { useCaseSensitiveFileNames: () => Harness.IO.useCaseSensitiveFileNames(), getNewLine: () => Harness.IO.newLine(), fileExists: fileName => fileName === Harness.Compiler.defaultLibFileName || getSourceFileText(fileName) !== undefined, - readFile: fileName => Harness.IO.readFile(fileName) + readFile: fileName => Harness.IO.readFile(fileName), + getDirectories: path => Harness.IO.getDirectories(path) }; } } diff --git a/src/server/editorServices.ts b/src/server/editorServices.ts index 8eae43b503d3f..a53e9b3d5a012 100644 --- a/src/server/editorServices.ts +++ b/src/server/editorServices.ts @@ -315,6 +315,10 @@ namespace ts.server { return this.host.directoryExists(path); } + getDirectories(path: string): string[] { + return this.host.getDirectories ? this.host.getDirectories(path) : []; + } + /** * @param line 1 based index */ diff --git a/src/services/services.ts b/src/services/services.ts index 34b521b34961a..10d9f9e48efd1 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -1058,6 +1058,7 @@ namespace ts { resolveModuleNames?(moduleNames: string[], containingFile: string): ResolvedModule[]; resolveTypeReferenceDirectives?(typeDirectiveNames: string[], containingFile: string): ResolvedTypeReferenceDirective[]; directoryExists?(directoryName: string): boolean; + getDirectories?(directoryName: string): string[]; } // @@ -1983,7 +1984,8 @@ namespace ts { getNewLine: () => newLine, fileExists: (fileName): boolean => fileName === inputFileName, readFile: (fileName): string => "", - directoryExists: directoryExists => true + directoryExists: directoryExists => true, + getDirectories: (path: string) => [] }; const program = createProgram([inputFileName], options, compilerHost); @@ -2086,7 +2088,7 @@ namespace ts { const getCanonicalFileName = createGetCanonicalFileName(!!useCaseSensitiveFileNames); function getKeyForCompilationSettings(settings: CompilerOptions): DocumentRegistryBucketKey { - return `_${settings.target}|${settings.module}|${settings.noResolve}|${settings.jsx}|${settings.allowJs}|${settings.baseUrl}|${settings.typesRoot}|${settings.typesSearchPaths}|${JSON.stringify(settings.rootDirs)}|${JSON.stringify(settings.paths)}`; + return `_${settings.target}|${settings.module}|${settings.noResolve}|${settings.jsx}|${settings.allowJs}|${settings.baseUrl}|${settings.typeRoots}|${JSON.stringify(settings.rootDirs)}|${JSON.stringify(settings.paths)}`; } function getBucketForCompilationSettings(key: DocumentRegistryBucketKey, createIfMissing: boolean): FileMap { @@ -2945,8 +2947,10 @@ namespace ts { return entry && entry.scriptSnapshot.getText(0, entry.scriptSnapshot.getLength()); }, directoryExists: directoryName => { - Debug.assert(!host.resolveModuleNames || !host.resolveTypeReferenceDirectives); return directoryProbablyExists(directoryName, host); + }, + getDirectories: path => { + return host.getDirectories ? host.getDirectories(path) : []; } }; if (host.trace) { diff --git a/tests/baselines/reference/commonSourceDir5.js b/tests/baselines/reference/commonSourceDir5.js index 7a43aba254e1d..1e404b26e137d 100644 --- a/tests/baselines/reference/commonSourceDir5.js +++ b/tests/baselines/reference/commonSourceDir5.js @@ -1,6 +1,7 @@ //// [tests/cases/compiler/commonSourceDir5.ts] //// //// [bar.ts] + import {z} from "./foo"; export var x = z + z; diff --git a/tests/baselines/reference/commonSourceDir5.symbols b/tests/baselines/reference/commonSourceDir5.symbols index 6426ac39de3c4..67494af40fa53 100644 --- a/tests/baselines/reference/commonSourceDir5.symbols +++ b/tests/baselines/reference/commonSourceDir5.symbols @@ -1,11 +1,12 @@ === A:/bar.ts === + import {z} from "./foo"; ->z : Symbol(z, Decl(bar.ts, 0, 8)) +>z : Symbol(z, Decl(bar.ts, 1, 8)) export var x = z + z; ->x : Symbol(x, Decl(bar.ts, 1, 10)) ->z : Symbol(z, Decl(bar.ts, 0, 8)) ->z : Symbol(z, Decl(bar.ts, 0, 8)) +>x : Symbol(x, Decl(bar.ts, 2, 10)) +>z : Symbol(z, Decl(bar.ts, 1, 8)) +>z : Symbol(z, Decl(bar.ts, 1, 8)) === A:/foo.ts === import {pi} from "B:/baz"; diff --git a/tests/baselines/reference/commonSourceDir5.types b/tests/baselines/reference/commonSourceDir5.types index ff13bb20215c0..dd72099d54207 100644 --- a/tests/baselines/reference/commonSourceDir5.types +++ b/tests/baselines/reference/commonSourceDir5.types @@ -1,4 +1,5 @@ === A:/bar.ts === + import {z} from "./foo"; >z : number diff --git a/tests/baselines/reference/library-reference-1.symbols b/tests/baselines/reference/library-reference-1.symbols index 0e848c626c541..14a6b115009e4 100644 --- a/tests/baselines/reference/library-reference-1.symbols +++ b/tests/baselines/reference/library-reference-1.symbols @@ -1,11 +1,11 @@ -=== /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)) -=== /types/jquery/index.d.ts === +=== /src/types/jquery/index.d.ts === // We can find typings in the ./types folder diff --git a/tests/baselines/reference/library-reference-1.trace.json b/tests/baselines/reference/library-reference-1.trace.json index 1b8c237dff15a..715572362407e 100644 --- a/tests/baselines/reference/library-reference-1.trace.json +++ b/tests/baselines/reference/library-reference-1.trace.json @@ -1,7 +1,12 @@ [ - "======== Resolving type reference directive 'jquery', containing file '/consumer.ts', root directory '/'. ========", - "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. ========" + "======== Resolving type reference directive 'jquery', containing file '/src/consumer.ts', root directory 'types'. ========", + "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. ========", + "======== Resolving type reference directive 'jquery', containing file '/src/__inferred type names__.ts', root directory 'types'. ========", + "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 99133f2f8df9a..c247e94617e40 100644 --- a/tests/baselines/reference/library-reference-1.types +++ b/tests/baselines/reference/library-reference-1.types @@ -1,4 +1,4 @@ -=== /consumer.ts === +=== /src/consumer.ts === /// $.foo(); >$.foo() : void @@ -6,7 +6,7 @@ $.foo(); >$ : { foo(): void; } >foo : () => void -=== /types/jquery/index.d.ts === +=== /src/types/jquery/index.d.ts === // We can find typings in the ./types folder diff --git a/tests/baselines/reference/library-reference-10.symbols b/tests/baselines/reference/library-reference-10.symbols index 9d0f7e4781e35..50159b4bfc329 100644 --- a/tests/baselines/reference/library-reference-10.symbols +++ b/tests/baselines/reference/library-reference-10.symbols @@ -1,11 +1,11 @@ -=== /consumer.ts === +=== /foo/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 === +=== /foo/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 index e6a1918a44653..f4df00fa52ded 100644 --- a/tests/baselines/reference/library-reference-10.trace.json +++ b/tests/baselines/reference/library-reference-10.trace.json @@ -1,8 +1,14 @@ [ - "======== Resolving type reference directive 'jquery', containing file '/consumer.ts', root directory '/'. ========", - "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. ========" + "======== Resolving type reference directive 'jquery', containing file '/foo/consumer.ts', root directory './types'. ========", + "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. ========", + "======== Resolving type reference directive 'jquery', containing file '/foo/__inferred type names__.ts', root directory './types'. ========", + "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 index 42d78f72865c3..ca588d0bc030e 100644 --- a/tests/baselines/reference/library-reference-10.types +++ b/tests/baselines/reference/library-reference-10.types @@ -1,4 +1,4 @@ -=== /consumer.ts === +=== /foo/consumer.ts === /// $.foo(); >$.foo() : void @@ -6,7 +6,7 @@ $.foo(); >$ : { foo(): void; } >foo : () => void -=== /types/jquery/jquery.d.ts === +=== /foo/types/jquery/jquery.d.ts === declare var $: { foo(): void }; >$ : { foo(): void; } >foo : () => void diff --git a/tests/baselines/reference/library-reference-11.trace.json b/tests/baselines/reference/library-reference-11.trace.json index 62d828d57d64f..7f6a32a0b238f 100644 --- a/tests/baselines/reference/library-reference-11.trace.json +++ b/tests/baselines/reference/library-reference-11.trace.json @@ -1,14 +1,8 @@ [ - "======== Resolving type reference directive 'jquery', containing file '/a/b/consumer.ts', root directory '/'. ========", - "Resolving with primary search path '/types/'", - "File '/types/jquery/package.json' does not exist.", - "File '/types/jquery/index.d.ts' does not exist.", - "Resolving with primary search path '/node_modules/'", - "File '/node_modules/jquery/package.json' does not exist.", - "File '/node_modules/jquery/index.d.ts' does not exist.", - "Resolving with primary search path '/node_modules/@types/'", - "File '/node_modules/@types/jquery/package.json' does not exist.", - "File '/node_modules/@types/jquery/index.d.ts' does not exist.", + "======== Resolving type reference directive 'jquery', containing file '/a/b/consumer.ts', root directory 'node_modules/@types'. ========", + "Resolving with primary search path 'node_modules/@types'", + "File 'node_modules/@types/jquery/package.json' does not exist.", + "File 'node_modules/@types/jquery/index.d.ts' does not exist.", "Looking up in 'node_modules' folder, initial location '/a/b'", "File '/a/b/node_modules/jquery.ts' does not exist.", "File '/a/b/node_modules/jquery.d.ts' does not exist.", diff --git a/tests/baselines/reference/library-reference-12.trace.json b/tests/baselines/reference/library-reference-12.trace.json index abe1f6c0f4680..b3debaec9d6dd 100644 --- a/tests/baselines/reference/library-reference-12.trace.json +++ b/tests/baselines/reference/library-reference-12.trace.json @@ -1,14 +1,8 @@ [ - "======== Resolving type reference directive 'jquery', containing file '/a/b/consumer.ts', root directory '/'. ========", - "Resolving with primary search path '/types/'", - "File '/types/jquery/package.json' does not exist.", - "File '/types/jquery/index.d.ts' does not exist.", - "Resolving with primary search path '/node_modules/'", - "File '/node_modules/jquery/package.json' does not exist.", - "File '/node_modules/jquery/index.d.ts' does not exist.", - "Resolving with primary search path '/node_modules/@types/'", - "File '/node_modules/@types/jquery/package.json' does not exist.", - "File '/node_modules/@types/jquery/index.d.ts' does not exist.", + "======== Resolving type reference directive 'jquery', containing file '/a/b/consumer.ts', root directory 'node_modules/@types'. ========", + "Resolving with primary search path 'node_modules/@types'", + "File 'node_modules/@types/jquery/package.json' does not exist.", + "File 'node_modules/@types/jquery/index.d.ts' does not exist.", "Looking up in 'node_modules' folder, initial location '/a/b'", "File '/a/b/node_modules/jquery.ts' does not exist.", "File '/a/b/node_modules/jquery.d.ts' does not exist.", diff --git a/tests/baselines/reference/library-reference-13.trace.json b/tests/baselines/reference/library-reference-13.trace.json index 2133414f41424..d8dfb57c2a66f 100644 --- a/tests/baselines/reference/library-reference-13.trace.json +++ b/tests/baselines/reference/library-reference-13.trace.json @@ -1,6 +1,6 @@ [ - "======== Resolving type reference directive 'jquery', containing file not set, root directory '/a'. ========", - "Resolving with primary search path '/a/types/'", + "======== Resolving type reference directive 'jquery', containing file '/a/b/__inferred type names__.ts', root directory '/a/types'. ========", + "Resolving with primary search path '/a/types'", "File '/a/types/jquery/package.json' does not exist.", "File '/a/types/jquery/index.d.ts' exist - use it as a name resolution result.", "======== Type reference directive 'jquery' was successfully resolved to '/a/types/jquery/index.d.ts', primary: true. ========" diff --git a/tests/baselines/reference/library-reference-14.trace.json b/tests/baselines/reference/library-reference-14.trace.json index 2133414f41424..d8dfb57c2a66f 100644 --- a/tests/baselines/reference/library-reference-14.trace.json +++ b/tests/baselines/reference/library-reference-14.trace.json @@ -1,6 +1,6 @@ [ - "======== Resolving type reference directive 'jquery', containing file not set, root directory '/a'. ========", - "Resolving with primary search path '/a/types/'", + "======== Resolving type reference directive 'jquery', containing file '/a/b/__inferred type names__.ts', root directory '/a/types'. ========", + "Resolving with primary search path '/a/types'", "File '/a/types/jquery/package.json' does not exist.", "File '/a/types/jquery/index.d.ts' exist - use it as a name resolution result.", "======== Type reference directive 'jquery' was successfully resolved to '/a/types/jquery/index.d.ts', primary: true. ========" diff --git a/tests/baselines/reference/library-reference-15.errors.txt b/tests/baselines/reference/library-reference-15.errors.txt index a311633ca76d5..9586ba8bc724a 100644 --- a/tests/baselines/reference/library-reference-15.errors.txt +++ b/tests/baselines/reference/library-reference-15.errors.txt @@ -1,15 +1,15 @@ -error TS2304: Cannot find name 'jquery'. -/a/b/consumer.ts(1,1): error TS2304: Cannot find name '$'. +/a/b/consumer.ts(2,1): error TS2304: Cannot find name '$2'. -!!! error TS2304: Cannot find name 'jquery'. ==== /a/b/consumer.ts (1 errors) ==== - $.foo(); - ~ -!!! error TS2304: Cannot find name '$'. - + $.foo(); // should OK + $2.foo(); // should error + ~~ +!!! error TS2304: Cannot find name '$2'. ==== /a/types/jquery/index.d.ts (0 errors) ==== declare var $: { foo(): void }; +==== /a/types/jquery2/index.d.ts (0 errors) ==== + declare var $2: { foo(): void }; \ No newline at end of file diff --git a/tests/baselines/reference/library-reference-15.js b/tests/baselines/reference/library-reference-15.js index f9aa7038d539d..c1caa0c45e75a 100644 --- a/tests/baselines/reference/library-reference-15.js +++ b/tests/baselines/reference/library-reference-15.js @@ -3,11 +3,14 @@ //// [index.d.ts] declare var $: { foo(): void }; - -//// [consumer.ts] -$.foo(); +//// [index.d.ts] +declare var $2: { foo(): void }; +//// [consumer.ts] +$.foo(); // should OK +$2.foo(); // should error //// [consumer.js] -$.foo(); +$.foo(); // should OK +$2.foo(); // should error diff --git a/tests/baselines/reference/library-reference-15.trace.json b/tests/baselines/reference/library-reference-15.trace.json index b8029a0b61fc3..3e9d7dba1d21d 100644 --- a/tests/baselines/reference/library-reference-15.trace.json +++ b/tests/baselines/reference/library-reference-15.trace.json @@ -1,24 +1,7 @@ [ - "======== Resolving type reference directive 'jquery', containing file not set, root directory '/'. ========", - "Resolving with primary search path '/types/'", - "File '/types/jquery/package.json' does not exist.", - "File '/types/jquery/index.d.ts' does not exist.", - "Resolving with primary search path '/node_modules/'", - "File '/node_modules/jquery/package.json' does not exist.", - "File '/node_modules/jquery/index.d.ts' does not exist.", - "Resolving with primary search path '/node_modules/@types/'", - "File '/node_modules/@types/jquery/package.json' does not exist.", - "File '/node_modules/@types/jquery/index.d.ts' does not exist.", - "Looking up in 'node_modules' folder, initial location '/'", - "File '/node_modules/jquery.ts' does not exist.", - "File '/node_modules/jquery.d.ts' does not exist.", - "File '/node_modules/jquery/package.json' does not exist.", - "File '/node_modules/jquery/index.ts' does not exist.", - "File '/node_modules/jquery/index.d.ts' does not exist.", - "File '/node_modules/@types/jquery.ts' does not exist.", - "File '/node_modules/@types/jquery.d.ts' does not exist.", - "File '/node_modules/@types/jquery/package.json' does not exist.", - "File '/node_modules/@types/jquery/index.ts' does not exist.", - "File '/node_modules/@types/jquery/index.d.ts' does not exist.", - "======== Type reference directive 'jquery' was not resolved. ========" + "======== Resolving type reference directive 'jquery', containing file '/a/b/__inferred type names__.ts', root directory 'types'. ========", + "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-2.trace.json b/tests/baselines/reference/library-reference-2.trace.json index b5ef5f3e2089a..c26f7d2763d7f 100644 --- a/tests/baselines/reference/library-reference-2.trace.json +++ b/tests/baselines/reference/library-reference-2.trace.json @@ -1,6 +1,12 @@ [ - "======== Resolving type reference directive 'jquery', containing file '/consumer.ts', root directory '/'. ========", - "Resolving with primary search path '/types/'", + "======== Resolving type reference directive 'jquery', containing file '/consumer.ts', root directory '/types'. ========", + "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. ========", + "======== Resolving type reference directive 'jquery', containing file '/__inferred type names__.ts', root directory '/types'. ========", + "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.", diff --git a/tests/baselines/reference/library-reference-3.trace.json b/tests/baselines/reference/library-reference-3.trace.json index 30dbbc3fca4d2..909e42140c850 100644 --- a/tests/baselines/reference/library-reference-3.trace.json +++ b/tests/baselines/reference/library-reference-3.trace.json @@ -1,10 +1,13 @@ [ - "======== Resolving type reference directive 'jquery', containing file '/src/consumer.ts', root directory '/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/'", + "======== Resolving type reference directive 'jquery', containing file '/src/consumer.ts', root directory 'node_modules/@types'. ========", + "Resolving with primary search path 'node_modules/@types'", + "File 'node_modules/@types/jquery/package.json' does not exist.", + "File 'node_modules/@types/jquery/index.d.ts' does not exist.", + "Looking up in 'node_modules' folder, initial location '/src'", + "File '/src/node_modules/jquery.ts' does not exist.", + "File '/src/node_modules/jquery.d.ts' does not exist.", "File '/src/node_modules/jquery/package.json' does not exist.", + "File '/src/node_modules/jquery/index.ts' 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. ========" + "======== Type reference directive 'jquery' was successfully resolved to '/src/node_modules/jquery/index.d.ts', primary: false. ========" ] \ No newline at end of file diff --git a/tests/baselines/reference/library-reference-4.trace.json b/tests/baselines/reference/library-reference-4.trace.json index 90b6eb7b01d74..5df7320d3223c 100644 --- a/tests/baselines/reference/library-reference-4.trace.json +++ b/tests/baselines/reference/library-reference-4.trace.json @@ -1,14 +1,8 @@ [ "======== Resolving type reference directive 'foo', containing file '/src/root.ts', root directory '/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 with primary search path '/src'", + "File '/src/foo/package.json' does not exist.", + "File '/src/foo/index.d.ts' does not exist.", "Looking up in 'node_modules' folder, initial location '/src'", "File '/src/node_modules/foo.ts' does not exist.", "File '/src/node_modules/foo.d.ts' does not exist.", @@ -27,15 +21,9 @@ "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', containing file '/src/root.ts', root directory '/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 with primary search path '/src'", + "File '/src/bar/package.json' does not exist.", + "File '/src/bar/index.d.ts' does not exist.", "Looking up in 'node_modules' folder, initial location '/src'", "File '/src/node_modules/bar.ts' does not exist.", "File '/src/node_modules/bar.d.ts' does not exist.", @@ -54,15 +42,9 @@ "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', containing file '/node_modules/foo/index.d.ts', root directory '/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 with primary search path '/src'", + "File '/src/alpha/package.json' does not exist.", + "File '/src/alpha/index.d.ts' does not exist.", "Looking up in 'node_modules' folder, initial location '/node_modules/foo'", "File '/node_modules/foo/node_modules/alpha.ts' does not exist.", "File '/node_modules/foo/node_modules/alpha.d.ts' does not exist.", @@ -71,15 +53,9 @@ "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', containing file '/node_modules/bar/index.d.ts', root directory '/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 with primary search path '/src'", + "File '/src/alpha/package.json' does not exist.", + "File '/src/alpha/index.d.ts' does not exist.", "Looking up in 'node_modules' folder, initial location '/node_modules/bar'", "File '/node_modules/bar/node_modules/alpha.ts' does not exist.", "File '/node_modules/bar/node_modules/alpha.d.ts' does not exist.", diff --git a/tests/baselines/reference/library-reference-5.trace.json b/tests/baselines/reference/library-reference-5.trace.json index ad34e9e3159f3..9b8705f032311 100644 --- a/tests/baselines/reference/library-reference-5.trace.json +++ b/tests/baselines/reference/library-reference-5.trace.json @@ -1,30 +1,50 @@ [ - "======== Resolving type reference directive 'foo', containing file '/src/root.ts', root directory '/'. ========", - "Resolving with primary search path '/types/'", - "File '/types/foo/package.json' does not exist.", - "File '/types/foo/index.d.ts' does not exist.", - "Resolving with primary search path '/node_modules/'", + "======== Resolving type reference directive 'foo', containing file '/src/root.ts', root directory 'types'. ========", + "Resolving with primary search path 'types'", + "File 'types/foo/package.json' does not exist.", + "File 'types/foo/index.d.ts' does not exist.", + "Looking up in 'node_modules' folder, initial location '/src'", + "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: true. ========", - "======== Resolving type reference directive 'bar', containing file '/src/root.ts', root directory '/'. ========", - "Resolving with primary search path '/types/'", - "File '/types/bar/package.json' does not exist.", - "File '/types/bar/index.d.ts' does not exist.", - "Resolving with primary search path '/node_modules/'", + "======== Type reference directive 'foo' was successfully resolved to '/node_modules/foo/index.d.ts', primary: false. ========", + "======== Resolving type reference directive 'bar', containing file '/src/root.ts', root directory 'types'. ========", + "Resolving with primary search path 'types'", + "File 'types/bar/package.json' does not exist.", + "File 'types/bar/index.d.ts' does not exist.", + "Looking up in 'node_modules' folder, initial location '/src'", + "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: true. ========", - "======== Resolving type reference directive 'alpha', containing file '/node_modules/foo/index.d.ts', root directory '/'. ========", - "Resolving with primary search path '/types/'", - "File '/types/alpha/package.json' does not exist.", - "File '/types/alpha/index.d.ts' does not exist.", - "Resolving with primary search path '/node_modules/'", - "File '/node_modules/alpha/package.json' does not exist.", - "File '/node_modules/alpha/index.d.ts' does not exist.", - "Resolving with primary search path '/node_modules/@types/'", - "File '/node_modules/@types/alpha/package.json' does not exist.", - "File '/node_modules/@types/alpha/index.d.ts' does not exist.", + "======== Type reference directive 'bar' was successfully resolved to '/node_modules/bar/index.d.ts', primary: false. ========", + "======== Resolving type reference directive 'alpha', containing file '/node_modules/foo/index.d.ts', root directory 'types'. ========", + "Resolving with primary search path 'types'", + "File 'types/alpha/package.json' does not exist.", + "File 'types/alpha/index.d.ts' does not exist.", "Looking up in 'node_modules' folder, initial location '/node_modules/foo'", "File '/node_modules/foo/node_modules/alpha.ts' does not exist.", "File '/node_modules/foo/node_modules/alpha.d.ts' does not exist.", @@ -32,16 +52,10 @@ "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', containing file '/node_modules/bar/index.d.ts', root directory '/'. ========", - "Resolving with primary search path '/types/'", - "File '/types/alpha/package.json' does not exist.", - "File '/types/alpha/index.d.ts' does not exist.", - "Resolving with primary search path '/node_modules/'", - "File '/node_modules/alpha/package.json' does not exist.", - "File '/node_modules/alpha/index.d.ts' does not exist.", - "Resolving with primary search path '/node_modules/@types/'", - "File '/node_modules/@types/alpha/package.json' does not exist.", - "File '/node_modules/@types/alpha/index.d.ts' does not exist.", + "======== Resolving type reference directive 'alpha', containing file '/node_modules/bar/index.d.ts', root directory 'types'. ========", + "Resolving with primary search path 'types'", + "File 'types/alpha/package.json' does not exist.", + "File 'types/alpha/index.d.ts' does not exist.", "Looking up in 'node_modules' folder, initial location '/node_modules/bar'", "File '/node_modules/bar/node_modules/alpha.ts' does not exist.", "File '/node_modules/bar/node_modules/alpha.d.ts' does not exist.", diff --git a/tests/baselines/reference/library-reference-6.symbols b/tests/baselines/reference/library-reference-6.symbols deleted file mode 100644 index 328842f804c56..0000000000000 --- a/tests/baselines/reference/library-reference-6.symbols +++ /dev/null @@ -1,16 +0,0 @@ -=== /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)) - -=== /types/alpha/index.d.ts === - -// The primary lookup folder is relative to tsconfig.json, if present - -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-6.trace.json b/tests/baselines/reference/library-reference-6.trace.json index 426214fdcfc7f..fc29f3f2478b8 100644 --- a/tests/baselines/reference/library-reference-6.trace.json +++ b/tests/baselines/reference/library-reference-6.trace.json @@ -1,7 +1,28 @@ [ - "======== Resolving type reference directive 'alpha', containing file '/src/foo.ts', root directory '/'. ========", - "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 'alpha', containing file '/src/foo.ts', root directory 'node_modules/@types'. ========", + "Resolving with primary search path 'node_modules/@types'", + "File 'node_modules/@types/alpha/package.json' does not exist.", + "File 'node_modules/@types/alpha/index.d.ts' does not exist.", + "Looking up in 'node_modules' folder, initial location '/src'", + "File '/src/node_modules/alpha.ts' does not exist.", + "File '/src/node_modules/alpha.d.ts' does not exist.", + "File '/src/node_modules/alpha/package.json' does not exist.", + "File '/src/node_modules/alpha/index.ts' does not exist.", + "File '/src/node_modules/alpha/index.d.ts' does not exist.", + "File '/src/node_modules/@types/alpha.ts' does not exist.", + "File '/src/node_modules/@types/alpha.d.ts' does not exist.", + "File '/src/node_modules/@types/alpha/package.json' does not exist.", + "File '/src/node_modules/@types/alpha/index.ts' does not exist.", + "File '/src/node_modules/@types/alpha/index.d.ts' does not exist.", + "File '/node_modules/alpha.ts' does not exist.", + "File '/node_modules/alpha.d.ts' does not exist.", + "File '/node_modules/alpha/package.json' does not exist.", + "File '/node_modules/alpha/index.ts' does not exist.", + "File '/node_modules/alpha/index.d.ts' does not exist.", + "File '/node_modules/@types/alpha.ts' does not exist.", + "File '/node_modules/@types/alpha.d.ts' does not exist.", + "File '/node_modules/@types/alpha/package.json' does not exist.", + "File '/node_modules/@types/alpha/index.ts' does not exist.", + "File '/node_modules/@types/alpha/index.d.ts' does not exist.", + "======== Type reference directive 'alpha' was not resolved. ========" ] \ No newline at end of file diff --git a/tests/baselines/reference/library-reference-6.types b/tests/baselines/reference/library-reference-6.types deleted file mode 100644 index 2f6c1e49b891f..0000000000000 --- a/tests/baselines/reference/library-reference-6.types +++ /dev/null @@ -1,16 +0,0 @@ -=== /src/foo.ts === -/// -var x: string = alpha.a; ->x : string ->alpha.a : string ->alpha : { a: string; } ->a : string - -=== /types/alpha/index.d.ts === - -// The primary lookup folder is relative to tsconfig.json, if present - -declare var alpha: { a: string }; ->alpha : { a: string; } ->a : string - diff --git a/tests/baselines/reference/library-reference-7.trace.json b/tests/baselines/reference/library-reference-7.trace.json index 9c6b19390d062..909e42140c850 100644 --- a/tests/baselines/reference/library-reference-7.trace.json +++ b/tests/baselines/reference/library-reference-7.trace.json @@ -1,14 +1,8 @@ [ - "======== Resolving type reference directive 'jquery', containing file '/src/consumer.ts', root directory '/'. ========", - "Resolving with primary search path '/types/'", - "File '/types/jquery/package.json' does not exist.", - "File '/types/jquery/index.d.ts' does not exist.", - "Resolving with primary search path '/node_modules/'", - "File '/node_modules/jquery/package.json' does not exist.", - "File '/node_modules/jquery/index.d.ts' does not exist.", - "Resolving with primary search path '/node_modules/@types/'", - "File '/node_modules/@types/jquery/package.json' does not exist.", - "File '/node_modules/@types/jquery/index.d.ts' does not exist.", + "======== Resolving type reference directive 'jquery', containing file '/src/consumer.ts', root directory 'node_modules/@types'. ========", + "Resolving with primary search path 'node_modules/@types'", + "File 'node_modules/@types/jquery/package.json' does not exist.", + "File 'node_modules/@types/jquery/index.d.ts' does not exist.", "Looking up in 'node_modules' folder, initial location '/src'", "File '/src/node_modules/jquery.ts' does not exist.", "File '/src/node_modules/jquery.d.ts' does not exist.", diff --git a/tests/baselines/reference/library-reference-8.symbols b/tests/baselines/reference/library-reference-8.symbols index 299a60f1b1dcb..a6a24689f3fcd 100644 --- a/tests/baselines/reference/library-reference-8.symbols +++ b/tests/baselines/reference/library-reference-8.symbols @@ -1,4 +1,4 @@ -=== /foo.ts === +=== /test/foo.ts === /// /// var x: string = alpha.a + beta.b; @@ -11,7 +11,7 @@ var x: string = alpha.a + beta.b; >b : Symbol(b, Decl(index.d.ts, 1, 19)) -=== /types/alpha/index.d.ts === +=== /test/types/alpha/index.d.ts === // Don't crash in circular library reference situations @@ -20,7 +20,7 @@ declare var alpha: { a: string }; >alpha : Symbol(alpha, Decl(index.d.ts, 4, 11)) >a : Symbol(a, Decl(index.d.ts, 4, 20)) -=== /types/beta/index.d.ts === +=== /test/types/beta/index.d.ts === /// declare var beta: { b: string }; >beta : Symbol(beta, Decl(index.d.ts, 1, 11)) diff --git a/tests/baselines/reference/library-reference-8.trace.json b/tests/baselines/reference/library-reference-8.trace.json index b1dc64786880d..d34f206e5816b 100644 --- a/tests/baselines/reference/library-reference-8.trace.json +++ b/tests/baselines/reference/library-reference-8.trace.json @@ -1,22 +1,32 @@ [ - "======== Resolving type reference directive 'alpha', containing file '/foo.ts', root directory '/'. ========", - "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', containing file '/foo.ts', root directory '/'. ========", - "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', containing file '/types/alpha/index.d.ts', root directory '/'. ========", - "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', containing file '/types/beta/index.d.ts', root directory '/'. ========", - "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 'alpha', containing file '/test/foo.ts', root directory '/test/types'. ========", + "Resolving with primary search path '/test/types'", + "File '/test/types/alpha/package.json' does not exist.", + "File '/test/types/alpha/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'alpha' was successfully resolved to '/test/types/alpha/index.d.ts', primary: true. ========", + "======== Resolving type reference directive 'beta', containing file '/test/foo.ts', root directory '/test/types'. ========", + "Resolving with primary search path '/test/types'", + "File '/test/types/beta/package.json' does not exist.", + "File '/test/types/beta/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'beta' was successfully resolved to '/test/types/beta/index.d.ts', primary: true. ========", + "======== Resolving type reference directive 'beta', containing file '/test/types/alpha/index.d.ts', root directory '/test/types'. ========", + "Resolving with primary search path '/test/types'", + "File '/test/types/beta/package.json' does not exist.", + "File '/test/types/beta/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'beta' was successfully resolved to '/test/types/beta/index.d.ts', primary: true. ========", + "======== Resolving type reference directive 'alpha', containing file '/test/types/beta/index.d.ts', root directory '/test/types'. ========", + "Resolving with primary search path '/test/types'", + "File '/test/types/alpha/package.json' does not exist.", + "File '/test/types/alpha/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'alpha' was successfully resolved to '/test/types/alpha/index.d.ts', primary: true. ========", + "======== Resolving type reference directive 'alpha', containing file '/test/__inferred type names__.ts', root directory '/test/types'. ========", + "Resolving with primary search path '/test/types'", + "File '/test/types/alpha/package.json' does not exist.", + "File '/test/types/alpha/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'alpha' was successfully resolved to '/test/types/alpha/index.d.ts', primary: true. ========", + "======== Resolving type reference directive 'beta', containing file '/test/__inferred type names__.ts', root directory '/test/types'. ========", + "Resolving with primary search path '/test/types'", + "File '/test/types/beta/package.json' does not exist.", + "File '/test/types/beta/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'beta' was successfully resolved to '/test/types/beta/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 b0780d90f63ac..d8a2b6e963870 100644 --- a/tests/baselines/reference/library-reference-8.types +++ b/tests/baselines/reference/library-reference-8.types @@ -1,4 +1,4 @@ -=== /foo.ts === +=== /test/foo.ts === /// /// var x: string = alpha.a + beta.b; @@ -12,7 +12,7 @@ var x: string = alpha.a + beta.b; >b : string -=== /types/alpha/index.d.ts === +=== /test/types/alpha/index.d.ts === // Don't crash in circular library reference situations @@ -21,7 +21,7 @@ declare var alpha: { a: string }; >alpha : { a: string; } >a : string -=== /types/beta/index.d.ts === +=== /test/types/beta/index.d.ts === /// declare var beta: { b: string }; >beta : { b: string; } diff --git a/tests/baselines/reference/library-reference-9.js b/tests/baselines/reference/library-reference-9.js deleted file mode 100644 index ccb3b3213a9f1..0000000000000 --- a/tests/baselines/reference/library-reference-9.js +++ /dev/null @@ -1,16 +0,0 @@ -//// [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 deleted file mode 100644 index 62cde2117dff6..0000000000000 --- a/tests/baselines/reference/library-reference-9.symbols +++ /dev/null @@ -1,16 +0,0 @@ -=== /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 deleted file mode 100644 index e2fdfdc05500c..0000000000000 --- a/tests/baselines/reference/library-reference-9.trace.json +++ /dev/null @@ -1,7 +0,0 @@ -[ - "======== Resolving type reference directive 'alpha', containing file '/base/src/foo.ts', root directory '/'. ========", - "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 deleted file mode 100644 index 8df2179e24995..0000000000000 --- a/tests/baselines/reference/library-reference-9.types +++ /dev/null @@ -1,16 +0,0 @@ -=== /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/moduleResolutionWithSymlinks.errors.txt b/tests/baselines/reference/moduleResolutionWithSymlinks.errors.txt new file mode 100644 index 0000000000000..b51933902a469 --- /dev/null +++ b/tests/baselines/reference/moduleResolutionWithSymlinks.errors.txt @@ -0,0 +1,21 @@ +/src/library-b/index.ts(1,23): error TS2307: Cannot find module 'library-a'. + + +==== /src/app.ts (0 errors) ==== + import { MyClass } from "./library-a"; + import { MyClass2 } from "./library-b"; + + let x: MyClass; + let y: MyClass2; + x = y; + y = x; +==== /src/library-a/index.ts (0 errors) ==== + + export class MyClass{} + +==== /src/library-b/index.ts (1 errors) ==== + import {MyClass} from "library-a"; + ~~~~~~~~~~~ +!!! error TS2307: Cannot find module 'library-a'. + export { MyClass as MyClass2 } + \ No newline at end of file diff --git a/tests/baselines/reference/moduleResolutionWithSymlinks.symbols b/tests/baselines/reference/moduleResolutionWithSymlinks.symbols deleted file mode 100644 index ea73755deefe6..0000000000000 --- a/tests/baselines/reference/moduleResolutionWithSymlinks.symbols +++ /dev/null @@ -1,36 +0,0 @@ -=== /src/app.ts === -import { MyClass } from "./library-a"; ->MyClass : Symbol(MyClass, Decl(app.ts, 0, 8)) - -import { MyClass2 } from "./library-b"; ->MyClass2 : Symbol(MyClass2, Decl(app.ts, 1, 8)) - -let x: MyClass; ->x : Symbol(x, Decl(app.ts, 3, 3)) ->MyClass : Symbol(MyClass, Decl(app.ts, 0, 8)) - -let y: MyClass2; ->y : Symbol(y, Decl(app.ts, 4, 3)) ->MyClass2 : Symbol(MyClass2, Decl(app.ts, 1, 8)) - -x = y; ->x : Symbol(x, Decl(app.ts, 3, 3)) ->y : Symbol(y, Decl(app.ts, 4, 3)) - -y = x; ->y : Symbol(y, Decl(app.ts, 4, 3)) ->x : Symbol(x, Decl(app.ts, 3, 3)) - -=== /src/library-a/index.ts === - -export class MyClass{} ->MyClass : Symbol(MyClass, Decl(index.ts, 0, 0)) - -=== /src/library-b/index.ts === -import {MyClass} from "library-a"; ->MyClass : Symbol(MyClass, Decl(index.ts, 0, 8)) - -export { MyClass as MyClass2 } ->MyClass : Symbol(MyClass2, Decl(index.ts, 1, 8)) ->MyClass2 : Symbol(MyClass2, Decl(index.ts, 1, 8)) - diff --git a/tests/baselines/reference/moduleResolutionWithSymlinks.trace.json b/tests/baselines/reference/moduleResolutionWithSymlinks.trace.json index 7f1c289018096..f3bfae4b17346 100644 --- a/tests/baselines/reference/moduleResolutionWithSymlinks.trace.json +++ b/tests/baselines/reference/moduleResolutionWithSymlinks.trace.json @@ -26,7 +26,43 @@ "File '/src/library-b/node_modules/library-a.tsx' does not exist.", "File '/src/library-b/node_modules/library-a.d.ts' does not exist.", "File '/src/library-b/node_modules/library-a/package.json' does not exist.", - "File '/src/library-b/node_modules/library-a/index.ts' exist - use it as a name resolution result.", - "Resolving real path for '/src/library-b/node_modules/library-a/index.ts', result '/src/library-a/index.ts'", - "======== Module name 'library-a' was successfully resolved to '/src/library-a/index.ts'. ========" + "File '/src/library-b/node_modules/library-a/index.ts' does not exist.", + "File '/src/library-b/node_modules/library-a/index.tsx' does not exist.", + "File '/src/library-b/node_modules/library-a/index.d.ts' does not exist.", + "File '/src/library-b/node_modules/@types/library-a.ts' does not exist.", + "File '/src/library-b/node_modules/@types/library-a.tsx' does not exist.", + "File '/src/library-b/node_modules/@types/library-a.d.ts' does not exist.", + "File '/src/library-b/node_modules/@types/library-a/package.json' does not exist.", + "File '/src/library-b/node_modules/@types/library-a/index.ts' does not exist.", + "File '/src/library-b/node_modules/@types/library-a/index.tsx' does not exist.", + "File '/src/library-b/node_modules/@types/library-a/index.d.ts' does not exist.", + "File '/src/node_modules/library-a.ts' does not exist.", + "File '/src/node_modules/library-a.tsx' does not exist.", + "File '/src/node_modules/library-a.d.ts' does not exist.", + "File '/src/node_modules/library-a/package.json' does not exist.", + "File '/src/node_modules/library-a/index.ts' does not exist.", + "File '/src/node_modules/library-a/index.tsx' does not exist.", + "File '/src/node_modules/library-a/index.d.ts' does not exist.", + "File '/src/node_modules/@types/library-a.ts' does not exist.", + "File '/src/node_modules/@types/library-a.tsx' does not exist.", + "File '/src/node_modules/@types/library-a.d.ts' does not exist.", + "File '/src/node_modules/@types/library-a/package.json' does not exist.", + "File '/src/node_modules/@types/library-a/index.ts' does not exist.", + "File '/src/node_modules/@types/library-a/index.tsx' does not exist.", + "File '/src/node_modules/@types/library-a/index.d.ts' does not exist.", + "File '/node_modules/library-a.ts' does not exist.", + "File '/node_modules/library-a.tsx' does not exist.", + "File '/node_modules/library-a.d.ts' does not exist.", + "File '/node_modules/library-a/package.json' does not exist.", + "File '/node_modules/library-a/index.ts' does not exist.", + "File '/node_modules/library-a/index.tsx' does not exist.", + "File '/node_modules/library-a/index.d.ts' does not exist.", + "File '/node_modules/@types/library-a.ts' does not exist.", + "File '/node_modules/@types/library-a.tsx' does not exist.", + "File '/node_modules/@types/library-a.d.ts' does not exist.", + "File '/node_modules/@types/library-a/package.json' does not exist.", + "File '/node_modules/@types/library-a/index.ts' does not exist.", + "File '/node_modules/@types/library-a/index.tsx' does not exist.", + "File '/node_modules/@types/library-a/index.d.ts' does not exist.", + "======== Module name 'library-a' was not resolved. ========" ] \ No newline at end of file diff --git a/tests/baselines/reference/moduleResolutionWithSymlinks.types b/tests/baselines/reference/moduleResolutionWithSymlinks.types deleted file mode 100644 index 8344adbe81781..0000000000000 --- a/tests/baselines/reference/moduleResolutionWithSymlinks.types +++ /dev/null @@ -1,38 +0,0 @@ -=== /src/app.ts === -import { MyClass } from "./library-a"; ->MyClass : typeof MyClass - -import { MyClass2 } from "./library-b"; ->MyClass2 : typeof MyClass - -let x: MyClass; ->x : MyClass ->MyClass : MyClass - -let y: MyClass2; ->y : MyClass ->MyClass2 : MyClass - -x = y; ->x = y : MyClass ->x : MyClass ->y : MyClass - -y = x; ->y = x : MyClass ->y : MyClass ->x : MyClass - -=== /src/library-a/index.ts === - -export class MyClass{} ->MyClass : MyClass - -=== /src/library-b/index.ts === -import {MyClass} from "library-a"; ->MyClass : typeof MyClass - -export { MyClass as MyClass2 } ->MyClass : typeof MyClass ->MyClass2 : typeof MyClass - diff --git a/tests/baselines/reference/pathMappingBasedModuleResolution3_node.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution3_node.trace.json index af5e20a3cc30c..ab7210d7d020c 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution3_node.trace.json +++ b/tests/baselines/reference/pathMappingBasedModuleResolution3_node.trace.json @@ -5,11 +5,13 @@ "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 name resolution result.", + "Resolving real path for 'c:/root/folder2/file2.ts', result 'c:/root/folder2/file2.ts'", "======== 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 name resolution result.", + "Resolving real path for 'c:/root/folder2/file3.ts', result 'c:/root/folder2/file3.ts'", "======== 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'.", @@ -59,5 +61,6 @@ "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 name resolution result.", + "Resolving real path for 'c:/node_modules/file4/index.d.ts', result 'c:/node_modules/file4/index.d.ts'", "======== 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_node.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution4_node.trace.json index af5e20a3cc30c..ab7210d7d020c 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution4_node.trace.json +++ b/tests/baselines/reference/pathMappingBasedModuleResolution4_node.trace.json @@ -5,11 +5,13 @@ "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 name resolution result.", + "Resolving real path for 'c:/root/folder2/file2.ts', result 'c:/root/folder2/file2.ts'", "======== 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 name resolution result.", + "Resolving real path for 'c:/root/folder2/file3.ts', result 'c:/root/folder2/file3.ts'", "======== 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'.", @@ -59,5 +61,6 @@ "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 name resolution result.", + "Resolving real path for 'c:/node_modules/file4/index.d.ts', result 'c:/node_modules/file4/index.d.ts'", "======== 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_node.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution5_node.trace.json index cebd59f01b41a..2efeefa24e5ca 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution5_node.trace.json +++ b/tests/baselines/reference/pathMappingBasedModuleResolution5_node.trace.json @@ -7,6 +7,7 @@ "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 name resolution result.", + "Resolving real path for 'c:/root/folder2/file1.ts', result 'c:/root/folder2/file1.ts'", "======== 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'.", @@ -25,6 +26,7 @@ "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 name resolution result.", + "Resolving real path for 'c:/root/generated/folder3/file2.ts', result 'c:/root/generated/folder3/file2.ts'", "======== 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'.", @@ -40,6 +42,7 @@ "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 name resolution result.", + "Resolving real path for 'c:/root/shared/components/file3/index.d.ts', result 'c:/root/shared/components/file3/index.d.ts'", "======== 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'.", @@ -94,5 +97,6 @@ "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.", + "Resolving real path for 'c:/node_modules/file4.ts', result 'c:/node_modules/file4.ts'", "======== 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_node.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution6_node.trace.json index 7c5e76a28474e..28e51a119152d 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution6_node.trace.json +++ b/tests/baselines/reference/pathMappingBasedModuleResolution6_node.trace.json @@ -18,6 +18,7 @@ "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 name resolution result.", + "Resolving real path for 'c:/root/generated/src/project/file3.ts', result 'c:/root/generated/src/project/file3.ts'", "======== 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'.", @@ -44,5 +45,6 @@ "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 name resolution result.", + "Resolving real path for 'c:/root/src/file2/index.d.ts', result 'c:/root/src/file2/index.d.ts'", "======== 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_node.trace.json b/tests/baselines/reference/pathMappingBasedModuleResolution7_node.trace.json index 99d4bf244db23..6be7d349fed69 100644 --- a/tests/baselines/reference/pathMappingBasedModuleResolution7_node.trace.json +++ b/tests/baselines/reference/pathMappingBasedModuleResolution7_node.trace.json @@ -18,6 +18,7 @@ "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 name resolution result.", + "Resolving real path for 'c:/root/generated/src/project/file2.ts', result 'c:/root/generated/src/project/file2.ts'", "======== 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'.", @@ -74,6 +75,7 @@ "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 name resolution result.", + "Resolving real path for 'c:/node_modules/module3.d.ts', result 'c:/node_modules/module3.d.ts'", "======== 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'.", @@ -98,6 +100,7 @@ "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 name resolution result.", + "Resolving real path for 'c:/shared/module1/index.d.ts', result 'c:/shared/module1/index.d.ts'", "======== 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'.", @@ -107,6 +110,7 @@ "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 name resolution result.", + "Resolving real path for 'c:/root/generated/src/templates/module2.ts', result 'c:/root/generated/src/templates/module2.ts'", "======== 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'.", @@ -133,5 +137,6 @@ "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 name resolution result.", + "Resolving real path for 'c:/root/src/file3/index.d.ts', result 'c:/root/src/file3/index.d.ts'", "======== Module name '../file3' was successfully resolved to 'c:/root/src/file3/index.d.ts'. ========" ] \ No newline at end of file diff --git a/tests/baselines/reference/typeReferenceDirectives1.trace.json b/tests/baselines/reference/typeReferenceDirectives1.trace.json index c936a84dcc09a..58b23783b0b9d 100644 --- a/tests/baselines/reference/typeReferenceDirectives1.trace.json +++ b/tests/baselines/reference/typeReferenceDirectives1.trace.json @@ -1,6 +1,11 @@ [ - "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/'. ========", - "Resolving with primary search path '/types/'", + "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/types'. ========", + "Resolving with primary search path '/types'", + "File '/types/lib/package.json' does not exist.", + "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========", + "======== Resolving type reference directive 'lib', containing file '/__inferred type names__.ts', root directory '/types'. ========", + "Resolving with primary search path '/types'", "File '/types/lib/package.json' does not exist.", "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========" diff --git a/tests/baselines/reference/typeReferenceDirectives10.trace.json b/tests/baselines/reference/typeReferenceDirectives10.trace.json index b6adaf1f513f8..61341afdab3a3 100644 --- a/tests/baselines/reference/typeReferenceDirectives10.trace.json +++ b/tests/baselines/reference/typeReferenceDirectives10.trace.json @@ -1,6 +1,6 @@ [ - "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/'. ========", - "Resolving with primary search path '/types/'", + "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/types'. ========", + "Resolving with primary search path '/types'", "File '/types/lib/package.json' does not exist.", "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========", @@ -10,5 +10,11 @@ "File '/ref.ts' does not exist.", "File '/ref.tsx' does not exist.", "File '/ref.d.ts' exist - use it as a name resolution result.", - "======== Module name './ref' was successfully resolved to '/ref.d.ts'. ========" + "Resolving real path for '/ref.d.ts', result '/ref.d.ts'", + "======== Module name './ref' was successfully resolved to '/ref.d.ts'. ========", + "======== Resolving type reference directive 'lib', containing file '/__inferred type names__.ts', root directory '/types'. ========", + "Resolving with primary search path '/types'", + "File '/types/lib/package.json' does not exist.", + "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========" ] \ No newline at end of file diff --git a/tests/baselines/reference/typeReferenceDirectives11.trace.json b/tests/baselines/reference/typeReferenceDirectives11.trace.json index bfaae056c9ee2..37fa7900a7c69 100644 --- a/tests/baselines/reference/typeReferenceDirectives11.trace.json +++ b/tests/baselines/reference/typeReferenceDirectives11.trace.json @@ -3,9 +3,10 @@ "Module resolution kind is not specified, using 'NodeJs'.", "Loading module as file / folder, candidate module location '/mod1'.", "File '/mod1.ts' exist - use it as a name resolution result.", + "Resolving real path for '/mod1.ts', result '/mod1.ts'", "======== Module name './mod1' was successfully resolved to '/mod1.ts'. ========", - "======== Resolving type reference directive 'lib', containing file not set, root directory '/'. ========", - "Resolving with primary search path '/types/'", + "======== Resolving type reference directive 'lib', containing file '/__inferred type names__.ts', root directory '/types'. ========", + "Resolving with primary search path '/types'", "File '/types/lib/package.json' does not exist.", "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========" diff --git a/tests/baselines/reference/typeReferenceDirectives12.trace.json b/tests/baselines/reference/typeReferenceDirectives12.trace.json index f4fc0937325b9..1024b0cdef3db 100644 --- a/tests/baselines/reference/typeReferenceDirectives12.trace.json +++ b/tests/baselines/reference/typeReferenceDirectives12.trace.json @@ -3,14 +3,16 @@ "Module resolution kind is not specified, using 'NodeJs'.", "Loading module as file / folder, candidate module location '/main'.", "File '/main.ts' exist - use it as a name resolution result.", + "Resolving real path for '/main.ts', result '/main.ts'", "======== Module name './main' was successfully resolved to '/main.ts'. ========", "======== Resolving module './mod1' from '/mod2.ts'. ========", "Module resolution kind is not specified, using 'NodeJs'.", "Loading module as file / folder, candidate module location '/mod1'.", "File '/mod1.ts' exist - use it as a name resolution result.", + "Resolving real path for '/mod1.ts', result '/mod1.ts'", "======== Module name './mod1' was successfully resolved to '/mod1.ts'. ========", - "======== Resolving type reference directive 'lib', containing file '/mod1.ts', root directory '/'. ========", - "Resolving with primary search path '/types/'", + "======== Resolving type reference directive 'lib', containing file '/mod1.ts', root directory '/types'. ========", + "Resolving with primary search path '/types'", "File '/types/lib/package.json' does not exist.", "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========", @@ -18,5 +20,11 @@ "Module resolution kind is not specified, using 'NodeJs'.", "Loading module as file / folder, candidate module location '/main'.", "File '/main.ts' exist - use it as a name resolution result.", - "======== Module name './main' was successfully resolved to '/main.ts'. ========" + "Resolving real path for '/main.ts', result '/main.ts'", + "======== Module name './main' was successfully resolved to '/main.ts'. ========", + "======== Resolving type reference directive 'lib', containing file '/__inferred type names__.ts', root directory '/types'. ========", + "Resolving with primary search path '/types'", + "File '/types/lib/package.json' does not exist.", + "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========" ] \ No newline at end of file diff --git a/tests/baselines/reference/typeReferenceDirectives13.trace.json b/tests/baselines/reference/typeReferenceDirectives13.trace.json index b6adaf1f513f8..61341afdab3a3 100644 --- a/tests/baselines/reference/typeReferenceDirectives13.trace.json +++ b/tests/baselines/reference/typeReferenceDirectives13.trace.json @@ -1,6 +1,6 @@ [ - "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/'. ========", - "Resolving with primary search path '/types/'", + "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/types'. ========", + "Resolving with primary search path '/types'", "File '/types/lib/package.json' does not exist.", "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========", @@ -10,5 +10,11 @@ "File '/ref.ts' does not exist.", "File '/ref.tsx' does not exist.", "File '/ref.d.ts' exist - use it as a name resolution result.", - "======== Module name './ref' was successfully resolved to '/ref.d.ts'. ========" + "Resolving real path for '/ref.d.ts', result '/ref.d.ts'", + "======== Module name './ref' was successfully resolved to '/ref.d.ts'. ========", + "======== Resolving type reference directive 'lib', containing file '/__inferred type names__.ts', root directory '/types'. ========", + "Resolving with primary search path '/types'", + "File '/types/lib/package.json' does not exist.", + "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========" ] \ No newline at end of file diff --git a/tests/baselines/reference/typeReferenceDirectives2.trace.json b/tests/baselines/reference/typeReferenceDirectives2.trace.json index 826abe5d51af2..93d3658447dd3 100644 --- a/tests/baselines/reference/typeReferenceDirectives2.trace.json +++ b/tests/baselines/reference/typeReferenceDirectives2.trace.json @@ -1,6 +1,6 @@ [ - "======== Resolving type reference directive 'lib', containing file not set, root directory '/'. ========", - "Resolving with primary search path '/types/'", + "======== Resolving type reference directive 'lib', containing file '/__inferred type names__.ts', root directory '/types'. ========", + "Resolving with primary search path '/types'", "File '/types/lib/package.json' does not exist.", "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========" diff --git a/tests/baselines/reference/typeReferenceDirectives3.trace.json b/tests/baselines/reference/typeReferenceDirectives3.trace.json index c936a84dcc09a..58b23783b0b9d 100644 --- a/tests/baselines/reference/typeReferenceDirectives3.trace.json +++ b/tests/baselines/reference/typeReferenceDirectives3.trace.json @@ -1,6 +1,11 @@ [ - "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/'. ========", - "Resolving with primary search path '/types/'", + "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/types'. ========", + "Resolving with primary search path '/types'", + "File '/types/lib/package.json' does not exist.", + "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========", + "======== Resolving type reference directive 'lib', containing file '/__inferred type names__.ts', root directory '/types'. ========", + "Resolving with primary search path '/types'", "File '/types/lib/package.json' does not exist.", "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========" diff --git a/tests/baselines/reference/typeReferenceDirectives4.trace.json b/tests/baselines/reference/typeReferenceDirectives4.trace.json index c936a84dcc09a..58b23783b0b9d 100644 --- a/tests/baselines/reference/typeReferenceDirectives4.trace.json +++ b/tests/baselines/reference/typeReferenceDirectives4.trace.json @@ -1,6 +1,11 @@ [ - "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/'. ========", - "Resolving with primary search path '/types/'", + "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/types'. ========", + "Resolving with primary search path '/types'", + "File '/types/lib/package.json' does not exist.", + "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========", + "======== Resolving type reference directive 'lib', containing file '/__inferred type names__.ts', root directory '/types'. ========", + "Resolving with primary search path '/types'", "File '/types/lib/package.json' does not exist.", "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========" diff --git a/tests/baselines/reference/typeReferenceDirectives5.trace.json b/tests/baselines/reference/typeReferenceDirectives5.trace.json index b6adaf1f513f8..61341afdab3a3 100644 --- a/tests/baselines/reference/typeReferenceDirectives5.trace.json +++ b/tests/baselines/reference/typeReferenceDirectives5.trace.json @@ -1,6 +1,6 @@ [ - "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/'. ========", - "Resolving with primary search path '/types/'", + "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/types'. ========", + "Resolving with primary search path '/types'", "File '/types/lib/package.json' does not exist.", "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========", @@ -10,5 +10,11 @@ "File '/ref.ts' does not exist.", "File '/ref.tsx' does not exist.", "File '/ref.d.ts' exist - use it as a name resolution result.", - "======== Module name './ref' was successfully resolved to '/ref.d.ts'. ========" + "Resolving real path for '/ref.d.ts', result '/ref.d.ts'", + "======== Module name './ref' was successfully resolved to '/ref.d.ts'. ========", + "======== Resolving type reference directive 'lib', containing file '/__inferred type names__.ts', root directory '/types'. ========", + "Resolving with primary search path '/types'", + "File '/types/lib/package.json' does not exist.", + "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========" ] \ No newline at end of file diff --git a/tests/baselines/reference/typeReferenceDirectives6.trace.json b/tests/baselines/reference/typeReferenceDirectives6.trace.json index c936a84dcc09a..58b23783b0b9d 100644 --- a/tests/baselines/reference/typeReferenceDirectives6.trace.json +++ b/tests/baselines/reference/typeReferenceDirectives6.trace.json @@ -1,6 +1,11 @@ [ - "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/'. ========", - "Resolving with primary search path '/types/'", + "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/types'. ========", + "Resolving with primary search path '/types'", + "File '/types/lib/package.json' does not exist.", + "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========", + "======== Resolving type reference directive 'lib', containing file '/__inferred type names__.ts', root directory '/types'. ========", + "Resolving with primary search path '/types'", "File '/types/lib/package.json' does not exist.", "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========" diff --git a/tests/baselines/reference/typeReferenceDirectives7.trace.json b/tests/baselines/reference/typeReferenceDirectives7.trace.json index c936a84dcc09a..58b23783b0b9d 100644 --- a/tests/baselines/reference/typeReferenceDirectives7.trace.json +++ b/tests/baselines/reference/typeReferenceDirectives7.trace.json @@ -1,6 +1,11 @@ [ - "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/'. ========", - "Resolving with primary search path '/types/'", + "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/types'. ========", + "Resolving with primary search path '/types'", + "File '/types/lib/package.json' does not exist.", + "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========", + "======== Resolving type reference directive 'lib', containing file '/__inferred type names__.ts', root directory '/types'. ========", + "Resolving with primary search path '/types'", "File '/types/lib/package.json' does not exist.", "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========" diff --git a/tests/baselines/reference/typeReferenceDirectives8.trace.json b/tests/baselines/reference/typeReferenceDirectives8.trace.json index bfaae056c9ee2..37fa7900a7c69 100644 --- a/tests/baselines/reference/typeReferenceDirectives8.trace.json +++ b/tests/baselines/reference/typeReferenceDirectives8.trace.json @@ -3,9 +3,10 @@ "Module resolution kind is not specified, using 'NodeJs'.", "Loading module as file / folder, candidate module location '/mod1'.", "File '/mod1.ts' exist - use it as a name resolution result.", + "Resolving real path for '/mod1.ts', result '/mod1.ts'", "======== Module name './mod1' was successfully resolved to '/mod1.ts'. ========", - "======== Resolving type reference directive 'lib', containing file not set, root directory '/'. ========", - "Resolving with primary search path '/types/'", + "======== Resolving type reference directive 'lib', containing file '/__inferred type names__.ts', root directory '/types'. ========", + "Resolving with primary search path '/types'", "File '/types/lib/package.json' does not exist.", "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========" diff --git a/tests/baselines/reference/typeReferenceDirectives9.trace.json b/tests/baselines/reference/typeReferenceDirectives9.trace.json index f4fc0937325b9..1024b0cdef3db 100644 --- a/tests/baselines/reference/typeReferenceDirectives9.trace.json +++ b/tests/baselines/reference/typeReferenceDirectives9.trace.json @@ -3,14 +3,16 @@ "Module resolution kind is not specified, using 'NodeJs'.", "Loading module as file / folder, candidate module location '/main'.", "File '/main.ts' exist - use it as a name resolution result.", + "Resolving real path for '/main.ts', result '/main.ts'", "======== Module name './main' was successfully resolved to '/main.ts'. ========", "======== Resolving module './mod1' from '/mod2.ts'. ========", "Module resolution kind is not specified, using 'NodeJs'.", "Loading module as file / folder, candidate module location '/mod1'.", "File '/mod1.ts' exist - use it as a name resolution result.", + "Resolving real path for '/mod1.ts', result '/mod1.ts'", "======== Module name './mod1' was successfully resolved to '/mod1.ts'. ========", - "======== Resolving type reference directive 'lib', containing file '/mod1.ts', root directory '/'. ========", - "Resolving with primary search path '/types/'", + "======== Resolving type reference directive 'lib', containing file '/mod1.ts', root directory '/types'. ========", + "Resolving with primary search path '/types'", "File '/types/lib/package.json' does not exist.", "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========", @@ -18,5 +20,11 @@ "Module resolution kind is not specified, using 'NodeJs'.", "Loading module as file / folder, candidate module location '/main'.", "File '/main.ts' exist - use it as a name resolution result.", - "======== Module name './main' was successfully resolved to '/main.ts'. ========" + "Resolving real path for '/main.ts', result '/main.ts'", + "======== Module name './main' was successfully resolved to '/main.ts'. ========", + "======== Resolving type reference directive 'lib', containing file '/__inferred type names__.ts', root directory '/types'. ========", + "Resolving with primary search path '/types'", + "File '/types/lib/package.json' does not exist.", + "File '/types/lib/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========" ] \ No newline at end of file diff --git a/tests/baselines/reference/typingsLookup1.js b/tests/baselines/reference/typingsLookup1.js index 1f89a2277aade..3927c3db0778d 100644 --- a/tests/baselines/reference/typingsLookup1.js +++ b/tests/baselines/reference/typingsLookup1.js @@ -4,8 +4,10 @@ declare var $: { x: any }; //// [a.ts] +/// $.x; //// [a.js] +/// $.x; diff --git a/tests/baselines/reference/typingsLookup1.symbols b/tests/baselines/reference/typingsLookup1.symbols index 8a21252d1237d..73d01df511e91 100644 --- a/tests/baselines/reference/typingsLookup1.symbols +++ b/tests/baselines/reference/typingsLookup1.symbols @@ -1,10 +1,11 @@ -=== tests/cases/conformance/typings/a.ts === +=== /a.ts === +/// $.x; >$.x : Symbol(x, Decl(index.d.ts, 0, 16)) >$ : Symbol($, Decl(index.d.ts, 0, 11)) >x : Symbol(x, Decl(index.d.ts, 0, 16)) -=== tests/cases/conformance/typings/node_modules/@types/jquery/index.d.ts === +=== /node_modules/@types/jquery/index.d.ts === declare var $: { x: any }; >$ : Symbol($, Decl(index.d.ts, 0, 11)) >x : Symbol(x, Decl(index.d.ts, 0, 16)) diff --git a/tests/baselines/reference/typingsLookup1.trace.json b/tests/baselines/reference/typingsLookup1.trace.json new file mode 100644 index 0000000000000..0463c920bd323 --- /dev/null +++ b/tests/baselines/reference/typingsLookup1.trace.json @@ -0,0 +1,18 @@ +[ + "======== Resolving type reference directive 'jquery', containing file '/a.ts', root directory 'node_modules/@types'. ========", + "Resolving with primary search path 'node_modules/@types'", + "File 'node_modules/@types/jquery/package.json' does not exist.", + "File 'node_modules/@types/jquery/index.d.ts' does not exist.", + "Looking up in 'node_modules' folder, initial location '/'", + "File '/node_modules/jquery.ts' does not exist.", + "File '/node_modules/jquery.d.ts' does not exist.", + "File '/node_modules/jquery/package.json' does not exist.", + "File '/node_modules/jquery/index.ts' does not exist.", + "File '/node_modules/jquery/index.d.ts' does not exist.", + "File '/node_modules/@types/jquery.ts' does not exist.", + "File '/node_modules/@types/jquery.d.ts' does not exist.", + "File '/node_modules/@types/jquery/package.json' does not exist.", + "File '/node_modules/@types/jquery/index.ts' does not exist.", + "File '/node_modules/@types/jquery/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'jquery' was successfully resolved to '/node_modules/@types/jquery/index.d.ts', primary: false. ========" +] \ No newline at end of file diff --git a/tests/baselines/reference/typingsLookup1.types b/tests/baselines/reference/typingsLookup1.types index ca79a8248d5db..e1b696bf343c7 100644 --- a/tests/baselines/reference/typingsLookup1.types +++ b/tests/baselines/reference/typingsLookup1.types @@ -1,10 +1,11 @@ -=== tests/cases/conformance/typings/a.ts === +=== /a.ts === +/// $.x; >$.x : any >$ : { x: any; } >x : any -=== tests/cases/conformance/typings/node_modules/@types/jquery/index.d.ts === +=== /node_modules/@types/jquery/index.d.ts === declare var $: { x: any }; >$ : { x: any; } >x : any diff --git a/tests/cases/compiler/commonSourceDir5.ts b/tests/cases/compiler/commonSourceDir5.ts index d181bef68fe01..7f5239976e879 100644 --- a/tests/cases/compiler/commonSourceDir5.ts +++ b/tests/cases/compiler/commonSourceDir5.ts @@ -1,6 +1,7 @@ // @outFile: concat.js // @module: amd // @moduleResolution: node + // @Filename: A:/bar.ts import {z} from "./foo"; export var x = z + z; diff --git a/tests/cases/compiler/typeReferenceDirectives1.ts b/tests/cases/compiler/typeReferenceDirectives1.ts index 2127bd13f7b0d..e17e498b9784d 100644 --- a/tests/cases/compiler/typeReferenceDirectives1.ts +++ b/tests/cases/compiler/typeReferenceDirectives1.ts @@ -1,7 +1,7 @@ // @noImplicitReferences: true // @traceResolution: true // @declaration: true -// @typesRoot: / +// @typeRoots: /types // @filename: /types/lib/index.d.ts diff --git a/tests/cases/compiler/typeReferenceDirectives10.ts b/tests/cases/compiler/typeReferenceDirectives10.ts index bf0768993c9e5..61971ba44b2ad 100644 --- a/tests/cases/compiler/typeReferenceDirectives10.ts +++ b/tests/cases/compiler/typeReferenceDirectives10.ts @@ -1,6 +1,6 @@ // @noImplicitReferences: true // @declaration: true -// @typesRoot: / +// @typeRoots: /types // @traceResolution: true // @filename: /ref.d.ts diff --git a/tests/cases/compiler/typeReferenceDirectives11.ts b/tests/cases/compiler/typeReferenceDirectives11.ts index c955a5daffcf8..2d93e22bdcf23 100644 --- a/tests/cases/compiler/typeReferenceDirectives11.ts +++ b/tests/cases/compiler/typeReferenceDirectives11.ts @@ -1,6 +1,6 @@ // @noImplicitReferences: true // @declaration: true -// @typesRoot: / +// @typeRoots: /types // @traceResolution: true // @types: lib // @out: output.js diff --git a/tests/cases/compiler/typeReferenceDirectives12.ts b/tests/cases/compiler/typeReferenceDirectives12.ts index ef3c8d9755f6d..efdb1e8312b6f 100644 --- a/tests/cases/compiler/typeReferenceDirectives12.ts +++ b/tests/cases/compiler/typeReferenceDirectives12.ts @@ -1,6 +1,6 @@ // @noImplicitReferences: true // @declaration: true -// @typesRoot: / +// @typeRoots: /types // @traceResolution: true // @out: output.js diff --git a/tests/cases/compiler/typeReferenceDirectives13.ts b/tests/cases/compiler/typeReferenceDirectives13.ts index 816d419e9d540..124c31274ace4 100644 --- a/tests/cases/compiler/typeReferenceDirectives13.ts +++ b/tests/cases/compiler/typeReferenceDirectives13.ts @@ -1,6 +1,6 @@ // @noImplicitReferences: true // @declaration: true -// @typesRoot: / +// @typeRoots: /types // @traceResolution: true // @filename: /ref.d.ts diff --git a/tests/cases/compiler/typeReferenceDirectives2.ts b/tests/cases/compiler/typeReferenceDirectives2.ts index eb651728cea81..31a01a0b8e4bc 100644 --- a/tests/cases/compiler/typeReferenceDirectives2.ts +++ b/tests/cases/compiler/typeReferenceDirectives2.ts @@ -1,7 +1,7 @@ // @noImplicitReferences: true // @traceResolution: true // @declaration: true -// @typesRoot: / +// @typeRoots: /types // @types: lib // @filename: /types/lib/index.d.ts diff --git a/tests/cases/compiler/typeReferenceDirectives3.ts b/tests/cases/compiler/typeReferenceDirectives3.ts index bf81268d141c4..4c2729ab389b3 100644 --- a/tests/cases/compiler/typeReferenceDirectives3.ts +++ b/tests/cases/compiler/typeReferenceDirectives3.ts @@ -1,6 +1,6 @@ // @noImplicitReferences: true // @declaration: true -// @typesRoot: / +// @typeRoots: /types // @traceResolution: true // $ comes from d.ts file - no need to add type reference directive diff --git a/tests/cases/compiler/typeReferenceDirectives4.ts b/tests/cases/compiler/typeReferenceDirectives4.ts index 48eb8a5324a11..ac7346895ef7d 100644 --- a/tests/cases/compiler/typeReferenceDirectives4.ts +++ b/tests/cases/compiler/typeReferenceDirectives4.ts @@ -1,7 +1,7 @@ // @noImplicitReferences: true // @traceResolution: true // @declaration: true -// @typesRoot: / +// @typeRoots: /types // $ comes from d.ts file - no need to add type reference directive diff --git a/tests/cases/compiler/typeReferenceDirectives5.ts b/tests/cases/compiler/typeReferenceDirectives5.ts index 675f932da68b9..bb24b82b32466 100644 --- a/tests/cases/compiler/typeReferenceDirectives5.ts +++ b/tests/cases/compiler/typeReferenceDirectives5.ts @@ -1,7 +1,7 @@ // @noImplicitReferences: true // @traceResolution: true // @declaration: true -// @typesRoot: / +// @typeRoots: /types // @filename: /ref.d.ts export interface $ { x } diff --git a/tests/cases/compiler/typeReferenceDirectives6.ts b/tests/cases/compiler/typeReferenceDirectives6.ts index 120a743009ce2..7154963f1efa3 100644 --- a/tests/cases/compiler/typeReferenceDirectives6.ts +++ b/tests/cases/compiler/typeReferenceDirectives6.ts @@ -1,7 +1,7 @@ // @noImplicitReferences: true // @traceResolution: true // @declaration: true -// @typesRoot: / +// @typeRoots: /types // $ comes from type declaration file - type reference directive should be added diff --git a/tests/cases/compiler/typeReferenceDirectives7.ts b/tests/cases/compiler/typeReferenceDirectives7.ts index f18fed37741d7..79d42fa701853 100644 --- a/tests/cases/compiler/typeReferenceDirectives7.ts +++ b/tests/cases/compiler/typeReferenceDirectives7.ts @@ -1,7 +1,7 @@ // @noImplicitReferences: true // @traceResolution: true // @declaration: true -// @typesRoot: / +// @typeRoots: /types // local value shadows global - no need to add type reference directive diff --git a/tests/cases/compiler/typeReferenceDirectives8.ts b/tests/cases/compiler/typeReferenceDirectives8.ts index 2465d2afb10db..c7725a3aab1ab 100644 --- a/tests/cases/compiler/typeReferenceDirectives8.ts +++ b/tests/cases/compiler/typeReferenceDirectives8.ts @@ -1,6 +1,6 @@ // @noImplicitReferences: true // @declaration: true -// @typesRoot: / +// @typeRoots: /types // @traceResolution: true // @types: lib diff --git a/tests/cases/compiler/typeReferenceDirectives9.ts b/tests/cases/compiler/typeReferenceDirectives9.ts index eb8d6abaef1c0..610c7173c898b 100644 --- a/tests/cases/compiler/typeReferenceDirectives9.ts +++ b/tests/cases/compiler/typeReferenceDirectives9.ts @@ -1,6 +1,6 @@ // @noImplicitReferences: true // @declaration: true -// @typesRoot: / +// @typeRoots: /types // @traceResolution: true // @filename: /types/lib/index.d.ts diff --git a/tests/cases/conformance/references/library-reference-1.ts b/tests/cases/conformance/references/library-reference-1.ts index ca25441521fcc..c6b6cea36efab 100644 --- a/tests/cases/conformance/references/library-reference-1.ts +++ b/tests/cases/conformance/references/library-reference-1.ts @@ -1,13 +1,14 @@ // @noImplicitReferences: true // @traceResolution: true -// @typesRoot: / +// @currentDirectory: /src +// @typeRoots: types // We can find typings in the ./types folder -// @filename: /types/jquery/index.d.ts +// @filename: /src/types/jquery/index.d.ts declare var $: { foo(): void }; -// @filename: /consumer.ts +// @filename: /src/consumer.ts /// $.foo(); diff --git a/tests/cases/conformance/references/library-reference-10.ts b/tests/cases/conformance/references/library-reference-10.ts index 11e065b0a7db9..bc9ec99edcf56 100644 --- a/tests/cases/conformance/references/library-reference-10.ts +++ b/tests/cases/conformance/references/library-reference-10.ts @@ -1,18 +1,19 @@ // @noImplicitReferences: true // @traceResolution: true -// @typesRoot: / +// @currentDirectory: /foo +// @typeRoots: ./types // package.json in a primary reference can refer to another file -// @filename: /types/jquery/package.json +// @filename: /foo/types/jquery/package.json { "typings": "jquery.d.ts" } -// @filename: /types/jquery/jquery.d.ts +// @filename: /foo/types/jquery/jquery.d.ts declare var $: { foo(): void }; -// @filename: /consumer.ts +// @filename: /foo/consumer.ts /// $.foo(); diff --git a/tests/cases/conformance/references/library-reference-13.ts b/tests/cases/conformance/references/library-reference-13.ts index a96437f9b2c3b..92b4b259ba4a9 100644 --- a/tests/cases/conformance/references/library-reference-13.ts +++ b/tests/cases/conformance/references/library-reference-13.ts @@ -6,7 +6,8 @@ // @filename: /a/tsconfig.json { "compilerOptions": { - "types": [ "jquery" ] + "types": [ "jquery" ], + "typeRoots": ["/a/types"] } } diff --git a/tests/cases/conformance/references/library-reference-14.ts b/tests/cases/conformance/references/library-reference-14.ts index 53bca2ab40d16..fa4a63cfcc034 100644 --- a/tests/cases/conformance/references/library-reference-14.ts +++ b/tests/cases/conformance/references/library-reference-14.ts @@ -1,7 +1,8 @@ // @noImplicitReferences: true // @traceResolution: true // @types: jquery -// @typesRoot: /a +// @typeRoots: /a/types +// @currentDirectory: /a // @filename: /a/types/jquery/index.d.ts declare var $: { foo(): void }; diff --git a/tests/cases/conformance/references/library-reference-15.ts b/tests/cases/conformance/references/library-reference-15.ts index dd2179d1af660..417012a4539c9 100644 --- a/tests/cases/conformance/references/library-reference-15.ts +++ b/tests/cases/conformance/references/library-reference-15.ts @@ -1,11 +1,15 @@ // @noImplicitReferences: true // @traceResolution: true // @types: jquery -// @currentDirectory: / +// @currentDirectory: /a +// @typeRoots: types // @filename: /a/types/jquery/index.d.ts declare var $: { foo(): void }; +// @filename: /a/types/jquery2/index.d.ts +declare var $2: { foo(): void }; // @filename: /a/b/consumer.ts -$.foo(); +$.foo(); // should OK +$2.foo(); // should error \ No newline at end of file diff --git a/tests/cases/conformance/references/library-reference-2.ts b/tests/cases/conformance/references/library-reference-2.ts index d8975664428cb..9ac7cd4f4d321 100644 --- a/tests/cases/conformance/references/library-reference-2.ts +++ b/tests/cases/conformance/references/library-reference-2.ts @@ -1,6 +1,7 @@ // @noImplicitReferences: true // @traceResolution: true -// @typesRoot: / +// @typeRoots: /types +// @currentDirectory: test // package.json in a primary reference can refer to another file diff --git a/tests/cases/conformance/references/library-reference-3.ts b/tests/cases/conformance/references/library-reference-3.ts index 1af6df89d19d6..88ef916eaaeba 100644 --- a/tests/cases/conformance/references/library-reference-3.ts +++ b/tests/cases/conformance/references/library-reference-3.ts @@ -1,6 +1,6 @@ // @noImplicitReferences: true // @traceResolution: true -// @typesRoot: /src +// @currentDirectory: /src // Secondary references are possible diff --git a/tests/cases/conformance/references/library-reference-4.ts b/tests/cases/conformance/references/library-reference-4.ts index 92f1b4008beb6..9a615f470efff 100644 --- a/tests/cases/conformance/references/library-reference-4.ts +++ b/tests/cases/conformance/references/library-reference-4.ts @@ -1,6 +1,7 @@ // @noImplicitReferences: true // @traceResolution: true -// @typesRoot: /src +// @typeRoots: /src +// @currentDirectory: test // Secondary references may be duplicated if they agree in content diff --git a/tests/cases/conformance/references/library-reference-5.ts b/tests/cases/conformance/references/library-reference-5.ts index 1fe327a1c693a..dd72da36dd0a3 100644 --- a/tests/cases/conformance/references/library-reference-5.ts +++ b/tests/cases/conformance/references/library-reference-5.ts @@ -1,6 +1,7 @@ // @noImplicitReferences: true // @traceResolution: true // @currentDirectory: / +// @typeRoots: types // Secondary references may not be duplicated if they disagree in content diff --git a/tests/cases/conformance/references/library-reference-6.ts b/tests/cases/conformance/references/library-reference-6.ts index a746262dd73b1..765a6760aa49d 100644 --- a/tests/cases/conformance/references/library-reference-6.ts +++ b/tests/cases/conformance/references/library-reference-6.ts @@ -1,9 +1,10 @@ // @noImplicitReferences: true // @traceResolution: true +// @currentDirectory: / // The primary lookup folder is relative to tsconfig.json, if present -// @filename: /types/alpha/index.d.ts +// @filename: /node_modules/@types/alpha/index.d.ts declare var alpha: { a: string }; // @filename: /src/foo.ts @@ -12,4 +13,7 @@ var x: string = alpha.a; // @filename: /tsconfig.json { + "compilerOptions": { + "typesRoot": "types" + } } diff --git a/tests/cases/conformance/references/library-reference-8.ts b/tests/cases/conformance/references/library-reference-8.ts index 9de93776989b5..1c4ab76f8a10e 100644 --- a/tests/cases/conformance/references/library-reference-8.ts +++ b/tests/cases/conformance/references/library-reference-8.ts @@ -1,18 +1,19 @@ // @noImplicitReferences: true // @traceResolution: true -// @typesRoot: / +// @typeRoots: /test/types +// @currentDirectory: /test // Don't crash in circular library reference situations -// @filename: /types/alpha/index.d.ts +// @filename: /test/types/alpha/index.d.ts /// declare var alpha: { a: string }; -// @filename: /types/beta/index.d.ts +// @filename: /test/types/beta/index.d.ts /// declare var beta: { b: string }; -// @filename: /foo.ts +// @filename: /test/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 deleted file mode 100644 index a187d3c23b91f..0000000000000 --- a/tests/cases/conformance/references/library-reference-9.ts +++ /dev/null @@ -1,20 +0,0 @@ -// @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/conformance/typings/typingsLookup1.ts b/tests/cases/conformance/typings/typingsLookup1.ts index 702bd4bc21cff..555d4569af34d 100644 --- a/tests/cases/conformance/typings/typingsLookup1.ts +++ b/tests/cases/conformance/typings/typingsLookup1.ts @@ -1,10 +1,12 @@ +// @traceResolution: true // @noImplicitReferences: true -// @filename: tsconfig.json +// @filename: /tsconfig.json { "files": "a.ts" } -// @filename: node_modules/@types/jquery/index.d.ts +// @filename: /node_modules/@types/jquery/index.d.ts declare var $: { x: any }; -// @filename: a.ts +// @filename: /a.ts +/// $.x; diff --git a/tests/cases/fourslash/goToDefinitionTypeReferenceDirective.ts b/tests/cases/fourslash/goToDefinitionTypeReferenceDirective.ts index 3aaa3ab980f08..78dfa94c5e44a 100644 --- a/tests/cases/fourslash/goToDefinitionTypeReferenceDirective.ts +++ b/tests/cases/fourslash/goToDefinitionTypeReferenceDirective.ts @@ -1,6 +1,6 @@ /// -// @typesRoot: src +// @typeRoots: src/types // @Filename: src/types/lib/index.d.ts /////*0*/declare let $: {x: number}; diff --git a/tests/cases/fourslash/shims-pp/goToDefinitionTypeReferenceDirective.ts b/tests/cases/fourslash/shims-pp/goToDefinitionTypeReferenceDirective.ts index 3aaa3ab980f08..78dfa94c5e44a 100644 --- a/tests/cases/fourslash/shims-pp/goToDefinitionTypeReferenceDirective.ts +++ b/tests/cases/fourslash/shims-pp/goToDefinitionTypeReferenceDirective.ts @@ -1,6 +1,6 @@ /// -// @typesRoot: src +// @typeRoots: src/types // @Filename: src/types/lib/index.d.ts /////*0*/declare let $: {x: number}; diff --git a/tests/cases/fourslash/shims/goToDefinitionTypeReferenceDirective.ts b/tests/cases/fourslash/shims/goToDefinitionTypeReferenceDirective.ts index 3aaa3ab980f08..dc2fc356c57aa 100644 --- a/tests/cases/fourslash/shims/goToDefinitionTypeReferenceDirective.ts +++ b/tests/cases/fourslash/shims/goToDefinitionTypeReferenceDirective.ts @@ -1,6 +1,6 @@ -/// +/// -// @typesRoot: src +// @typeRoots: src/types // @Filename: src/types/lib/index.d.ts /////*0*/declare let $: {x: number}; diff --git a/tests/cases/unittests/moduleResolution.ts b/tests/cases/unittests/moduleResolution.ts index ab5eddc0997c9..16fc7df8d70da 100644 --- a/tests/cases/unittests/moduleResolution.ts +++ b/tests/cases/unittests/moduleResolution.ts @@ -314,6 +314,7 @@ namespace ts { getDefaultLibFileName: () => "lib.d.ts", writeFile: (fileName, content): void => { throw new Error("NotImplemented"); }, getCurrentDirectory: () => currentDirectory, + getDirectories: () => [], getCanonicalFileName: fileName => fileName.toLowerCase(), getNewLine: () => "\r\n", useCaseSensitiveFileNames: () => false, @@ -397,6 +398,7 @@ export = C; getDefaultLibFileName: () => "lib.d.ts", writeFile: (fileName, content): void => { throw new Error("NotImplemented"); }, getCurrentDirectory: () => currentDirectory, + getDirectories: () => [], getCanonicalFileName, getNewLine: () => "\r\n", useCaseSensitiveFileNames: () => useCaseSensitiveFileNames, @@ -955,7 +957,7 @@ import b = require("./moduleB.ts"); describe("Type reference directive resolution: ", () => { function test(typesRoot: string, typeDirective: string, primary: boolean, initialFile: File, targetFile: File, ...otherFiles: File[]) { const host = createModuleResolutionHost(/*hasDirectoryExists*/ false, ...[initialFile, targetFile].concat(...otherFiles)); - const result = resolveTypeReferenceDirective(typeDirective, initialFile.name, {typesRoot}, host); + const result = resolveTypeReferenceDirective(typeDirective, initialFile.name, {typeRoots: [typesRoot]}, 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"); @@ -965,64 +967,64 @@ import b = require("./moduleB.ts"); { const f1 = { name: "/root/src/app.ts" }; const f2 = { name: "/root/src/types/lib/index.d.ts" }; - test(/*typesRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ true, f1, f2); + test(/*typesRoot*/"/root/src/types", /* 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(/*typesRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ true, f1, f2, package); + test(/*typesRoot*/"/root/src/types", /* 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(/*typesRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ true, f1, f2); + test(/*typesRoot*/"/root/src/types", /* typeDirective */"lib", /*primary*/ false, 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(/*typesRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ true, f1, f2, package); + test(/*typesRoot*/"/root/src/types", /* typeDirective */"lib", /*primary*/ false, f1, f2, package); } { const f1 = { name: "/root/src/app.ts" }; const f2 = { name: "/root/src/node_modules/@types/lib/index.d.ts" }; - test(/*typesRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ true, f1, f2); + test(/*typesRoot*/"/root/src/types", /* typeDirective */"lib", /*primary*/ false, 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(/*typesRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ true, f1, f2, package); + test(/*typesRoot*/"/root/src/types", /* typeDirective */"lib", /*primary*/ false, 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(/*typesRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ false, f1, f2); + test(/*typesRoot*/"/root/src/types", /* typeDirective */"lib", /*primary*/ false, f1, f2); } { const f1 = { name: "/root/src/app.ts" }; const f2 = { name: "/root/node_modules/lib/index.d.ts" }; - test(/*typesRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ false, f1, f2); + test(/*typesRoot*/"/root/src/types", /* 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(/*typesRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ false, f1, f2, package); + test(/*typesRoot*/"/root/src/types", /* 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(/*typesRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ false, f1, f2); + test(/*typesRoot*/"/root/src/types", /* 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(/*typesRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ false, f1, f2, package); + test(/*typesRoot*/"/root/src/types", /* typeDirective */"lib", /*primary*/ false, f1, f2, package); } }); it("Primary resolution overrides secondary resolutions", () => { @@ -1030,7 +1032,7 @@ import b = require("./moduleB.ts"); 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(/*typesRoot*/"/root/src", /* typeDirective */"lib", /*primary*/ true, f1, f2, f3); + test(/*typesRoot*/"/root/src/types", /* typeDirective */"lib", /*primary*/ true, f1, f2, f3); } }); it("Reused program keeps errors", () => { @@ -1050,6 +1052,7 @@ import b = require("./moduleB.ts"); throw new Error("NYI"); }, getCurrentDirectory: () => "/", + getDirectories: () => [], getCanonicalFileName: f => f.toLowerCase(), getNewLine: () => "\r\n", useCaseSensitiveFileNames: () => false, diff --git a/tests/cases/unittests/reuseProgramStructure.ts b/tests/cases/unittests/reuseProgramStructure.ts index 6ab90595f9f70..154cfdd702f8e 100644 --- a/tests/cases/unittests/reuseProgramStructure.ts +++ b/tests/cases/unittests/reuseProgramStructure.ts @@ -117,6 +117,9 @@ namespace ts { getCurrentDirectory(): string { return ""; }, + getDirectories(path: string): string[] { + return []; + }, getCanonicalFileName(fileName): string { return sys && sys.useCaseSensitiveFileNames ? fileName : fileName.toLowerCase(); }, @@ -336,7 +339,7 @@ namespace ts { { name: "/a.ts", text: SourceText.New("/// ", "", "var x = $") }, { name: "/types/typedefs/index.d.ts", text: SourceText.New("", "", "declare var $: number") }, ]; - const options: CompilerOptions = { target, typesRoot: "/" }; + const options: CompilerOptions = { target, typeRoots: ["/types"] }; const program_1 = newProgram(files, ["/a.ts"], options); checkResolvedTypeDirectivesCache(program_1, "/a.ts", { "typedefs": { resolvedFileName: "/types/typedefs/index.d.ts", primary: true } }); From e8ac1abbd6b3b1b720e39190b74252c76edab043 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Mon, 13 Jun 2016 09:33:49 -0700 Subject: [PATCH 2/7] Baseline fix, CR comments, lint --- src/compiler/commandLineParser.ts | 5 ++-- src/compiler/program.ts | 4 +-- src/compiler/types.ts | 2 +- src/server/editorServices.ts | 2 +- src/services/services.ts | 2 +- .../reference/library-reference-6.symbols | 16 ++++++++++ .../reference/library-reference-6.trace.json | 30 +++++-------------- .../reference/library-reference-6.types | 16 ++++++++++ .../moduleResolutionWithExtensions.trace.json | 4 +++ 9 files changed, 51 insertions(+), 30 deletions(-) create mode 100644 tests/baselines/reference/library-reference-6.symbols create mode 100644 tests/baselines/reference/library-reference-6.types diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index 74bfdf3e96178..9e9fb8e2ee20c 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -341,8 +341,9 @@ namespace ts { type: "list", element: { name: "typeRoots", - type: "string" - } + type: "string", + isFilePath: true + } }, { name: "types", diff --git a/src/compiler/program.ts b/src/compiler/program.ts index f6cc048ace660..9cb000a4d615a 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -217,9 +217,9 @@ namespace ts { // Check primary library paths if (typeRoots.length) { if (traceEnabled) { - trace(host, Diagnostics.Resolving_with_primary_search_path_0, typeRoots.join(', ')); + trace(host, Diagnostics.Resolving_with_primary_search_path_0, typeRoots.join(", ")); } - const primarySearchPaths = options.typeRoots || defaultTypeRoots; + const primarySearchPaths = typeRoots; for (const typeRoot of primarySearchPaths) { const candidate = combinePaths(typeRoot, typeReferenceDirectiveName); const candidateDirectory = getDirectoryPath(candidate); diff --git a/src/compiler/types.ts b/src/compiler/types.ts index d9edd5a76c420..db34bb7c6e861 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2562,7 +2562,7 @@ namespace ts { target?: ScriptTarget; traceResolution?: boolean; types?: string[]; - // Paths used to used to compute primary types search locations + /** Paths used to used to compute primary types search locations */ typeRoots?: string[]; typesSearchPaths?: string[]; /*@internal*/ version?: boolean; diff --git a/src/server/editorServices.ts b/src/server/editorServices.ts index 53b0c28671f68..b887b5c725668 100644 --- a/src/server/editorServices.ts +++ b/src/server/editorServices.ts @@ -316,7 +316,7 @@ namespace ts.server { } getDirectories(path: string): string[] { - return this.host.getDirectories ? this.host.getDirectories(path) : []; + return this.host.getDirectories(path); } /** diff --git a/src/services/services.ts b/src/services/services.ts index 6d29310f93c52..ba157afaf9f18 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -2141,7 +2141,7 @@ namespace ts { const getCanonicalFileName = createGetCanonicalFileName(!!useCaseSensitiveFileNames); function getKeyForCompilationSettings(settings: CompilerOptions): DocumentRegistryBucketKey { - return `_${settings.target}|${settings.module}|${settings.noResolve}|${settings.jsx}|${settings.allowJs}|${settings.baseUrl}|${settings.typeRoots}|${JSON.stringify(settings.rootDirs)}|${JSON.stringify(settings.paths)}`; + return `_${settings.target}|${settings.module}|${settings.noResolve}|${settings.jsx}|${settings.allowJs}|${settings.baseUrl}|${JSON.stringify(settings.typeRoots)}|${JSON.stringify(settings.rootDirs)}|${JSON.stringify(settings.paths)}`; } function getBucketForCompilationSettings(key: DocumentRegistryBucketKey, createIfMissing: boolean): FileMap { diff --git a/tests/baselines/reference/library-reference-6.symbols b/tests/baselines/reference/library-reference-6.symbols new file mode 100644 index 0000000000000..595d43df3faec --- /dev/null +++ b/tests/baselines/reference/library-reference-6.symbols @@ -0,0 +1,16 @@ +=== /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)) + +=== /node_modules/@types/alpha/index.d.ts === + +// The primary lookup folder is relative to tsconfig.json, if present + +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-6.trace.json b/tests/baselines/reference/library-reference-6.trace.json index fc29f3f2478b8..21843c2ecf414 100644 --- a/tests/baselines/reference/library-reference-6.trace.json +++ b/tests/baselines/reference/library-reference-6.trace.json @@ -2,27 +2,11 @@ "======== Resolving type reference directive 'alpha', containing file '/src/foo.ts', root directory 'node_modules/@types'. ========", "Resolving with primary search path 'node_modules/@types'", "File 'node_modules/@types/alpha/package.json' does not exist.", - "File 'node_modules/@types/alpha/index.d.ts' does not exist.", - "Looking up in 'node_modules' folder, initial location '/src'", - "File '/src/node_modules/alpha.ts' does not exist.", - "File '/src/node_modules/alpha.d.ts' does not exist.", - "File '/src/node_modules/alpha/package.json' does not exist.", - "File '/src/node_modules/alpha/index.ts' does not exist.", - "File '/src/node_modules/alpha/index.d.ts' does not exist.", - "File '/src/node_modules/@types/alpha.ts' does not exist.", - "File '/src/node_modules/@types/alpha.d.ts' does not exist.", - "File '/src/node_modules/@types/alpha/package.json' does not exist.", - "File '/src/node_modules/@types/alpha/index.ts' does not exist.", - "File '/src/node_modules/@types/alpha/index.d.ts' does not exist.", - "File '/node_modules/alpha.ts' does not exist.", - "File '/node_modules/alpha.d.ts' does not exist.", - "File '/node_modules/alpha/package.json' does not exist.", - "File '/node_modules/alpha/index.ts' does not exist.", - "File '/node_modules/alpha/index.d.ts' does not exist.", - "File '/node_modules/@types/alpha.ts' does not exist.", - "File '/node_modules/@types/alpha.d.ts' does not exist.", - "File '/node_modules/@types/alpha/package.json' does not exist.", - "File '/node_modules/@types/alpha/index.ts' does not exist.", - "File '/node_modules/@types/alpha/index.d.ts' does not exist.", - "======== Type reference directive 'alpha' was not resolved. ========" + "File 'node_modules/@types/alpha/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'alpha' was successfully resolved to 'node_modules/@types/alpha/index.d.ts', primary: true. ========", + "======== Resolving type reference directive 'alpha', containing file '/src/__inferred type names__.ts', root directory 'node_modules/@types'. ========", + "Resolving with primary search path 'node_modules/@types'", + "File 'node_modules/@types/alpha/package.json' does not exist.", + "File 'node_modules/@types/alpha/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'alpha' was successfully resolved to 'node_modules/@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 new file mode 100644 index 0000000000000..e2762c0943a9b --- /dev/null +++ b/tests/baselines/reference/library-reference-6.types @@ -0,0 +1,16 @@ +=== /src/foo.ts === +/// +var x: string = alpha.a; +>x : string +>alpha.a : string +>alpha : { a: string; } +>a : string + +=== /node_modules/@types/alpha/index.d.ts === + +// The primary lookup folder is relative to tsconfig.json, if present + +declare var alpha: { a: string }; +>alpha : { a: string; } +>a : string + diff --git a/tests/baselines/reference/moduleResolutionWithExtensions.trace.json b/tests/baselines/reference/moduleResolutionWithExtensions.trace.json index 6e6589d7c1f8a..7dc9e8c104b8c 100644 --- a/tests/baselines/reference/moduleResolutionWithExtensions.trace.json +++ b/tests/baselines/reference/moduleResolutionWithExtensions.trace.json @@ -3,11 +3,13 @@ "Module resolution kind is not specified, using 'NodeJs'.", "Loading module as file / folder, candidate module location '/src/a'.", "File '/src/a.ts' exist - use it as a name resolution result.", + "Resolving real path for '/src/a.ts', result '/src/a.ts'", "======== Module name './a' was successfully resolved to '/src/a.ts'. ========", "======== Resolving module './a.ts' from '/src/c.ts'. ========", "Module resolution kind is not specified, using 'NodeJs'.", "Loading module as file / folder, candidate module location '/src/a.ts'.", "File '/src/a.ts' exist - use it as a name resolution result.", + "Resolving real path for '/src/a.ts', result '/src/a.ts'", "======== Module name './a.ts' was successfully resolved to '/src/a.ts'. ========", "======== Resolving module './a.js' from '/src/d.ts'. ========", "Module resolution kind is not specified, using 'NodeJs'.", @@ -17,6 +19,7 @@ "File '/src/a.js.d.ts' does not exist.", "File name '/src/a.js' has a '.js' extension - stripping it", "File '/src/a.ts' exist - use it as a name resolution result.", + "Resolving real path for '/src/a.ts', result '/src/a.ts'", "======== Module name './a.js' was successfully resolved to '/src/a.ts'. ========", "======== Resolving module './jquery.js' from '/src/jquery_user_1.ts'. ========", "Module resolution kind is not specified, using 'NodeJs'.", @@ -28,5 +31,6 @@ "File '/src/jquery.ts' does not exist.", "File '/src/jquery.tsx' does not exist.", "File '/src/jquery.d.ts' exist - use it as a name resolution result.", + "Resolving real path for '/src/jquery.d.ts', result '/src/jquery.d.ts'", "======== Module name './jquery.js' was successfully resolved to '/src/jquery.d.ts'. ========" ] \ No newline at end of file From 6702e651a3e6de28a9a751d2c4282494412a0081 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Mon, 13 Jun 2016 10:15:29 -0700 Subject: [PATCH 3/7] CR changes --- src/compiler/program.ts | 4 +++- .../reference/typingsLookup1.trace.json | 16 ++++++++++++++++ .../references/library-reference-6.ts | 3 --- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 9cb000a4d615a..59ae0d862ad9f 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -1031,7 +1031,9 @@ namespace ts { // Walk the primary type lookup locations let result: string[] = []; if (host.directoryExists && host.getDirectories) { - for (const root of options.typeRoots || defaultTypeRoots) { + const typeRoots = options.typeRoots || + defaultTypeRoots.map(d => combinePaths(options.configFilePath ? getDirectoryPath(options.configFilePath) : host.getCurrentDirectory(), d)); + for (const root of typeRoots) { if (host.directoryExists(root)) { result = result.concat(host.getDirectories(root)); } diff --git a/tests/baselines/reference/typingsLookup1.trace.json b/tests/baselines/reference/typingsLookup1.trace.json index 0463c920bd323..ad0354157c381 100644 --- a/tests/baselines/reference/typingsLookup1.trace.json +++ b/tests/baselines/reference/typingsLookup1.trace.json @@ -14,5 +14,21 @@ "File '/node_modules/@types/jquery/package.json' does not exist.", "File '/node_modules/@types/jquery/index.ts' does not exist.", "File '/node_modules/@types/jquery/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'jquery' was successfully resolved to '/node_modules/@types/jquery/index.d.ts', primary: false. ========", + "======== Resolving type reference directive 'jquery', containing file '/__inferred type names__.ts', root directory 'node_modules/@types'. ========", + "Resolving with primary search path 'node_modules/@types'", + "File 'node_modules/@types/jquery/package.json' does not exist.", + "File 'node_modules/@types/jquery/index.d.ts' does not exist.", + "Looking up in 'node_modules' folder, initial location '/'", + "File '/node_modules/jquery.ts' does not exist.", + "File '/node_modules/jquery.d.ts' does not exist.", + "File '/node_modules/jquery/package.json' does not exist.", + "File '/node_modules/jquery/index.ts' does not exist.", + "File '/node_modules/jquery/index.d.ts' does not exist.", + "File '/node_modules/@types/jquery.ts' does not exist.", + "File '/node_modules/@types/jquery.d.ts' does not exist.", + "File '/node_modules/@types/jquery/package.json' does not exist.", + "File '/node_modules/@types/jquery/index.ts' does not exist.", + "File '/node_modules/@types/jquery/index.d.ts' exist - use it as a name resolution result.", "======== Type reference directive 'jquery' was successfully resolved to '/node_modules/@types/jquery/index.d.ts', primary: false. ========" ] \ No newline at end of file diff --git a/tests/cases/conformance/references/library-reference-6.ts b/tests/cases/conformance/references/library-reference-6.ts index 765a6760aa49d..13ad382e63654 100644 --- a/tests/cases/conformance/references/library-reference-6.ts +++ b/tests/cases/conformance/references/library-reference-6.ts @@ -13,7 +13,4 @@ var x: string = alpha.a; // @filename: /tsconfig.json { - "compilerOptions": { - "typesRoot": "types" - } } From b10d93291fb6b3a7087bff1e93b39ccbb6b4099a Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Mon, 13 Jun 2016 14:20:31 -0700 Subject: [PATCH 4/7] Absolute-ify paths in both places --- src/compiler/program.ts | 3 +- .../reference/library-reference-11.trace.json | 8 ++--- .../reference/library-reference-12.trace.json | 8 ++--- .../reference/library-reference-3.trace.json | 8 ++--- .../reference/library-reference-6.trace.json | 20 +++++------ .../reference/library-reference-7.trace.json | 8 ++--- .../reference/typingsLookup1.trace.json | 34 ++++--------------- 7 files changed, 34 insertions(+), 55 deletions(-) diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 59ae0d862ad9f..28dd6275143a9 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -192,7 +192,8 @@ namespace ts { traceEnabled }; - const typeRoots = options.typeRoots || defaultTypeRoots; + const typeRoots = options.typeRoots || + defaultTypeRoots.map(d => combinePaths(options.configFilePath ? getDirectoryPath(options.configFilePath) : host.getCurrentDirectory(), d)); if (traceEnabled) { if (containingFile === undefined) { if (typeRoots === undefined) { diff --git a/tests/baselines/reference/library-reference-11.trace.json b/tests/baselines/reference/library-reference-11.trace.json index 7f6a32a0b238f..365fe3ce72d2c 100644 --- a/tests/baselines/reference/library-reference-11.trace.json +++ b/tests/baselines/reference/library-reference-11.trace.json @@ -1,8 +1,8 @@ [ - "======== Resolving type reference directive 'jquery', containing file '/a/b/consumer.ts', root directory 'node_modules/@types'. ========", - "Resolving with primary search path 'node_modules/@types'", - "File 'node_modules/@types/jquery/package.json' does not exist.", - "File 'node_modules/@types/jquery/index.d.ts' does not exist.", + "======== Resolving type reference directive 'jquery', containing file '/a/b/consumer.ts', root directory '/node_modules/@types'. ========", + "Resolving with primary search path '/node_modules/@types'", + "File '/node_modules/@types/jquery/package.json' does not exist.", + "File '/node_modules/@types/jquery/index.d.ts' does not exist.", "Looking up in 'node_modules' folder, initial location '/a/b'", "File '/a/b/node_modules/jquery.ts' does not exist.", "File '/a/b/node_modules/jquery.d.ts' does not exist.", diff --git a/tests/baselines/reference/library-reference-12.trace.json b/tests/baselines/reference/library-reference-12.trace.json index b3debaec9d6dd..84144f82729c6 100644 --- a/tests/baselines/reference/library-reference-12.trace.json +++ b/tests/baselines/reference/library-reference-12.trace.json @@ -1,8 +1,8 @@ [ - "======== Resolving type reference directive 'jquery', containing file '/a/b/consumer.ts', root directory 'node_modules/@types'. ========", - "Resolving with primary search path 'node_modules/@types'", - "File 'node_modules/@types/jquery/package.json' does not exist.", - "File 'node_modules/@types/jquery/index.d.ts' does not exist.", + "======== Resolving type reference directive 'jquery', containing file '/a/b/consumer.ts', root directory '/node_modules/@types'. ========", + "Resolving with primary search path '/node_modules/@types'", + "File '/node_modules/@types/jquery/package.json' does not exist.", + "File '/node_modules/@types/jquery/index.d.ts' does not exist.", "Looking up in 'node_modules' folder, initial location '/a/b'", "File '/a/b/node_modules/jquery.ts' does not exist.", "File '/a/b/node_modules/jquery.d.ts' does not exist.", diff --git a/tests/baselines/reference/library-reference-3.trace.json b/tests/baselines/reference/library-reference-3.trace.json index 909e42140c850..730835c65e9ac 100644 --- a/tests/baselines/reference/library-reference-3.trace.json +++ b/tests/baselines/reference/library-reference-3.trace.json @@ -1,8 +1,8 @@ [ - "======== Resolving type reference directive 'jquery', containing file '/src/consumer.ts', root directory 'node_modules/@types'. ========", - "Resolving with primary search path 'node_modules/@types'", - "File 'node_modules/@types/jquery/package.json' does not exist.", - "File 'node_modules/@types/jquery/index.d.ts' does not exist.", + "======== Resolving type reference directive 'jquery', containing file '/src/consumer.ts', root directory '/src/node_modules/@types'. ========", + "Resolving with primary search path '/src/node_modules/@types'", + "File '/src/node_modules/@types/jquery/package.json' does not exist.", + "File '/src/node_modules/@types/jquery/index.d.ts' does not exist.", "Looking up in 'node_modules' folder, initial location '/src'", "File '/src/node_modules/jquery.ts' does not exist.", "File '/src/node_modules/jquery.d.ts' does not exist.", diff --git a/tests/baselines/reference/library-reference-6.trace.json b/tests/baselines/reference/library-reference-6.trace.json index 21843c2ecf414..48fb49e6c7fb9 100644 --- a/tests/baselines/reference/library-reference-6.trace.json +++ b/tests/baselines/reference/library-reference-6.trace.json @@ -1,12 +1,12 @@ [ - "======== Resolving type reference directive 'alpha', containing file '/src/foo.ts', root directory 'node_modules/@types'. ========", - "Resolving with primary search path 'node_modules/@types'", - "File 'node_modules/@types/alpha/package.json' does not exist.", - "File 'node_modules/@types/alpha/index.d.ts' exist - use it as a name resolution result.", - "======== Type reference directive 'alpha' was successfully resolved to 'node_modules/@types/alpha/index.d.ts', primary: true. ========", - "======== Resolving type reference directive 'alpha', containing file '/src/__inferred type names__.ts', root directory 'node_modules/@types'. ========", - "Resolving with primary search path 'node_modules/@types'", - "File 'node_modules/@types/alpha/package.json' does not exist.", - "File 'node_modules/@types/alpha/index.d.ts' exist - use it as a name resolution result.", - "======== Type reference directive 'alpha' was successfully resolved to 'node_modules/@types/alpha/index.d.ts', primary: true. ========" + "======== Resolving type reference directive 'alpha', containing file '/src/foo.ts', root directory '/node_modules/@types'. ========", + "Resolving with primary search path '/node_modules/@types'", + "File '/node_modules/@types/alpha/package.json' does not exist.", + "File '/node_modules/@types/alpha/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'alpha' was successfully resolved to '/node_modules/@types/alpha/index.d.ts', primary: true. ========", + "======== Resolving type reference directive 'alpha', containing file '/src/__inferred type names__.ts', root directory '/node_modules/@types'. ========", + "Resolving with primary search path '/node_modules/@types'", + "File '/node_modules/@types/alpha/package.json' does not exist.", + "File '/node_modules/@types/alpha/index.d.ts' exist - use it as a name resolution result.", + "======== Type reference directive 'alpha' was successfully resolved to '/node_modules/@types/alpha/index.d.ts', primary: true. ========" ] \ No newline at end of file diff --git a/tests/baselines/reference/library-reference-7.trace.json b/tests/baselines/reference/library-reference-7.trace.json index 909e42140c850..b681ea312a8bb 100644 --- a/tests/baselines/reference/library-reference-7.trace.json +++ b/tests/baselines/reference/library-reference-7.trace.json @@ -1,8 +1,8 @@ [ - "======== Resolving type reference directive 'jquery', containing file '/src/consumer.ts', root directory 'node_modules/@types'. ========", - "Resolving with primary search path 'node_modules/@types'", - "File 'node_modules/@types/jquery/package.json' does not exist.", - "File 'node_modules/@types/jquery/index.d.ts' does not exist.", + "======== Resolving type reference directive 'jquery', containing file '/src/consumer.ts', root directory '/node_modules/@types'. ========", + "Resolving with primary search path '/node_modules/@types'", + "File '/node_modules/@types/jquery/package.json' does not exist.", + "File '/node_modules/@types/jquery/index.d.ts' does not exist.", "Looking up in 'node_modules' folder, initial location '/src'", "File '/src/node_modules/jquery.ts' does not exist.", "File '/src/node_modules/jquery.d.ts' does not exist.", diff --git a/tests/baselines/reference/typingsLookup1.trace.json b/tests/baselines/reference/typingsLookup1.trace.json index ad0354157c381..83b0e91d6c7c1 100644 --- a/tests/baselines/reference/typingsLookup1.trace.json +++ b/tests/baselines/reference/typingsLookup1.trace.json @@ -1,34 +1,12 @@ [ - "======== Resolving type reference directive 'jquery', containing file '/a.ts', root directory 'node_modules/@types'. ========", - "Resolving with primary search path 'node_modules/@types'", - "File 'node_modules/@types/jquery/package.json' does not exist.", - "File 'node_modules/@types/jquery/index.d.ts' does not exist.", - "Looking up in 'node_modules' folder, initial location '/'", - "File '/node_modules/jquery.ts' does not exist.", - "File '/node_modules/jquery.d.ts' does not exist.", - "File '/node_modules/jquery/package.json' does not exist.", - "File '/node_modules/jquery/index.ts' does not exist.", - "File '/node_modules/jquery/index.d.ts' does not exist.", - "File '/node_modules/@types/jquery.ts' does not exist.", - "File '/node_modules/@types/jquery.d.ts' does not exist.", + "======== Resolving type reference directive 'jquery', containing file '/a.ts', root directory '/node_modules/@types'. ========", + "Resolving with primary search path '/node_modules/@types'", "File '/node_modules/@types/jquery/package.json' does not exist.", - "File '/node_modules/@types/jquery/index.ts' does not exist.", "File '/node_modules/@types/jquery/index.d.ts' exist - use it as a name resolution result.", - "======== Type reference directive 'jquery' was successfully resolved to '/node_modules/@types/jquery/index.d.ts', primary: false. ========", - "======== Resolving type reference directive 'jquery', containing file '/__inferred type names__.ts', root directory 'node_modules/@types'. ========", - "Resolving with primary search path 'node_modules/@types'", - "File 'node_modules/@types/jquery/package.json' does not exist.", - "File 'node_modules/@types/jquery/index.d.ts' does not exist.", - "Looking up in 'node_modules' folder, initial location '/'", - "File '/node_modules/jquery.ts' does not exist.", - "File '/node_modules/jquery.d.ts' does not exist.", - "File '/node_modules/jquery/package.json' does not exist.", - "File '/node_modules/jquery/index.ts' does not exist.", - "File '/node_modules/jquery/index.d.ts' does not exist.", - "File '/node_modules/@types/jquery.ts' does not exist.", - "File '/node_modules/@types/jquery.d.ts' does not exist.", + "======== Type reference directive 'jquery' was successfully resolved to '/node_modules/@types/jquery/index.d.ts', primary: true. ========", + "======== Resolving type reference directive 'jquery', containing file '/__inferred type names__.ts', root directory '/node_modules/@types'. ========", + "Resolving with primary search path '/node_modules/@types'", "File '/node_modules/@types/jquery/package.json' does not exist.", - "File '/node_modules/@types/jquery/index.ts' does not exist.", "File '/node_modules/@types/jquery/index.d.ts' exist - use it as a name resolution result.", - "======== Type reference directive 'jquery' was successfully resolved to '/node_modules/@types/jquery/index.d.ts', primary: false. ========" + "======== Type reference directive 'jquery' was successfully resolved to '/node_modules/@types/jquery/index.d.ts', primary: true. ========" ] \ No newline at end of file From 29f52914530e2c632cb3cd5bea9dcd8fe8bca327 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Mon, 13 Jun 2016 14:37:07 -0700 Subject: [PATCH 5/7] Refactor --- src/compiler/program.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 28dd6275143a9..15afbe182656c 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -178,6 +178,11 @@ namespace ts { const typeReferenceExtensions = [".d.ts"]; + function getEffectiveTypeRoots(options: CompilerOptions, host: ModuleResolutionHost) { + return options.typeRoots || + defaultTypeRoots.map(d => combinePaths(options.configFilePath ? getDirectoryPath(options.configFilePath) : host.getCurrentDirectory(), d)); + } + /** * @param {string | undefined} containingFile - file that contains type reference directive, can be undefined if containing file is unknown. * This is possible in case if resolution is performed for directives specified via 'types' parameter. In this case initial path for secondary lookups @@ -192,8 +197,7 @@ namespace ts { traceEnabled }; - const typeRoots = options.typeRoots || - defaultTypeRoots.map(d => combinePaths(options.configFilePath ? getDirectoryPath(options.configFilePath) : host.getCurrentDirectory(), d)); + const typeRoots = getEffectiveTypeRoots(options, host); if (traceEnabled) { if (containingFile === undefined) { if (typeRoots === undefined) { @@ -1032,8 +1036,7 @@ namespace ts { // Walk the primary type lookup locations let result: string[] = []; if (host.directoryExists && host.getDirectories) { - const typeRoots = options.typeRoots || - defaultTypeRoots.map(d => combinePaths(options.configFilePath ? getDirectoryPath(options.configFilePath) : host.getCurrentDirectory(), d)); + const typeRoots = getEffectiveTypeRoots(options, host); for (const root of typeRoots) { if (host.directoryExists(root)) { result = result.concat(host.getDirectories(root)); @@ -1208,7 +1211,7 @@ namespace ts { (oldOptions.rootDir !== options.rootDir) || (oldOptions.configFilePath !== options.configFilePath) || (oldOptions.baseUrl !== options.baseUrl) || - (oldOptions.typeRoots !== options.typeRoots) || + !arrayIsEqualTo(oldOptions.typeRoots, oldOptions.typeRoots) || !arrayIsEqualTo(oldOptions.rootDirs, options.rootDirs) || !mapIsEqualTo(oldOptions.paths, options.paths)) { return false; From 236351d4f0b83a943a90e2a9f6e9994fae256ef7 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Mon, 13 Jun 2016 14:43:19 -0700 Subject: [PATCH 6/7] Add unit test --- tests/cases/unittests/reuseProgramStructure.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/cases/unittests/reuseProgramStructure.ts b/tests/cases/unittests/reuseProgramStructure.ts index 154cfdd702f8e..db67eb2c252dd 100644 --- a/tests/cases/unittests/reuseProgramStructure.ts +++ b/tests/cases/unittests/reuseProgramStructure.ts @@ -259,6 +259,22 @@ namespace ts { assert.isTrue(!program_1.structureIsReused); }); + it("fails if change affects type references", () => { + const program_1 = newProgram(files, ["a.ts"], { types: ["a"] }); + updateProgram(program_1, ["a.ts"], { types: ["b"] }, files => { + + }); + assert.isTrue(!program_1.structureIsReused); + }); + + it("succeeds if change doesn't affect type references", () => { + const program_1 = newProgram(files, ["a.ts"], { types: ["a"] }); + updateProgram(program_1, ["a.ts"], { types: ["a"] },afiles => { + + }); + assert.isTrue(program_1.structureIsReused); + }); + it("fails if change affects imports", () => { const program_1 = newProgram(files, ["a.ts"], { target }); updateProgram(program_1, ["a.ts"], { target }, files => { From 90b319fc246d53604f54c9b7d003ab2dfb741ec6 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Mon, 13 Jun 2016 14:52:41 -0700 Subject: [PATCH 7/7] lint --- tests/cases/unittests/reuseProgramStructure.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/cases/unittests/reuseProgramStructure.ts b/tests/cases/unittests/reuseProgramStructure.ts index db67eb2c252dd..b8a36baf824ad 100644 --- a/tests/cases/unittests/reuseProgramStructure.ts +++ b/tests/cases/unittests/reuseProgramStructure.ts @@ -269,7 +269,7 @@ namespace ts { it("succeeds if change doesn't affect type references", () => { const program_1 = newProgram(files, ["a.ts"], { types: ["a"] }); - updateProgram(program_1, ["a.ts"], { types: ["a"] },afiles => { + updateProgram(program_1, ["a.ts"], { types: ["a"] }, files => { }); assert.isTrue(program_1.structureIsReused);