Skip to content

Commit c0d8b0a

Browse files
committed
diagnose and dont crash when unable to find swift_task_deinitOnExecutor
1 parent 26a8050 commit c0d8b0a

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

include/swift/AST/DiagnosticsSIL.def

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -790,6 +790,11 @@ NOTE(box_to_stack_cannot_promote_box_to_stack_due_to_escape_location, none,
790790

791791
WARNING(semantic_function_improper_nesting, none, "'@_semantics' function calls non-'@_semantics' function with nested '@_semantics' calls", ())
792792

793+
// SDK mismatch diagnostics
794+
ERROR(missing_deinit_on_executor_function, none,
795+
"Missing 'swift_task_deinitOnExecutor' function! "
796+
"This is likely due to an outdated/incompatible SDK.", ())
797+
793798
// Capture promotion diagnostics
794799
WARNING(capturepromotion_concurrentcapture_mutation, none,
795800
"'%0' mutated after capture by sendable closure", (StringRef))

lib/SILGen/SILGenDestructor.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "SwitchEnumBuilder.h"
1818
#include "swift/AST/ConformanceLookup.h"
1919
#include "swift/AST/Decl.h"
20+
#include "swift/AST/DiagnosticsSIL.h"
2021
#include "swift/AST/GenericSignature.h"
2122
#include "swift/AST/SubstitutionMap.h"
2223
#include "swift/Basic/Assertions.h"
@@ -374,9 +375,8 @@ void SILGenFunction::emitIsolatingDestructor(DestructorDecl *dd) {
374375
// Get deinitOnExecutor
375376
FuncDecl *swiftDeinitOnExecutorDecl = SGM.getDeinitOnExecutor();
376377
if (!swiftDeinitOnExecutorDecl) {
377-
llvm::report_fatal_error(
378-
"Failed to find swift_task_deinitOnExecutor function decl! "
379-
"This is likely due to an outdated/incompatible SDK.");
378+
dd->diagnose(diag::missing_deinit_on_executor_function);
379+
return;
380380
}
381381
SILFunction *swiftDeinitOnExecutorSILFunc = SGM.getFunction(
382382
SILDeclRef(swiftDeinitOnExecutorDecl, SILDeclRef::Kind::Func),

0 commit comments

Comments
 (0)