The TraverseDecl method of the RecursiveASTVisitor reaches different number of nodes in postorder than in preorder visit mode in some cases, which must be a bug.
In the following example during traversing the TranslationUnitDecl node the preorder visitor reaches the ClassTemplateSpecializationDecl node but the postorder visitor does not.
template <typename> class X {}; template class X<int>;
This must be the result of a bug in the DEF_TRAVERSE_TMPL_SPEC_DECL, which returns true in some cases and preventing not only the traversal of the declaration context of that node but the calling of the postorder visit action in the DEF_TRAVERSE_DECL macro too.
Same problem here?