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(); + 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