From: Alexander Kornienko Date: Fri, 17 Aug 2012 17:38:39 +0000 (+0000) Subject: Fixed crash and added a test and a minor output problem X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a7612aec79bf7f7c7791941aa0a5c59b1dc82463;p=clang Fixed crash and added a test and a minor output problem git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162110 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Frontend/ASTConsumers.cpp b/lib/Frontend/ASTConsumers.cpp index 0f0d835204..4a8f88f328 100644 --- a/lib/Frontend/ASTConsumers.cpp +++ b/lib/Frontend/ASTConsumers.cpp @@ -58,6 +58,8 @@ namespace { bool shouldWalkTypesOfTypeLocs() const { return false; } bool TraverseDecl(Decl *D) { + if (D == NULL) + return false; if (filterMatches(D)) { Out.changeColor(llvm::raw_ostream::BLUE) << (Dump ? "Dumping " : "Printing ") << getName(D) << ":\n"; @@ -66,6 +68,7 @@ namespace { D->dump(Out); else D->print(Out, /*Indentation=*/0, /*PrintInstantiation=*/true); + Out << "\n"; // Don't traverse child nodes to avoid output duplication. return true; } @@ -89,8 +92,6 @@ namespace { class ASTDeclNodeLister : public ASTConsumer, public RecursiveASTVisitor { - typedef RecursiveASTVisitor base; - public: ASTDeclNodeLister(raw_ostream *Out = NULL) : Out(Out ? *Out : llvm::outs()) {} diff --git a/test/Tooling/clang-check-ast-dump.cpp b/test/Tooling/clang-check-ast-dump.cpp index e29072bcfe..28dcc6eaa8 100644 --- a/test/Tooling/clang-check-ast-dump.cpp +++ b/test/Tooling/clang-check-ast-dump.cpp @@ -37,4 +37,7 @@ public: int n __attribute__((aligned(1+1))); }; +// Used to fail with -ast-dump-filter X +template class C> class Z {}; + }