Skip to content

Commit 8ec341e

Browse files
committed
[Dependency Scanning] Bridge diagnostics emitted during bridging header scanning
Instead of simply dumping them to stderr. Resolves rdar://151993075
1 parent 7d6447b commit 8ec341e

File tree

4 files changed

+13
-7
lines changed

4 files changed

+13
-7
lines changed

include/swift/AST/DiagnosticsSema.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2374,6 +2374,7 @@ NOTE(dependency_as_imported_by_main_module,none,
23742374
NOTE(dependency_as_imported_by, none,
23752375
"a dependency of %select{Swift|Clang}2 module '%0': '%1'", (StringRef, StringRef, bool))
23762376
ERROR(clang_dependency_scan_error, none, "Clang dependency scanner failure: %0", (StringRef))
2377+
ERROR(clang_header_dependency_scan_error, none, "Bridging header dependency scan failure: %0", (StringRef))
23772378

23782379
// Enum annotations
23792380
ERROR(indirect_case_without_payload,none,

lib/DependencyScan/ModuleDependencyScanner.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,7 @@ bool ModuleDependencyScanningWorker::scanHeaderDependenciesOfSwiftModule(
419419
};
420420

421421
auto dependencies = clangScanningTool.getTranslationUnitDependencies(
422-
/*ACTODO:*/ inputSpecificClangScannerCommand(clangScanningBaseCommandLineArgs, headerPath),
422+
inputSpecificClangScannerCommand(clangScanningBaseCommandLineArgs, headerPath),
423423
clangScanningWorkingDirectoryPath,
424424
cache.getAlreadySeenClangModules(), lookupModuleOutput, sourceBuffer);
425425
if (!dependencies)
@@ -449,11 +449,9 @@ bool ModuleDependencyScanningWorker::scanHeaderDependenciesOfSwiftModule(
449449
// - Binary module dependnecies may have arbitrary header inputs.
450450
auto clangModuleDependencies = scanHeaderDependencies();
451451
if (!clangModuleDependencies) {
452-
// FIXME: Route this to a normal diagnostic.
453-
llvm::logAllUnhandledErrors(clangModuleDependencies.takeError(),
454-
llvm::errs());
455-
ctx.Diags.diagnose(SourceLoc(), diag::clang_dependency_scan_error,
456-
"failed to scan header dependencies");
452+
auto errorStr = toString(clangModuleDependencies.takeError());
453+
workerASTContext->Diags.diagnose(
454+
SourceLoc(), diag::clang_header_dependency_scan_error, errorStr);
457455
return true;
458456
}
459457

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// REQUIRES: objc_interop
2+
// RUN: %empty-directory(%t)
3+
// RUN: %empty-directory(%t/module-cache)
4+
5+
// RUN: %target-swift-frontend -scan-dependencies -module-cache-path %t/module-cache %s -o %t/deps.json -import-objc-header %t/does-this-header-even-exist.h &> %t/diagnostic_output.txt
6+
// RUN: cat %t/diagnostic_output.txt | %FileCheck %s
7+
// CHECK: error: Bridging header dependency scan failure: error: no such file or directory: '{{.*}}does-this-header-even-exist.h'

test/ScanDependencies/clang_scan_error.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
// RUN: -disable-implicit-string-processing-module-import -disable-implicit-concurrency-module-import -parse-stdlib \
77
// RUN: -o %t/deps.json -I %t -swift-version 5 2>&1 | %FileCheck %s
88

9-
// CHECK: error: Clang dependency scanner failure: failed to scan header dependencies
9+
// CHECK: error: Bridging header dependency scan failure: {{.*}}bridging.h:1:10: fatal error: 'do-not-exist.h' file not found
1010

1111
//--- bridging.h
1212
#include "do-not-exist.h"

0 commit comments

Comments
 (0)