@@ -629,6 +629,25 @@ Expr *PatternBindingCheckedAndContextualizedInitRequest::evaluate(
629629 return binding->getInit (i);
630630}
631631
632+ static std::optional<AccessorKind>
633+ directAccessorKindForReadImpl (ReadImplKind reader) {
634+ switch (reader) {
635+ case ReadImplKind::Stored:
636+ case ReadImplKind::Inherited:
637+ return std::nullopt ;
638+
639+ case ReadImplKind::Get:
640+ return AccessorKind::Get;
641+
642+ case ReadImplKind::Address:
643+ return AccessorKind::Address;
644+
645+ case ReadImplKind::Read:
646+ return AccessorKind::Read;
647+ }
648+ llvm_unreachable (" bad impl kind" );
649+ }
650+
632651bool
633652IsGetterMutatingRequest::evaluate (Evaluator &evaluator,
634653 AbstractStorageDecl *storage) const {
@@ -665,22 +684,11 @@ IsGetterMutatingRequest::evaluate(Evaluator &evaluator,
665684 if (isa<ProtocolDecl>(storageDC))
666685 return checkMutability (AccessorKind::Get);
667686
668- switch (storage->getReadImpl ()) {
669- case ReadImplKind::Stored:
670- case ReadImplKind::Inherited:
687+ auto accessor = directAccessorKindForReadImpl (storage->getReadImpl ());
688+ if (!accessor)
671689 return false ;
672690
673- case ReadImplKind::Get:
674- return checkMutability (AccessorKind::Get);
675-
676- case ReadImplKind::Address:
677- return checkMutability (AccessorKind::Address);
678-
679- case ReadImplKind::Read:
680- return checkMutability (AccessorKind::Read);
681- }
682-
683- llvm_unreachable (" bad impl kind" );
691+ return checkMutability (*accessor);
684692}
685693
686694// / As a special extra check, if the user also gave us a modify coroutine,
0 commit comments