@@ -5968,25 +5968,29 @@ bool EnumDecl::hasOnlyCasesWithoutAssociatedValues() const {
5968
5968
case AssociatedValueCheck::HasAssociatedValues:
5969
5969
return false ;
5970
5970
}
5971
+
5972
+ bool hasAnyUnavailableValues = false ;
5973
+ bool hasAssociatedValues = false ;
5974
+
5971
5975
for (auto elt : getAllElements ()) {
5972
5976
for (auto Attr : elt->getAttrs ()) {
5973
5977
if (auto AvAttr = dyn_cast<AvailableAttr>(Attr)) {
5974
- if (!AvAttr->isInvalid ()) {
5975
- const_cast <EnumDecl*>(this )->Bits .EnumDecl .HasAnyUnavailableValues
5976
- = true ;
5977
- }
5978
+ if (!AvAttr->isInvalid ())
5979
+ hasAnyUnavailableValues = true ;
5978
5980
}
5979
5981
}
5980
5982
5981
- if (elt->hasAssociatedValues ()) {
5982
- const_cast <EnumDecl*>(this )->Bits .EnumDecl .HasAssociatedValues
5983
- = static_cast <unsigned >(AssociatedValueCheck::HasAssociatedValues);
5984
- return false ;
5985
- }
5983
+ if (elt->hasAssociatedValues ())
5984
+ hasAssociatedValues = true ;
5986
5985
}
5987
- const_cast <EnumDecl*>(this )->Bits .EnumDecl .HasAssociatedValues
5988
- = static_cast <unsigned >(AssociatedValueCheck::NoAssociatedValues);
5989
- return true ;
5986
+
5987
+ EnumDecl *enumDecl = const_cast <EnumDecl *>(this );
5988
+
5989
+ enumDecl->Bits .EnumDecl .HasAnyUnavailableValues = hasAnyUnavailableValues;
5990
+ enumDecl->Bits .EnumDecl .HasAssociatedValues = static_cast <unsigned >(
5991
+ hasAssociatedValues ? AssociatedValueCheck::HasAssociatedValues
5992
+ : AssociatedValueCheck::NoAssociatedValues);
5993
+ return !hasAssociatedValues;
5990
5994
}
5991
5995
5992
5996
bool EnumDecl::isFormallyExhaustive (const DeclContext *useDC) const {
0 commit comments