Skip to content

Commit 1d031ce

Browse files
committed
fixup! [clang][AST] Pretty-print default template template args
1 parent 6afe3fe commit 1d031ce

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

clang/docs/ReleaseNotes.rst

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,9 @@ AST Dumping Potentially Breaking Changes
124124
``__atomic_test_and_set(p, 0)``
125125

126126
- Pretty-printing of templates with inherited (i.e. specified in a previous
127-
redeclaration) and template default arguments has been fixed.
127+
redeclaration) default arguments has been fixed.
128+
129+
- Default arguments of template template parameters are pretty-printed now.
128130

129131
Clang Frontend Potentially Breaking Changes
130132
-------------------------------------------

clang/lib/AST/DeclPrinter.cpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ namespace {
111111
void VisitOMPCapturedExprDecl(OMPCapturedExprDecl *D);
112112
void VisitTemplateTypeParmDecl(const TemplateTypeParmDecl *TTP);
113113
void VisitNonTypeTemplateParmDecl(const NonTypeTemplateParmDecl *NTTP);
114+
void VisitTemplateTemplateParmDecl(const TemplateTemplateParmDecl *);
114115
void VisitHLSLBufferDecl(HLSLBufferDecl *D);
115116

116117
void VisitOpenACCDeclareDecl(OpenACCDeclareDecl *D);
@@ -1189,12 +1190,7 @@ void DeclPrinter::printTemplateParameters(const TemplateParameterList *Params,
11891190
} else if (auto NTTP = dyn_cast<NonTypeTemplateParmDecl>(Param)) {
11901191
VisitNonTypeTemplateParmDecl(NTTP);
11911192
} else if (auto TTPD = dyn_cast<TemplateTemplateParmDecl>(Param)) {
1192-
VisitTemplateDecl(TTPD);
1193-
if (TTPD->hasDefaultArgument() && !TTPD->defaultArgumentWasInherited()) {
1194-
Out << " = ";
1195-
TTPD->getDefaultArgument().getArgument().print(Policy, Out,
1196-
/*IncludeType=*/false);
1197-
}
1193+
VisitTemplateTemplateParmDecl(TTPD);
11981194
}
11991195
}
12001196

@@ -1920,6 +1916,16 @@ void DeclPrinter::VisitNonTypeTemplateParmDecl(
19201916
}
19211917
}
19221918

1919+
void DeclPrinter::VisitTemplateTemplateParmDecl(
1920+
const TemplateTemplateParmDecl *TTPD) {
1921+
VisitTemplateDecl(TTPD);
1922+
if (TTPD->hasDefaultArgument() && !TTPD->defaultArgumentWasInherited()) {
1923+
Out << " = ";
1924+
TTPD->getDefaultArgument().getArgument().print(Policy, Out,
1925+
/*IncludeType=*/false);
1926+
}
1927+
}
1928+
19231929
void DeclPrinter::VisitOpenACCDeclareDecl(OpenACCDeclareDecl *D) {
19241930
if (!D->isInvalidDecl()) {
19251931
Out << "#pragma acc declare";

0 commit comments

Comments
 (0)