From 0f22079d9e52f3fd4c26b9999ef20a774896649b Mon Sep 17 00:00:00 2001 From: Richard Knoll Date: Thu, 4 Aug 2016 18:17:41 -0700 Subject: [PATCH] Remove trailing slashes, remove mostly useless IO, fix script element kind for files --- src/services/services.ts | 35 +++---------------- .../completionForStringLiteralImport1.ts | 2 +- ...etionForStringLiteralNonrelativeImport4.ts | 4 +-- ...etionForStringLiteralNonrelativeImport6.ts | 4 +-- ...mpletionForStringLiteralRelativeImport1.ts | 6 ++-- ...mpletionForStringLiteralRelativeImport3.ts | 8 ++--- ...mpletionForStringLiteralRelativeImport4.ts | 2 +- .../completionForTripleSlashReference1.ts | 6 ++-- .../completionForTripleSlashReference3.ts | 8 ++--- 9 files changed, 24 insertions(+), 51 deletions(-) diff --git a/src/services/services.ts b/src/services/services.ts index 7b523d7e7ab..6cb92547998 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -1865,7 +1865,6 @@ namespace ts { interface VisibleModuleInfo { moduleName: string; moduleDir: string; - canBeImported: boolean; } export interface DisplayPartsSymbolWriter extends SymbolWriter { @@ -4605,7 +4604,7 @@ namespace ts { if (!duplicate) { result.push({ name: fileName, - kind: ScriptElementKind.directory, + kind: ScriptElementKind.scriptElement, sortText: fileName }); } @@ -4618,7 +4617,7 @@ namespace ts { const directoryName = getBaseFileName(normalizePath(d)); result.push({ - name: ensureTrailingDirectorySeparator(directoryName), + name: directoryName, kind: ScriptElementKind.directory, sortText: directoryName }); @@ -4750,7 +4749,7 @@ namespace ts { if (!options.moduleResolution || options.moduleResolution === ModuleResolutionKind.NodeJs) { forEach(enumerateNodeModulesVisibleToScript(host, scriptPath), visibleModule => { if (!isNestedModule) { - nonRelativeModules.push(visibleModule.canBeImported ? visibleModule.moduleName : ensureTrailingDirectorySeparator(visibleModule.moduleName)); + nonRelativeModules.push(visibleModule.moduleName); } else { const nestedFiles = host.readDirectory(visibleModule.moduleDir, supportedTypeScriptExtensions, /*exclude*/undefined, /*include*/["./*"]); @@ -4904,8 +4903,7 @@ namespace ts { const moduleDir = combinePaths(nodeModulesDir, moduleName); result.push({ moduleName, - moduleDir, - canBeImported: moduleCanBeImported(moduleDir) + moduleDir }); }); }); @@ -4930,31 +4928,6 @@ namespace ts { } } } - - /* - * A module can be imported by name alone if one of the following is true: - * It defines the "typings" property in its package.json - * The module has a "main" export and an index.d.ts file - * The module has an index.ts - */ - function moduleCanBeImported(modulePath: string): boolean { - const packagePath = combinePaths(modulePath, "package.json"); - - let hasMainExport = false; - if (host.fileExists(packagePath)) { - const package = tryReadingPackageJson(packagePath); - if (package) { - if (package.typings) { - return true; - } - hasMainExport = !!package.main; - } - } - - hasMainExport = hasMainExport || host.fileExists(combinePaths(modulePath, "index.js")); - - return (hasMainExport && host.fileExists(combinePaths(modulePath, "index.d.ts"))) || host.fileExists(combinePaths(modulePath, "index.ts")); - } } function createCompletionEntryForModule(name: string, kind: string): ImportCompletionEntry { diff --git a/tests/cases/fourslash/completionForStringLiteralImport1.ts b/tests/cases/fourslash/completionForStringLiteralImport1.ts index 239c3be42fc..5fcb3e42f1a 100644 --- a/tests/cases/fourslash/completionForStringLiteralImport1.ts +++ b/tests/cases/fourslash/completionForStringLiteralImport1.ts @@ -28,4 +28,4 @@ goTo.marker("2"); verify.importModuleCompletionListContains("some-module", 2); goTo.marker("3"); -verify.importModuleCompletionListContains("fourslash/", 3); \ No newline at end of file +verify.importModuleCompletionListContains("fourslash", 3); \ No newline at end of file diff --git a/tests/cases/fourslash/completionForStringLiteralNonrelativeImport4.ts b/tests/cases/fourslash/completionForStringLiteralNonrelativeImport4.ts index f4a9ae2d537..ef926a7c8ad 100644 --- a/tests/cases/fourslash/completionForStringLiteralNonrelativeImport4.ts +++ b/tests/cases/fourslash/completionForStringLiteralNonrelativeImport4.ts @@ -25,8 +25,8 @@ const kinds = ["import_as", "import_equals", "require"]; for (const kind of kinds) { goTo.marker(kind + "0"); - verify.importModuleCompletionListContains("fake-module/"); + verify.importModuleCompletionListContains("fake-module"); verify.importModuleCompletionListContains("fake-module2"); - verify.importModuleCompletionListContains("fake-module3/"); + verify.importModuleCompletionListContains("fake-module3"); verify.not.importModuleCompletionListItemsCountIsGreaterThan(3); } \ No newline at end of file diff --git a/tests/cases/fourslash/completionForStringLiteralNonrelativeImport6.ts b/tests/cases/fourslash/completionForStringLiteralNonrelativeImport6.ts index 263b57d9d29..c430310a217 100644 --- a/tests/cases/fourslash/completionForStringLiteralNonrelativeImport6.ts +++ b/tests/cases/fourslash/completionForStringLiteralNonrelativeImport6.ts @@ -52,8 +52,8 @@ const kinds = ["import_as", "import_equals", "require"]; for (const kind of kinds) { goTo.marker(kind + "0"); - verify.importModuleCompletionListContains("module-no-main/"); - verify.importModuleCompletionListContains("module-no-main-index-d-ts/"); + verify.importModuleCompletionListContains("module-no-main"); + verify.importModuleCompletionListContains("module-no-main-index-d-ts"); verify.importModuleCompletionListContains("module-index-ts"); verify.importModuleCompletionListContains("module-index-d-ts-explicit-main"); verify.importModuleCompletionListContains("module-index-d-ts-default-main"); diff --git a/tests/cases/fourslash/completionForStringLiteralRelativeImport1.ts b/tests/cases/fourslash/completionForStringLiteralRelativeImport1.ts index 52d62f3b4f8..3257dff40af 100644 --- a/tests/cases/fourslash/completionForStringLiteralRelativeImport1.ts +++ b/tests/cases/fourslash/completionForStringLiteralRelativeImport1.ts @@ -51,8 +51,8 @@ for (const kind of kinds) { verify.importModuleCompletionListContains("f1"); verify.importModuleCompletionListContains("f2"); verify.importModuleCompletionListContains("e1"); - verify.importModuleCompletionListContains("folder/"); - verify.importModuleCompletionListContains("parentTest/"); + verify.importModuleCompletionListContains("folder"); + verify.importModuleCompletionListContains("parentTest"); verify.not.importModuleCompletionListItemsCountIsGreaterThan(5); goTo.marker(kind + "2"); @@ -63,6 +63,6 @@ for (const kind of kinds) { goTo.marker(kind + "3"); verify.importModuleCompletionListContains("f4"); verify.importModuleCompletionListContains("g1"); - verify.importModuleCompletionListContains("sub/"); + verify.importModuleCompletionListContains("sub"); verify.not.importModuleCompletionListItemsCountIsGreaterThan(3); } \ No newline at end of file diff --git a/tests/cases/fourslash/completionForStringLiteralRelativeImport3.ts b/tests/cases/fourslash/completionForStringLiteralRelativeImport3.ts index 4f35612c5c6..95e4e51577a 100644 --- a/tests/cases/fourslash/completionForStringLiteralRelativeImport3.ts +++ b/tests/cases/fourslash/completionForStringLiteralRelativeImport3.ts @@ -32,18 +32,18 @@ const kinds = ["import_as", "import_equals", "require"]; for (const kind of kinds) { goTo.marker(kind + "0"); - verify.importModuleCompletionListContains("fourslash/"); + verify.importModuleCompletionListContains("fourslash"); verify.not.importModuleCompletionListItemsCountIsGreaterThan(1); goTo.marker(kind + "1"); - verify.importModuleCompletionListContains("fourslash/"); + verify.importModuleCompletionListContains("fourslash"); verify.not.importModuleCompletionListItemsCountIsGreaterThan(1); goTo.marker(kind + "2"); verify.importModuleCompletionListContains("f1"); verify.importModuleCompletionListContains("f2"); verify.importModuleCompletionListContains("e1"); - verify.importModuleCompletionListContains("folder/"); - verify.importModuleCompletionListContains("tests/"); + verify.importModuleCompletionListContains("folder"); + verify.importModuleCompletionListContains("tests"); verify.not.importModuleCompletionListItemsCountIsGreaterThan(5); } \ No newline at end of file diff --git a/tests/cases/fourslash/completionForStringLiteralRelativeImport4.ts b/tests/cases/fourslash/completionForStringLiteralRelativeImport4.ts index 773c4d90d75..f89eaa567ad 100644 --- a/tests/cases/fourslash/completionForStringLiteralRelativeImport4.ts +++ b/tests/cases/fourslash/completionForStringLiteralRelativeImport4.ts @@ -43,7 +43,7 @@ for (const kind of kinds) { verify.importModuleCompletionListContains("module0"); verify.importModuleCompletionListContains("module1"); verify.importModuleCompletionListContains("module2"); - verify.importModuleCompletionListContains("more/"); + verify.importModuleCompletionListContains("more"); // Should not contain itself verify.not.importModuleCompletionListItemsCountIsGreaterThan(4); diff --git a/tests/cases/fourslash/completionForTripleSlashReference1.ts b/tests/cases/fourslash/completionForTripleSlashReference1.ts index 8c6188ac90c..66dfa5f93c2 100644 --- a/tests/cases/fourslash/completionForTripleSlashReference1.ts +++ b/tests/cases/fourslash/completionForTripleSlashReference1.ts @@ -34,16 +34,16 @@ for (let i = 0; i < 5; i++) { verify.importModuleCompletionListContains("f1.d.ts"); verify.importModuleCompletionListContains("f2.tsx"); verify.importModuleCompletionListContains("e1.ts"); - verify.importModuleCompletionListContains("parentTest/"); + verify.importModuleCompletionListContains("parentTest"); verify.not.importModuleCompletionListItemsCountIsGreaterThan(5); } goTo.marker("5"); verify.importModuleCompletionListContains("g1.ts"); -verify.importModuleCompletionListContains("sub/"); +verify.importModuleCompletionListContains("sub"); verify.not.importModuleCompletionListItemsCountIsGreaterThan(2); goTo.marker("6"); verify.importModuleCompletionListContains("g1.ts"); -verify.importModuleCompletionListContains("sub/"); +verify.importModuleCompletionListContains("sub"); verify.not.importModuleCompletionListItemsCountIsGreaterThan(2); \ No newline at end of file diff --git a/tests/cases/fourslash/completionForTripleSlashReference3.ts b/tests/cases/fourslash/completionForTripleSlashReference3.ts index dda6ae92b41..af8d49d9df3 100644 --- a/tests/cases/fourslash/completionForTripleSlashReference3.ts +++ b/tests/cases/fourslash/completionForTripleSlashReference3.ts @@ -25,17 +25,17 @@ //// /*e2*/ goTo.marker("0"); -verify.importModuleCompletionListContains("fourslash/"); +verify.importModuleCompletionListContains("fourslash"); verify.not.importModuleCompletionListItemsCountIsGreaterThan(1); goTo.marker("1"); -verify.importModuleCompletionListContains("fourslash/"); +verify.importModuleCompletionListContains("fourslash"); verify.not.importModuleCompletionListItemsCountIsGreaterThan(1); goTo.marker("2"); verify.importModuleCompletionListContains("f1.ts"); verify.importModuleCompletionListContains("f2.tsx"); verify.importModuleCompletionListContains("e1.ts"); -verify.importModuleCompletionListContains("folder/"); -verify.importModuleCompletionListContains("tests/"); +verify.importModuleCompletionListContains("folder"); +verify.importModuleCompletionListContains("tests"); verify.not.importModuleCompletionListItemsCountIsGreaterThan(5); \ No newline at end of file