Skip to content

Commit 315fd8c

Browse files
committed
[ASTPrinter] Refactor generic param/req printing
1 parent 6e38a63 commit 315fd8c

File tree

1 file changed

+19
-41
lines changed

1 file changed

+19
-41
lines changed

lib/AST/ASTPrinter.cpp

Lines changed: 19 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -611,8 +611,8 @@ class PrintAST : public ASTVisitor<PrintAST> {
611611
bool openBracket = true, bool closeBracket = true);
612612
void printMembers(ArrayRef<Decl *> members, bool needComma = false,
613613
bool openBracket = true, bool closeBracket = true);
614-
void printNominalDeclGenericParams(NominalTypeDecl *decl);
615-
void printNominalDeclGenericRequirements(NominalTypeDecl *decl);
614+
void printGenericDeclGenericParams(GenericContext *decl);
615+
void printGenericDeclGenericRequirements(GenericContext *decl);
616616
void printInherited(const Decl *decl);
617617

618618
void printEnumElement(EnumElementDecl *elt);
@@ -1655,13 +1655,13 @@ void PrintAST::printMembers(ArrayRef<Decl *> members, bool needComma,
16551655
Printer << "}";
16561656
}
16571657

1658-
void PrintAST::printNominalDeclGenericParams(NominalTypeDecl *decl) {
1658+
void PrintAST::printGenericDeclGenericParams(GenericContext *decl) {
16591659
if (decl->getGenericParams())
16601660
if (auto GenericSig = decl->getGenericSignature())
16611661
printGenericSignature(GenericSig, PrintParams | InnermostOnly);
16621662
}
16631663

1664-
void PrintAST::printNominalDeclGenericRequirements(NominalTypeDecl *decl) {
1664+
void PrintAST::printGenericDeclGenericRequirements(GenericContext *decl) {
16651665
if (decl->getGenericParams())
16661666
if (auto GenericSig = decl->getGenericSignature())
16671667
printGenericSignature(GenericSig, PrintRequirements | InnermostOnly);
@@ -1776,10 +1776,7 @@ void PrintAST::printSynthesizedExtension(Type ExtendedType,
17761776

17771777
printExtendedTypeName(ExtendedType, Printer, Options);
17781778
printInherited(ExtDecl);
1779-
1780-
if (ExtDecl->getGenericParams())
1781-
if (auto *GenericSig = ExtDecl->getGenericSignature())
1782-
printGenericSignature(GenericSig, PrintRequirements | InnermostOnly);
1779+
printGenericDeclGenericRequirements(ExtDecl);
17831780
}
17841781
if (Options.TypeDefinitions) {
17851782
printMembersOfDecl(ExtDecl, false,
@@ -1933,9 +1930,7 @@ void PrintAST::visitTypeAliasDecl(TypeAliasDecl *decl) {
19331930
[&]{
19341931
Printer.printName(decl->getName());
19351932
}, [&]{ // Signature
1936-
if (decl->getGenericParams())
1937-
if (auto *genericSig = decl->getGenericSignature())
1938-
printGenericSignature(genericSig, PrintParams | InnermostOnly);
1933+
printGenericDeclGenericParams(decl);
19391934
});
19401935
bool ShouldPrint = true;
19411936
Type Ty = decl->getUnderlyingTypeLoc().getType();
@@ -1947,9 +1942,7 @@ void PrintAST::visitTypeAliasDecl(TypeAliasDecl *decl) {
19471942
if (ShouldPrint) {
19481943
Printer << " = ";
19491944
printTypeLoc(decl->getUnderlyingTypeLoc());
1950-
if (decl->isGeneric())
1951-
if (auto *genericSig = decl->getGenericSignature())
1952-
printGenericSignature(genericSig, PrintRequirements | InnermostOnly);
1945+
printGenericDeclGenericRequirements(decl);
19531946
}
19541947
}
19551948

@@ -2011,10 +2004,10 @@ void PrintAST::visitEnumDecl(EnumDecl *decl) {
20112004
[&]{
20122005
Printer.printName(decl->getName());
20132006
}, [&]{ // Signature
2014-
printNominalDeclGenericParams(decl);
2007+
printGenericDeclGenericParams(decl);
20152008
});
20162009
printInherited(decl);
2017-
printNominalDeclGenericRequirements(decl);
2010+
printGenericDeclGenericRequirements(decl);
20182011
}
20192012
if (Options.TypeDefinitions) {
20202013
printMembersOfDecl(decl, false, true,
@@ -2039,10 +2032,10 @@ void PrintAST::visitStructDecl(StructDecl *decl) {
20392032
[&]{
20402033
Printer.printName(decl->getName());
20412034
}, [&]{ // Signature
2042-
printNominalDeclGenericParams(decl);
2035+
printGenericDeclGenericParams(decl);
20432036
});
20442037
printInherited(decl);
2045-
printNominalDeclGenericRequirements(decl);
2038+
printGenericDeclGenericRequirements(decl);
20462039
}
20472040
if (Options.TypeDefinitions) {
20482041
printMembersOfDecl(decl, false, true,
@@ -2067,11 +2060,11 @@ void PrintAST::visitClassDecl(ClassDecl *decl) {
20672060
[&]{
20682061
Printer.printName(decl->getName());
20692062
}, [&]{ // Signature
2070-
printNominalDeclGenericParams(decl);
2063+
printGenericDeclGenericParams(decl);
20712064
});
20722065

20732066
printInherited(decl);
2074-
printNominalDeclGenericRequirements(decl);
2067+
printGenericDeclGenericRequirements(decl);
20752068
}
20762069

20772070
if (Options.TypeDefinitions) {
@@ -2514,10 +2507,7 @@ void PrintAST::visitFuncDecl(FuncDecl *decl) {
25142507
Printer << " ";
25152508
}
25162509
}, [&] { // Parameters
2517-
if (decl->isGeneric())
2518-
if (auto *genericSig = decl->getGenericSignature())
2519-
printGenericSignature(genericSig, PrintParams | InnermostOnly);
2520-
2510+
printGenericDeclGenericParams(decl);
25212511
printFunctionParameters(decl);
25222512
});
25232513

@@ -2541,9 +2531,7 @@ void PrintAST::visitFuncDecl(FuncDecl *decl) {
25412531
printTypeLoc(ResultTyLoc);
25422532
Printer.printStructurePost(PrintStructureKind::FunctionReturnType);
25432533
}
2544-
if (decl->isGeneric())
2545-
if (auto *genericSig = decl->getGenericSignature())
2546-
printGenericSignature(genericSig, PrintRequirements | InnermostOnly);
2534+
printGenericDeclGenericRequirements(decl);
25472535
}
25482536

25492537
if (auto BodyFunc = Options.FunctionBody) {
@@ -2642,10 +2630,7 @@ void PrintAST::visitSubscriptDecl(SubscriptDecl *decl) {
26422630
recordDeclLoc(decl, [&]{
26432631
Printer << "subscript";
26442632
}, [&] { // Parameters
2645-
if (decl->isGeneric())
2646-
if (auto *genericSig = decl->getGenericSignature())
2647-
printGenericSignature(genericSig, PrintParams | InnermostOnly);
2648-
2633+
printGenericDeclGenericParams(decl);
26492634
printParameterList(decl->getIndices(),
26502635
decl->hasInterfaceType()
26512636
? decl->getIndicesInterfaceType()
@@ -2664,9 +2649,7 @@ void PrintAST::visitSubscriptDecl(SubscriptDecl *decl) {
26642649
else
26652650
printTypeLoc(elementTy);
26662651
Printer.printStructurePost(PrintStructureKind::FunctionReturnType);
2667-
if (decl->isGeneric())
2668-
if (auto *genericSig = decl->getGenericSignature())
2669-
printGenericSignature(genericSig, PrintRequirements | InnermostOnly);
2652+
printGenericDeclGenericRequirements(decl);
26702653
printAccessors(decl);
26712654
}
26722655

@@ -2702,16 +2685,11 @@ void PrintAST::visitConstructorDecl(ConstructorDecl *decl) {
27022685
break;
27032686
}
27042687

2705-
if (decl->isGeneric())
2706-
if (auto *genericSig = decl->getGenericSignature())
2707-
printGenericSignature(genericSig, PrintParams | InnermostOnly);
2708-
2688+
printGenericDeclGenericParams(decl);
27092689
printFunctionParameters(decl);
27102690
});
27112691

2712-
if (decl->isGeneric())
2713-
if (auto *genericSig = decl->getGenericSignature())
2714-
printGenericSignature(genericSig, PrintRequirements | InnermostOnly);
2692+
printGenericDeclGenericRequirements(decl);
27152693

27162694
if (auto BodyFunc = Options.FunctionBody) {
27172695
Printer << " {";

0 commit comments

Comments
 (0)