mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Runtime: Tolerate unknown metadata kinds.
We want to be able to potentially introduce new metadata kinds in future Swift compilers, so a runtime ought to be able to degrade gracefully in the face of metadata kinds it doesn't know about. Remove attempts to exhaustively switch over metadata kinds and instead treat unknown metadata kinds as opaque.
This commit is contained in:
@@ -3169,23 +3169,9 @@ Metadata::getClassObject() const {
|
||||
return wrapper->Class;
|
||||
}
|
||||
// Other kinds of types don't have class objects.
|
||||
case MetadataKind::Struct:
|
||||
case MetadataKind::Enum:
|
||||
case MetadataKind::Optional:
|
||||
case MetadataKind::ForeignClass:
|
||||
case MetadataKind::Opaque:
|
||||
case MetadataKind::Tuple:
|
||||
case MetadataKind::Function:
|
||||
case MetadataKind::Existential:
|
||||
case MetadataKind::ExistentialMetatype:
|
||||
case MetadataKind::Metatype:
|
||||
case MetadataKind::HeapLocalVariable:
|
||||
case MetadataKind::HeapGenericLocalVariable:
|
||||
case MetadataKind::ErrorObject:
|
||||
default:
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
swift_runtime_unreachable("Unhandled MetadataKind in switch.");
|
||||
}
|
||||
|
||||
template <> OpaqueValue *Metadata::allocateBoxForExistentialIn(ValueBuffer *buffer) const {
|
||||
@@ -3259,9 +3245,10 @@ StringRef swift::getStringForMetadataKind(MetadataKind kind) {
|
||||
case MetadataKind::NAME: \
|
||||
return #NAME;
|
||||
#include "swift/ABI/MetadataKind.def"
|
||||
|
||||
default:
|
||||
return "<unknown>";
|
||||
}
|
||||
|
||||
swift_runtime_unreachable("Unhandled metadata kind?!");
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
|
||||
Reference in New Issue
Block a user