From 0193a72c6fc873c0c83119ab1e6f089719e09e1a Mon Sep 17 00:00:00 2001 From: Craig Silverstein Date: Fri, 9 Jul 2010 20:25:10 +0000 Subject: [PATCH] Fix a crashing but trying to print a TemplateTemplateParmDecl for code like this: template class U> class V {}; The problem is that the DeclPrinter assumed all TemplateDecls have a getTemplatedClass(), but template template params don't (so we got a NULL dereference). The solution is to detect if we're a template template param, and construct the template class name ('class U') specially in this case. OKed by dgregor and chandlerc git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108007 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/AST/DeclPrinter.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/AST/DeclPrinter.cpp b/lib/AST/DeclPrinter.cpp index c437894976..765772dd13 100644 --- a/lib/AST/DeclPrinter.cpp +++ b/lib/AST/DeclPrinter.cpp @@ -654,7 +654,11 @@ void DeclPrinter::VisitTemplateDecl(TemplateDecl *D) { Out << "> "; - Visit(D->getTemplatedDecl()); + if (isa(D)) { + Out << "class " << D->getName(); + } else { + Visit(D->getTemplatedDecl()); + } } //---------------------------------------------------------------------------- -- 2.40.0