mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-15 11:35:42 -06:00
Remove trailing slashes, remove mostly useless IO, fix script element kind for files
This commit is contained in:
parent
ca288231f7
commit
0f22079d9e
@ -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 {
|
||||
|
||||
@ -28,4 +28,4 @@ goTo.marker("2");
|
||||
verify.importModuleCompletionListContains("some-module", 2);
|
||||
|
||||
goTo.marker("3");
|
||||
verify.importModuleCompletionListContains("fourslash/", 3);
|
||||
verify.importModuleCompletionListContains("fourslash", 3);
|
||||
@ -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);
|
||||
}
|
||||
@ -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");
|
||||
|
||||
@ -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);
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
@ -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);
|
||||
Loading…
x
Reference in New Issue
Block a user