@@ -232,6 +232,7 @@ DescriptiveDeclKind Decl::getDescriptiveKind() const {
232232
233233 switch (accessor->getAccessorKind ()) {
234234 case AccessorKind::Get:
235+ case AccessorKind::DistributedGet:
235236 return DescriptiveDeclKind::Getter;
236237
237238 case AccessorKind::Set:
@@ -993,8 +994,10 @@ std::optional<Type> AbstractFunctionDecl::getEffectiveThrownErrorType() const {
993994 // has a cyclic reference if we try to get its interface type here. Find a
994995 // better way to express this.
995996 if (auto accessor = dyn_cast<AccessorDecl>(this )) {
996- if (accessor->getAccessorKind () != AccessorKind::Get)
997+ if (accessor->getAccessorKind () != AccessorKind::Get &&
998+ accessor->getAccessorKind () != AccessorKind::DistributedGet) {
997999 return std::nullopt ;
1000+ }
9981001 }
9991002
10001003 Type interfaceType = getInterfaceType ();
@@ -2787,6 +2790,7 @@ bool AbstractStorageDecl::requiresOpaqueAccessors() const {
27872790bool AbstractStorageDecl::requiresOpaqueAccessor (AccessorKind kind) const {
27882791 switch (kind) {
27892792 case AccessorKind::Get:
2793+ case AccessorKind::DistributedGet:
27902794 return requiresOpaqueGetter ();
27912795 case AccessorKind::Set:
27922796 return requiresOpaqueSetter ();
@@ -6805,6 +6809,8 @@ StringRef swift::getAccessorNameForDiagnostic(AccessorKind accessorKind,
68056809 switch (accessorKind) {
68066810 case AccessorKind::Get:
68076811 return article ? " a getter" : " getter" ;
6812+ case AccessorKind::DistributedGet:
6813+ return article ? " a distributed getter" : " distributed getter" ;
68086814 case AccessorKind::Set:
68096815 return article ? " a setter" : " setter" ;
68106816 case AccessorKind::Address:
@@ -8958,6 +8964,7 @@ DeclName AbstractFunctionDecl::getEffectiveFullName() const {
89588964 case AccessorKind::Address:
89598965 case AccessorKind::MutableAddress:
89608966 case AccessorKind::Get:
8967+ case AccessorKind::DistributedGet:
89618968 case AccessorKind::Read:
89628969 case AccessorKind::Modify:
89638970 return subscript ? subscript->getName ()
@@ -10148,6 +10155,25 @@ AccessorDecl *AccessorDecl::create(ASTContext &ctx, SourceLoc declLoc,
1014810155 return D;
1014910156}
1015010157
10158+ AccessorDecl *AccessorDecl::createImplicit (ASTContext &ctx,
10159+ AccessorKind accessorKind,
10160+ AbstractStorageDecl *storage,
10161+ bool async, bool throws,
10162+ TypeLoc thrownType,
10163+ Type fnRetType,
10164+ DeclContext *parent) {
10165+ AccessorDecl *D = AccessorDecl::createImpl (
10166+ ctx, /* declLoc=*/ SourceLoc (),
10167+ /* accessorKeywordLoc=*/ SourceLoc (), accessorKind,
10168+ storage, async, /* asyncLoc=*/ SourceLoc (),
10169+ /* throws=*/ true , /* throwsLoc=*/ SourceLoc (),
10170+ thrownType, parent,
10171+ /* clangNode=*/ ClangNode ());
10172+ D->setImplicit ();
10173+ D->setResultInterfaceType (fnRetType);
10174+ return D;
10175+ }
10176+
1015110177AccessorDecl *AccessorDecl::createParsed (
1015210178 ASTContext &ctx, AccessorKind accessorKind, AbstractStorageDecl *storage,
1015310179 SourceLoc declLoc, SourceLoc accessorKeywordLoc, ParameterList *paramList,
@@ -10226,6 +10252,7 @@ StringRef AccessorDecl::implicitParameterNameFor(AccessorKind kind) {
1022610252 case AccessorKind::DidSet:
1022710253 return " oldValue" ;
1022810254 case AccessorKind::Get:
10255+ case AccessorKind::DistributedGet:
1022910256 case AccessorKind::Read:
1023010257 case AccessorKind::Modify:
1023110258 case AccessorKind::Address:
@@ -10237,6 +10264,7 @@ StringRef AccessorDecl::implicitParameterNameFor(AccessorKind kind) {
1023710264bool AccessorDecl::isAssumedNonMutating () const {
1023810265 switch (getAccessorKind ()) {
1023910266 case AccessorKind::Get:
10267+ case AccessorKind::DistributedGet:
1024010268 case AccessorKind::Address:
1024110269 case AccessorKind::Read:
1024210270 return true ;
@@ -10270,6 +10298,9 @@ void AccessorDecl::printUserFacingName(raw_ostream &out) const {
1027010298 case AccessorKind::Get:
1027110299 out << " getter:" ;
1027210300 break ;
10301+ case AccessorKind::DistributedGet:
10302+ out << " _distributed_getter:" ;
10303+ break ;
1027310304 case AccessorKind::Set:
1027410305 out << " setter:" ;
1027510306 break ;
0 commit comments