Skip to content

Commit 2618ae5

Browse files
Merge pull request #73402 from cachemeifyoucan/eng/PR-127459045
[ScanDependencies] Fix assertion failure when failed to scan header
2 parents 6fdaea5 + 7091876 commit 2618ae5

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

lib/ClangImporter/ClangModuleDependencyScanner.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -493,11 +493,8 @@ bool ClangImporter::addHeaderDependencies(
493493
auto dependencies = clangScanningTool.getTranslationUnitDependencies(
494494
commandLineArgs, workingDir, cache.getAlreadySeenClangModules(),
495495
lookupModuleOutput);
496-
if (!dependencies) {
497-
// FIXME: Route this to a normal diagnostic.
498-
llvm::logAllUnhandledErrors(dependencies.takeError(), llvm::errs());
496+
if (!dependencies)
499497
return dependencies.takeError();
500-
}
501498

502499
// Record module dependencies for each new module we found.
503500
auto bridgedDeps = bridgeClangModuleDependencies(
@@ -527,8 +524,15 @@ bool ClangImporter::addHeaderDependencies(
527524
!targetModule.getBridgingHeader()->empty()) {
528525
auto clangModuleDependencies =
529526
scanHeaderDependencies(*targetModule.getBridgingHeader());
530-
if (!clangModuleDependencies)
527+
if (!clangModuleDependencies) {
528+
// FIXME: Route this to a normal diagnostic.
529+
llvm::logAllUnhandledErrors(clangModuleDependencies.takeError(),
530+
llvm::errs());
531+
Impl.SwiftContext.Diags.diagnose(
532+
SourceLoc(), diag::clang_dependency_scan_error,
533+
"failed to scan bridging header dependencies");
531534
return true;
535+
}
532536
if (auto TreeID = clangModuleDependencies->IncludeTreeID)
533537
targetModule.addBridgingHeaderIncludeTree(*TreeID);
534538
recordBridgingHeaderOptions(targetModule, *clangModuleDependencies);
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// REQUIRES: objc_interop
2+
// RUN: %empty-directory(%t)
3+
// RUN: split-file %s %t
4+
5+
// RUN: %target-swift-frontend -scan-dependencies -module-name Test %t/main.swift -import-objc-header %t/bridging.h \
6+
// RUN: -disable-implicit-string-processing-module-import -disable-implicit-concurrency-module-import -parse-stdlib \
7+
// RUN: -o %t/deps.json -I %t -swift-version 5 2>&1 | %FileCheck %s
8+
9+
// CHECK: error: Clang dependency scanner failure: failed to scan bridging header dependencies
10+
11+
//--- bridging.h
12+
#include "do-not-exist.h"
13+
14+
//--- main.swift
15+
func test() {}

0 commit comments

Comments
 (0)