fix checkneedupdatefiles endless circurlar

Signed-off-by: houhaoyu <houhaoyu@huawei.com>
Change-Id: I39ee8ab85c219fa498ce34146bfc53c9417cb9d8
This commit is contained in:
houhaoyu
2022-08-23 11:38:57 +08:00
parent 30ae813155
commit 5dc686d188
+10 -3
View File
@@ -449,12 +449,19 @@ function updateErrorFileCache(diagnostic: ts.Diagnostic): void {
function filterInput(rootFileNames: string[]): string[] {
return rootFileNames.filter((file: string) => {
const needUpdate: NeedUpdateFlag = { flag: false };
checkNeedUpdateFiles(path.resolve(file), needUpdate);
const alreadyCheckedFiles: Set<string> = new Set();
checkNeedUpdateFiles(path.resolve(file), needUpdate, alreadyCheckedFiles);
return needUpdate.flag;
});
}
function checkNeedUpdateFiles(file: string, needUpdate: NeedUpdateFlag): void {
function checkNeedUpdateFiles(file: string, needUpdate: NeedUpdateFlag, alreadyCheckedFiles: Set<string>): void {
if (alreadyCheckedFiles.has(file)) {
return;
} else {
alreadyCheckedFiles.add(file);
}
if (needUpdate.flag) {
return;
}
@@ -467,7 +474,7 @@ function checkNeedUpdateFiles(file: string, needUpdate: NeedUpdateFlag): void {
return;
}
for (let i = 0; i < value.children.length; ++i) {
checkNeedUpdateFiles(value.children[i], needUpdate);
checkNeedUpdateFiles(value.children[i], needUpdate, alreadyCheckedFiles);
}
} else {
cache[file] = { mtimeMs, children: [], error: false };