[clang] b21a2f9 - [clang][scan-deps] Stop scanning if any scanning setup emits an error.
Michael Spencer via cfe-commits
cfe-commits at lists.llvm.org
Tue Jan 30 17:03:35 PST 2024
Author: Michael Spencer
Date: 2024-01-30T17:03:13-08:00
New Revision: b21a2f9365b6c5fd464a97be5dfe7085742870ef
URL: https://github.com/llvm/llvm-project/commit/b21a2f9365b6c5fd464a97be5dfe7085742870ef
DIFF: https://github.com/llvm/llvm-project/commit/b21a2f9365b6c5fd464a97be5dfe7085742870ef.diff
LOG: [clang][scan-deps] Stop scanning if any scanning setup emits an error.
Without this scanning will continue and later hit an assert that the
number of `RedirectingFileSystem`s matches the number of -ivfsoverlay
arguments.
Added:
clang/test/ClangScanDeps/missing-vfs.m
Modified:
clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp
Removed:
################################################################################
diff --git a/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp b/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp
index 390cbe5aa65e1..3cf3ad8a4e490 100644
--- a/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp
+++ b/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp
@@ -322,6 +322,9 @@ class DependencyScanningAction : public tooling::ToolAction {
else
Action = std::make_unique<ReadPCHAndPreprocessAction>();
+ if (ScanInstance.getDiagnostics().hasErrorOccurred())
+ return false;
+
const bool Result = ScanInstance.ExecuteAction(*Action);
if (Result)
diff --git a/clang/test/ClangScanDeps/missing-vfs.m b/clang/test/ClangScanDeps/missing-vfs.m
new file mode 100644
index 0000000000000..e825b00526728
--- /dev/null
+++ b/clang/test/ClangScanDeps/missing-vfs.m
@@ -0,0 +1,18 @@
+// Check that a missing VFS errors before trying to scan anything.
+
+// RUN: rm -rf %t && split-file %s %t
+// RUN: sed -e "s|DIR|%/t|g" %t/build/cdb.json.in > %t/build/cdb.json
+// RUN: not clang-scan-deps -compilation-database %t/build/cdb.json \
+// RUN: -format experimental-full 2>&1 | FileCheck %s
+
+// CHECK: virtual filesystem overlay file
+// CHECK: not found
+
+//--- build/cdb.json.in
+[{
+ "directory": "DIR",
+ "command": "clang -c DIR/tu.m -ivfsoverlay DIR/vfs.yaml",
+ "file": "DIR/tu.m"
+}]
+
+//--- tu.m
More information about the cfe-commits
mailing list