Implement Tuple Hashable Conformance

This commit is contained in:
Azoy
2020-07-19 22:07:26 -04:00
parent 58e643e1b0
commit 4ff28f2b40
8 changed files with 375 additions and 9 deletions

View File

@@ -1014,12 +1014,13 @@ LookupConformanceInModuleRequest::evaluate(
return ProtocolConformanceRef(protocol);
// Tuples have builtin conformances implemented within the runtime.
// These conformances so far consist of Equatable and Comparable.
// These conformances so far consist of Equatable, Comparable, and Hashable.
if (auto tuple = type->getAs<TupleType>()) {
auto equatable = ctx.getProtocol(KnownProtocolKind::Equatable);
auto comparable = ctx.getProtocol(KnownProtocolKind::Comparable);
auto hashable = ctx.getProtocol(KnownProtocolKind::Hashable);
if (protocol != equatable && protocol != comparable)
if (protocol != equatable && protocol != comparable && protocol != hashable)
return ProtocolConformanceRef::forInvalid();
SmallVector<ProtocolConformanceRef, 4> elementConformances;