Index: cfe/trunk/include/clang/AST/LexicallyOrderedRecursiveASTVisitor.h =================================================================== --- cfe/trunk/include/clang/AST/LexicallyOrderedRecursiveASTVisitor.h +++ cfe/trunk/include/clang/AST/LexicallyOrderedRecursiveASTVisitor.h @@ -111,8 +111,6 @@ return true; } - bool shouldTraverseTemplateArgumentsBeforeDecl() const { return true; } - Stmt::child_range getStmtChildren(Stmt *S) { return S->children(); } SmallVector getStmtChildren(CXXOperatorCallExpr *CE) { Index: cfe/trunk/include/clang/AST/RecursiveASTVisitor.h =================================================================== --- cfe/trunk/include/clang/AST/RecursiveASTVisitor.h +++ cfe/trunk/include/clang/AST/RecursiveASTVisitor.h @@ -537,7 +537,6 @@ bool dataTraverseNode(Stmt *S, DataRecursionQueue *Queue); bool PostVisitStmt(Stmt *S); - bool shouldTraverseTemplateArgumentsBeforeDecl() const { return false; } }; template @@ -1691,13 +1690,8 @@ // template declarations. #define DEF_TRAVERSE_TMPL_DECL(TMPLDECLKIND) \ DEF_TRAVERSE_DECL(TMPLDECLKIND##TemplateDecl, { \ - if (getDerived().shouldTraverseTemplateArgumentsBeforeDecl()) { \ - TRY_TO(TraverseTemplateParameterListHelper(D->getTemplateParameters())); \ - TRY_TO(TraverseDecl(D->getTemplatedDecl())); \ - } else { \ - TRY_TO(TraverseDecl(D->getTemplatedDecl())); \ - TRY_TO(TraverseTemplateParameterListHelper(D->getTemplateParameters())); \ - } \ + TRY_TO(TraverseTemplateParameterListHelper(D->getTemplateParameters())); \ + TRY_TO(TraverseDecl(D->getTemplatedDecl())); \ \ /* By default, we do not traverse the instantiations of \ class templates since they do not appear in the user code. The \