Skip to content

Commit 77fd3a7

Browse files
committed
runtime: fix a wrong fall-through caused by an assert(false)
Replace the `assert(false)` with `swift_unreachable`. This is more robust in release builds where the `assert(false)` is a no-op and would result in a wrong fall-though to the next switch case. Fixes a warning in release builds.
1 parent e8d25c5 commit 77fd3a7

File tree

2 files changed

+3
-5
lines changed

2 files changed

+3
-5
lines changed

stdlib/public/Concurrency/Task.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ void FutureFragment::destroy() {
9191
auto queueHead = waitQueue.load(std::memory_order_acquire);
9292
switch (queueHead.getStatus()) {
9393
case Status::Executing:
94-
assert(false && "destroying a task that never completed");
94+
swift_unreachable("destroying a task that never completed");
9595

9696
case Status::Success:
9797
resultType->vw_destroy(getStoragePtr());

stdlib/public/runtime/Metadata.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1342,7 +1342,7 @@ FunctionCacheEntry::FunctionCacheEntry(const Key &key) {
13421342
Data.ValueWitnesses = &VALUE_WITNESS_SYM(DIFF_FUNCTION_MANGLING);
13431343
break;
13441344
default:
1345-
assert(false && "unsupported function witness");
1345+
swift_unreachable("unsupported function witness");
13461346
case FunctionMetadataDifferentiabilityKind::NonDifferentiable:
13471347
Data.ValueWitnesses = &VALUE_WITNESS_SYM(FUNCTION_MANGLING);
13481348
break;
@@ -5771,13 +5771,11 @@ static Result performOnMetadataCache(const Metadata *metadata,
57715771
swift_unreachable("bad metadata initialization kind");
57725772
}
57735773

5774-
auto &generics = description->getFullGenericContextHeader();
5775-
57765774
auto genericArgs =
57775775
reinterpret_cast<const void * const *>(
57785776
description->getGenericArguments(metadata));
57795777
auto &cache = getCache(*description);
5780-
assert(generics.Base.NumKeyArguments == cache.SigLayout.sizeInWords());
5778+
assert(description->getFullGenericContextHeader().Base.NumKeyArguments == cache.SigLayout.sizeInWords());
57815779
auto key = MetadataCacheKey(cache.SigLayout, genericArgs);
57825780

57835781
return std::move(callbacks).forGenericMetadata(metadata, description,

0 commit comments

Comments
 (0)