Sema: Compute existential member access limitations for storage declarations

This commit is contained in:
Anthony Latsis
2024-11-25 14:16:07 +00:00
parent 01c899b31c
commit 1ce0aeefd2
4 changed files with 86 additions and 22 deletions

View File

@@ -9878,8 +9878,15 @@ performMemberLookup(ConstraintKind constraintKind, DeclNameRef memberName,
// member access if the member's signature references 'Self'.
if (instanceTy->isExistentialType() &&
decl->getDeclContext()->getSelfProtocolDecl()) {
if (!isMemberAvailableOnExistential(instanceTy, decl)) {
switch (isMemberAvailableOnExistential(instanceTy, decl)) {
case ExistentialMemberAccessLimitation::Unsupported:
// TODO: Write-only accesses are not supported yet.
case ExistentialMemberAccessLimitation::WriteOnly:
return true;
case ExistentialMemberAccessLimitation::ReadOnly:
case ExistentialMemberAccessLimitation::None:
break;
}
}