AST: Factor out a new Requirement::getProtocolDecl() utility method

This commit is contained in:
Slava Pestov
2021-02-25 17:13:57 -05:00
parent 8ae1b768f1
commit 53e06d69b5
24 changed files with 74 additions and 107 deletions

View File

@@ -572,8 +572,7 @@ void NormalProtocolConformance::setSignatureConformances(
"Should have interface types here");
assert(idx < conformances.size());
assert(conformances[idx].isInvalid() ||
conformances[idx].getRequirement() ==
req.getSecondType()->castTo<ProtocolType>()->getDecl());
conformances[idx].getRequirement() == req.getProtocolDecl());
++idx;
}
}
@@ -772,7 +771,7 @@ NormalProtocolConformance::getAssociatedConformance(Type assocType,
if (reqt.getKind() == RequirementKind::Conformance) {
// Is this the conformance we're looking for?
if (reqt.getFirstType()->isEqual(assocType) &&
reqt.getSecondType()->castTo<ProtocolType>()->getDecl() == protocol)
reqt.getProtocolDecl() == protocol)
return getSignatureConformances()[conformanceIndex];
++conformanceIndex;
@@ -840,7 +839,7 @@ void NormalProtocolConformance::finishSignatureConformances() {
auto *depMemTy = origTy->castTo<DependentMemberType>();
substTy = recursivelySubstituteBaseType(module, this, depMemTy);
}
auto reqProto = req.getSecondType()->castTo<ProtocolType>()->getDecl();
auto reqProto = req.getProtocolDecl();
// Looking up a conformance for a contextual type and mapping the
// conformance context produces a more accurate result than looking