@@ -2990,11 +2990,13 @@ bool AbstractStorageDecl::requiresOpaqueAccessor(AccessorKind kind) const {
2990
2990
case AccessorKind::Set:
2991
2991
return requiresOpaqueSetter ();
2992
2992
case AccessorKind::Read:
2993
- case AccessorKind::Read2:
2994
2993
return requiresOpaqueReadCoroutine ();
2994
+ case AccessorKind::Read2:
2995
+ return requiresOpaqueRead2Coroutine ();
2995
2996
case AccessorKind::Modify:
2996
- case AccessorKind::Modify2:
2997
2997
return requiresOpaqueModifyCoroutine ();
2998
+ case AccessorKind::Modify2:
2999
+ return requiresOpaqueModify2Coroutine ();
2998
3000
2999
3001
// Other accessors are never part of the opaque-accessors set.
3000
3002
#define OPAQUE_ACCESSOR (ID, KEYWORD )
@@ -3010,13 +3012,30 @@ bool AbstractStorageDecl::requiresOpaqueReadCoroutine() const {
3010
3012
return getOpaqueReadOwnership () != OpaqueReadOwnership::Owned;
3011
3013
}
3012
3014
3015
+ bool AbstractStorageDecl::requiresOpaqueRead2Coroutine () const {
3016
+ ASTContext &ctx = getASTContext ();
3017
+ if (!ctx.LangOpts .hasFeature (Feature::CoroutineAccessors))
3018
+ return false ;
3019
+ return getOpaqueReadOwnership () != OpaqueReadOwnership::Owned;
3020
+ }
3021
+
3013
3022
bool AbstractStorageDecl::requiresOpaqueModifyCoroutine () const {
3014
3023
ASTContext &ctx = getASTContext ();
3015
3024
return evaluateOrDefault (ctx.evaluator ,
3016
3025
RequiresOpaqueModifyCoroutineRequest{const_cast <AbstractStorageDecl *>(this )},
3017
3026
false );
3018
3027
}
3019
3028
3029
+ bool AbstractStorageDecl::requiresOpaqueModify2Coroutine () const {
3030
+ ASTContext &ctx = getASTContext ();
3031
+ if (!ctx.LangOpts .hasFeature (Feature::CoroutineAccessors))
3032
+ return false ;
3033
+ return evaluateOrDefault (ctx.evaluator ,
3034
+ RequiresOpaqueModifyCoroutineRequest{
3035
+ const_cast <AbstractStorageDecl *>(this )},
3036
+ false );
3037
+ }
3038
+
3020
3039
AccessorDecl *AbstractStorageDecl::getSynthesizedAccessor (AccessorKind kind) const {
3021
3040
if (auto *accessor = getAccessor (kind))
3022
3041
return accessor;
0 commit comments