@@ -59,6 +59,7 @@ enum class AccessorKind {
5959
6060inline bool requiresFeatureCoroutineAccessors (AccessorKind kind) {
6161 switch (kind) {
62+ case AccessorKind::Read2:
6263 case AccessorKind::Modify2:
6364 return true ;
6465 case AccessorKind::Get:
@@ -78,6 +79,7 @@ inline bool requiresFeatureCoroutineAccessors(AccessorKind kind) {
7879inline bool isYieldingAccessor (AccessorKind kind) {
7980 switch (kind) {
8081 case AccessorKind::Read:
82+ case AccessorKind::Read2:
8183 case AccessorKind::Modify:
8284 case AccessorKind::Modify2:
8385 return true ;
@@ -96,6 +98,7 @@ inline bool isYieldingAccessor(AccessorKind kind) {
9698inline bool isYieldingDefaultNonmutatingAccessor (AccessorKind kind) {
9799 switch (kind) {
98100 case AccessorKind::Read:
101+ case AccessorKind::Read2:
99102 return true ;
100103 case AccessorKind::Get:
101104 case AccessorKind::DistributedGet:
@@ -120,6 +123,7 @@ inline bool isYieldingDefaultMutatingAccessor(AccessorKind kind) {
120123 case AccessorKind::DistributedGet:
121124 case AccessorKind::Set:
122125 case AccessorKind::Read:
126+ case AccessorKind::Read2:
123127 case AccessorKind::WillSet:
124128 case AccessorKind::DidSet:
125129 case AccessorKind::Address:
@@ -278,8 +282,11 @@ enum class ReadImplKind {
278282 // / There's an immutable addressor.
279283 Address,
280284
281- // / There's a read coroutine.
285+ // / There's a _read coroutine.
282286 Read,
287+
288+ // / There's a read coroutine.
289+ Read2,
283290};
284291enum { NumReadImplKindBits = 4 };
285292
@@ -392,29 +399,30 @@ class StorageImplInfo {
392399 case WriteImplKind::Set:
393400 assert (readImpl == ReadImplKind::Get ||
394401 readImpl == ReadImplKind::Address ||
395- readImpl == ReadImplKind::Read);
402+ readImpl == ReadImplKind::Read || readImpl == ReadImplKind::Read2 );
396403 assert (readWriteImpl == ReadWriteImplKind::MaterializeToTemporary ||
397- readWriteImpl == ReadWriteImplKind::Modify);
404+ readWriteImpl == ReadWriteImplKind::Modify ||
405+ readWriteImpl == ReadWriteImplKind::Modify2);
398406 return ;
399407
400408 case WriteImplKind::Modify:
401409 assert (readImpl == ReadImplKind::Get ||
402410 readImpl == ReadImplKind::Address ||
403- readImpl == ReadImplKind::Read);
411+ readImpl == ReadImplKind::Read || readImpl == ReadImplKind::Read2 );
404412 assert (readWriteImpl == ReadWriteImplKind::Modify);
405413 return ;
406414
407415 case WriteImplKind::Modify2:
408416 assert (readImpl == ReadImplKind::Get ||
409417 readImpl == ReadImplKind::Address ||
410- readImpl == ReadImplKind::Read);
418+ readImpl == ReadImplKind::Read || readImpl == ReadImplKind::Read2 );
411419 assert (readWriteImpl == ReadWriteImplKind::Modify2);
412420 return ;
413421
414422 case WriteImplKind::MutableAddress:
415423 assert (readImpl == ReadImplKind::Get ||
416424 readImpl == ReadImplKind::Address ||
417- readImpl == ReadImplKind::Read);
425+ readImpl == ReadImplKind::Read || readImpl == ReadImplKind::Read2 );
418426 assert (readWriteImpl == ReadWriteImplKind::MutableAddress);
419427 return ;
420428 }
@@ -434,12 +442,13 @@ class StorageImplInfo {
434442 OpaqueReadOwnership ownership,
435443 const ASTContext &ctx) {
436444 return (isMutable ? getMutableOpaque (ownership, ctx)
437- : getImmutableOpaque (ownership));
445+ : getImmutableOpaque (ownership, ctx ));
438446 }
439447
440448 // / Describe the implementation of a immutable property implemented opaquely.
441- static StorageImplInfo getImmutableOpaque (OpaqueReadOwnership ownership) {
442- return { getOpaqueReadImpl (ownership) };
449+ static StorageImplInfo getImmutableOpaque (OpaqueReadOwnership ownership,
450+ const ASTContext &ctx) {
451+ return {getOpaqueReadImpl (ownership, ctx)};
443452 }
444453
445454 // / Describe the implementation of a mutable property implemented opaquely.
@@ -492,7 +501,8 @@ class StorageImplInfo {
492501 }
493502
494503private:
495- static ReadImplKind getOpaqueReadImpl (OpaqueReadOwnership ownership);
504+ static ReadImplKind getOpaqueReadImpl (OpaqueReadOwnership ownership,
505+ const ASTContext &ctx);
496506};
497507
498508llvm::StringRef getAccessorLabel (AccessorKind kind);
0 commit comments