Consistently dump default template arguments for template parameters as 'TemplateArgument's.

llvm-svn: 204572
This commit is contained in:
Richard Smith 2014-03-23 20:50:39 +00:00
parent 423380f9a2
commit ecf74ff40a
2 changed files with 15 additions and 7 deletions

View File

@ -1188,8 +1188,10 @@ void ASTDumper::VisitTemplateTypeParmDecl(const TemplateTypeParmDecl *D) {
if (D->isParameterPack())
OS << " ...";
dumpName(D);
if (D->hasDefaultArgument())
dumpType(D->getDefaultArgument());
if (D->hasDefaultArgument()) {
lastChild();
dumpTemplateArgument(D->getDefaultArgument());
}
}
void ASTDumper::VisitNonTypeTemplateParmDecl(const NonTypeTemplateParmDecl *D) {
@ -1197,8 +1199,10 @@ void ASTDumper::VisitNonTypeTemplateParmDecl(const NonTypeTemplateParmDecl *D) {
if (D->isParameterPack())
OS << " ...";
dumpName(D);
if (D->hasDefaultArgument())
dumpStmt(D->getDefaultArgument());
if (D->hasDefaultArgument()) {
lastChild();
dumpTemplateArgument(D->getDefaultArgument());
}
}
void ASTDumper::VisitTemplateTemplateParmDecl(
@ -1207,8 +1211,10 @@ void ASTDumper::VisitTemplateTemplateParmDecl(
OS << " ...";
dumpName(D);
dumpTemplateParameters(D->getTemplateParameters());
if (D->hasDefaultArgument())
if (D->hasDefaultArgument()) {
lastChild();
dumpTemplateArgumentLoc(D->getDefaultArgument());
}
}
void ASTDumper::VisitUsingDecl(const UsingDecl *D) {

View File

@ -308,7 +308,8 @@ namespace TestTemplateTypeParmDecl {
// CHECK: NamespaceDecl{{.*}} TestTemplateTypeParmDecl
// CHECK-NEXT: FunctionTemplateDecl
// CHECK-NEXT: TemplateTypeParmDecl{{.*}} typename ... T
// CHECK-NEXT: TemplateTypeParmDecl{{.*}} class U 'int'
// CHECK-NEXT: TemplateTypeParmDecl{{.*}} class U
// CHECK-NEXT: TemplateArgument type 'int'
namespace TestNonTypeTemplateParmDecl {
template<int I = 1, int ... J> void foo();
@ -316,7 +317,8 @@ namespace TestNonTypeTemplateParmDecl {
// CHECK: NamespaceDecl{{.*}} TestNonTypeTemplateParmDecl
// CHECK-NEXT: FunctionTemplateDecl
// CHECK-NEXT: NonTypeTemplateParmDecl{{.*}} 'int' I
// CHECK-NEXT: IntegerLiteral{{.*}} 'int' 1
// CHECK-NEXT: TemplateArgument expr
// CHECK-NEXT: IntegerLiteral{{.*}} 'int' 1
// CHECK-NEXT: NonTypeTemplateParmDecl{{.*}} 'int' ... J
namespace TestTemplateTemplateParmDecl {