Compare commits

...

2 commits

Author SHA1 Message Date
Daniel Rosenwasser ce549af8da Lints. 2020-08-06 06:46:33 +00:00
Daniel Rosenwasser 73ede5999f Don't recurse when the answer doesn't change to 'true', just continue. 2020-08-06 06:25:49 +00:00

View file

@ -3775,24 +3775,28 @@ namespace ts.server {
getPackageJsonsVisibleToFile(fileName: string, rootDir?: string): readonly PackageJsonInfo[] {
const packageJsonCache = this.packageJsonCache;
const watchPackageJsonFile = this.watchPackageJsonFile.bind(this);
const toPath = this.toPath.bind(this);
const rootPath = rootDir && toPath(rootDir);
const filePath = toPath(fileName);
const rootPath = rootDir && this.toPath(rootDir);
const filePath = this.toPath(fileName);
const result: PackageJsonInfo[] = [];
forEachAncestorDirectory(getDirectoryPath(filePath), function processDirectory(directory): boolean | undefined {
forEachAncestorDirectory(getDirectoryPath(filePath), directory => {
switch (packageJsonCache.directoryHasPackageJson(directory)) {
// Sync and check same directory again
case Ternary.Maybe:
// Sync and check same directory again
packageJsonCache.searchDirectoryAndAncestors(directory);
return processDirectory(directory);
// Check package.json
const newResult = packageJsonCache.directoryHasPackageJson(directory);
if (newResult !== Ternary.True) {
Debug.assertEqual(newResult, Ternary.False);
break;
}
// fall through
case Ternary.True:
// Check the package.json
const packageJsonFileName = combinePaths(directory, "package.json");
watchPackageJsonFile(packageJsonFileName);
const info = packageJsonCache.getInDirectory(directory);
if (info) result.push(info);
}
if (rootPath && rootPath === toPath(directory)) {
if (rootPath && rootPath === this.toPath(directory)) {
return true;
}
});