[Distributed] Allow requesting distributed thunks on AbstractStorageDecl

One step towards future distributed subscripts.
This commit is contained in:
Pavel Yaskevich
2022-06-29 14:46:19 -07:00
parent 3f3410de00
commit 8d9962e605
6 changed files with 30 additions and 24 deletions

View File

@@ -836,14 +836,18 @@ addDistributedActorCodableConformance(
FuncDecl *GetDistributedThunkRequest::evaluate(Evaluator &evaluator,
Originator originator) const {
AbstractFunctionDecl *distributedTarget = nullptr;
if (auto *var = originator.dyn_cast<VarDecl *>()) {
if (!var->isDistributed())
if (auto *storage = originator.dyn_cast<AbstractStorageDecl *>()) {
if (!storage->isDistributed())
return nullptr;
if (checkDistributedActorProperty(var, /*diagnose=*/false))
return nullptr;
if (auto *var = dyn_cast<VarDecl>(storage)) {
if (checkDistributedActorProperty(var, /*diagnose=*/false))
return nullptr;
distributedTarget = var->getAccessor(AccessorKind::Get);
distributedTarget = var->getAccessor(AccessorKind::Get);
} else {
llvm_unreachable("unsupported storage kind");
}
} else {
distributedTarget = originator.get<AbstractFunctionDecl *>();
if (!distributedTarget->isDistributed())