Skip to content

Commit cf36c44

Browse files
authored
Merge pull request #81876 from artemcm/BridgeHeaderScanDiagnostics_62
[6.2 🍒][Dependency Scanning] Bridge diagnostics emitted during bridging header scanning
2 parents f45edab + f24016f commit cf36c44

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
@@ -2339,6 +2339,7 @@ NOTE(dependency_as_imported_by_main_module,none,
23392339
NOTE(dependency_as_imported_by, none,
23402340
"a dependency of %select{Swift|Clang}2 module '%0': '%1'", (StringRef, StringRef, bool))
23412341
ERROR(clang_dependency_scan_error, none, "Clang dependency scanner failure: %0", (StringRef))
2342+
ERROR(clang_header_dependency_scan_error, none, "Bridging header dependency scan failure: %0", (StringRef))
23422343

23432344
// Enum annotations
23442345
ERROR(indirect_case_without_payload,none,

lib/DependencyScan/ModuleDependencyScanner.cpp

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

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

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)