AST: Generalize ProtocolDecl::getRequirementSignature() to a new RequirementSignature type

The RequirementSignature generalizes the old ArrayRef<Requirement>
which stores the minimal requirements that a conforming type's
witnesses must satisfy, to also record the protocol typealiases
defined in the protocol.
This commit is contained in:
Slava Pestov
2022-02-11 00:36:01 -05:00
parent c58d9d8974
commit a1c03db381
31 changed files with 181 additions and 122 deletions

View File

@@ -1194,7 +1194,8 @@ static StringRef printGenericSignature(SDKContext &Ctx, Decl *D, bool Canonical)
llvm::SmallString<32> Result;
llvm::raw_svector_ostream OS(Result);
if (auto *PD = dyn_cast<ProtocolDecl>(D)) {
return printGenericSignature(Ctx, PD->getRequirementSignature(), Canonical);
return printGenericSignature(Ctx, PD->getRequirementSignature().getRequirements(),
Canonical);
}
PrintOptions Opts = getTypePrintOpts(Ctx.getOpts());
if (auto *GC = D->getAsGenericContext()) {