Skip to content

Commit 25c9ddd

Browse files
committed
[Sema] Prioritize unavailability check for protocol witnesses
The errors on explicit unavailability are more precise than those on availablity version. Make sure we prioritize the unavailability ones first.
1 parent c79d5cf commit 25c9ddd

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

lib/Sema/TypeCheckProtocol.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1469,6 +1469,11 @@ RequirementCheck WitnessChecker::checkWitness(ValueDecl *requirement,
14691469
return CheckKind::UsableFromInline;
14701470
}
14711471

1472+
if (match.Witness->getAttrs().isUnavailable(getASTContext()) &&
1473+
!requirement->getAttrs().isUnavailable(getASTContext())) {
1474+
return CheckKind::WitnessUnavailable;
1475+
}
1476+
14721477
auto requiredAvailability = AvailabilityContext::alwaysAvailable();
14731478
if (checkWitnessAvailability(requirement, match.Witness,
14741479
&requiredAvailability)) {
@@ -1498,11 +1503,6 @@ RequirementCheck WitnessChecker::checkWitness(ValueDecl *requirement,
14981503
}
14991504
}
15001505

1501-
if (match.Witness->getAttrs().isUnavailable(getASTContext()) &&
1502-
!requirement->getAttrs().isUnavailable(getASTContext())) {
1503-
return CheckKind::WitnessUnavailable;
1504-
}
1505-
15061506
return CheckKind::Success;
15071507
}
15081508

0 commit comments

Comments
 (0)