@@ -674,7 +674,18 @@ static FuncDecl *createDistributedThunkFunction(FuncDecl *func) {
674674 assert (systemTy &&
675675 " Thunk synthesis must have concrete actor system type available" );
676676
677- DeclName thunkName = func->getName ();
677+ DeclName thunkName;
678+
679+ // Since accessors don't have names, let's generate one based on
680+ // the computed property.
681+ if (auto *accessor = dyn_cast<AccessorDecl>(func)) {
682+ auto *var = accessor->getStorage ();
683+ thunkName = DeclName (C, var->getBaseName (),
684+ /* argumentNames=*/ ArrayRef<Identifier>());
685+ } else {
686+ // Let's use the name of a 'distributed func'
687+ thunkName = func->getName ();
688+ }
678689
679690 // --- Prepare generic parameters
680691 GenericParamList *genericParamList = nullptr ;
@@ -804,10 +815,21 @@ addDistributedActorCodableConformance(
804815/* ********************** SYNTHESIS ENTRY POINTS *******************************/
805816/* *****************************************************************************/
806817
807- FuncDecl *GetDistributedThunkRequest::evaluate (
808- Evaluator &evaluator, AbstractFunctionDecl *distributedTarget) const {
809- if (!distributedTarget->isDistributed ())
810- return nullptr ;
818+ FuncDecl *GetDistributedThunkRequest::evaluate (Evaluator &evaluator,
819+ Originator originator) const {
820+ AbstractFunctionDecl *distributedTarget = nullptr ;
821+ if (auto *var = originator.dyn_cast <VarDecl *>()) {
822+ if (!var->isDistributed ())
823+ return nullptr ;
824+
825+ distributedTarget = var->getAccessor (AccessorKind::Get);
826+ } else {
827+ distributedTarget = originator.get <AbstractFunctionDecl *>();
828+ if (!distributedTarget->isDistributed ())
829+ return nullptr ;
830+ }
831+
832+ assert (distributedTarget);
811833
812834 auto &C = distributedTarget->getASTContext ();
813835 auto DC = distributedTarget->getDeclContext ();
0 commit comments