[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