<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, May 20, 2014 at 1:17 PM, Daniel Jasper <span dir="ltr"><<a href="mailto:djasper@google.com" target="_blank">djasper@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I personally don't care either way. Just wanted to shed some light on how clang-format does things and how it fails to understand the two columns of weird macro invocations with no structuring semicolons.</div>
</blockquote><div><br></div><div>Do we have any documentation for these sorts of tricks?</div><div><br></div><div>-- Sean Silva</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="gmail_extra"><br><br><div class="gmail_quote"><div><div class="h5">On Tue, May 20, 2014 at 8:57 PM, Alp Toker <span dir="ltr"><<a href="mailto:alp@nuanti.com" target="_blank">alp@nuanti.com</a>></span> wrote:<br>
</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">
<br>
On 19/05/2014 10:15, Daniel Jasper wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<br>
<br>
On Sun, May 18, 2014 at 8:38 PM, Alp Toker <<a href="mailto:alp@nuanti.com" target="_blank">alp@nuanti.com</a> <mailto:<a href="mailto:alp@nuanti.com" target="_blank">alp@nuanti.com</a>>> wrote:<br>
<br>
    Author: alp<br>
    Date: Sun May 18 13:38:19 2014<br>
    New Revision: 209092<br>
<br>
    URL: <a href="http://llvm.org/viewvc/llvm-project?rev=209092&view=rev" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project?rev=209092&view=rev</a><br>
    Log:<br>
    Format the two RecursiveASTVisitors<br>
<br>
    Apply current ToT clang-format on the two RAVs to reduce delta and<br>
    help<br>
    identify differences between the two.<br>
<br>
    We lose a little pretty formatting in the headers but that's the<br>
    price to pay<br>
    so we can diff these two files effectively and look to a future<br>
    where we don't<br>
    have to maintain two copies of this code.<br>
<br>
    Formatting and whitespace only.<br>
<br>
    Modified:<br>
        cfe/trunk/include/clang/AST/<u></u>DataRecursiveASTVisitor.h<br>
        cfe/trunk/include/clang/AST/<u></u>RecursiveASTVisitor.h<br>
<br>
    Modified: cfe/trunk/include/clang/AST/<u></u>DataRecursiveASTVisitor.h<br>
    URL:<br>
    <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DataRecursiveASTVisitor.h?rev=209092&r1=209091&r2=209092&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/cfe/trunk/include/<u></u>clang/AST/<u></u>DataRecursiveASTVisitor.h?rev=<u></u>209092&r1=209091&r2=209092&<u></u>view=diff</a><br>


    ==============================<u></u>==============================<u></u>==================<br>
    --- cfe/trunk/include/clang/AST/<u></u>DataRecursiveASTVisitor.h (original)<br>
    +++ cfe/trunk/include/clang/AST/<u></u>DataRecursiveASTVisitor.h Sun May<br>
    18 13:38:19 2014<br>
    @@ -38,34 +38,24 @@<br>
     // using them is responsible for defining macro OPERATOR().<br>
<br>
     // All unary operators.<br>
    -#define UNARYOP_LIST()                          \<br>
    -  OPERATOR(PostInc)   OPERATOR(PostDec)         \<br>
    -  OPERATOR(PreInc)    OPERATOR(PreDec)          \<br>
    -  OPERATOR(AddrOf)    OPERATOR(Deref)           \<br>
    -  OPERATOR(Plus)      OPERATOR(Minus)           \<br>
    -  OPERATOR(Not)       OPERATOR(LNot)            \<br>
    -  OPERATOR(Real)      OPERATOR(Imag)            \<br>
    -  OPERATOR(Extension)<br>
    +#define UNARYOP_LIST()                       \<br>
    +  OPERATOR(PostInc) OPERATOR(PostDec) OPERATOR(PreInc)<br>
    OPERATOR(PreDec)        \<br>
    +      OPERATOR(AddrOf) OPERATOR(Deref) OPERATOR(Plus)<br>
    OPERATOR(Minus)          \<br>
    +      OPERATOR(Not) OPERATOR(LNot) OPERATOR(Real) OPERATOR(Imag)<br>
                  \<br>
    +      OPERATOR(Extension)<br>
<br>
<br>
If you put them one per line, clang-format understands that these are macro invocations and leaves them one per line. Might be more readable.<br>
</blockquote>
<br>
I've attached the patch putting them one per line but the jury's out on whether it's a worthwhile improvement.<br>
<br>
What do you think? Give a nod and I'm fine to commit.<br>
<br>
(We can always tweak this or go back to hand-formatting if there's demand once the files are unified.)<br>
<br>
Alp.<br>
<br>
</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">
     // All binary operators (excluding compound assign operators).<br>
    -#define BINOP_LIST() \<br>
    -  OPERATOR(PtrMemD)              OPERATOR(PtrMemI)    \<br>
    -  OPERATOR(Mul)   OPERATOR(Div)  OPERATOR(Rem)        \<br>
    -  OPERATOR(Add)   OPERATOR(Sub)  OPERATOR(Shl)        \<br>
    -  OPERATOR(Shr)                                       \<br>
    -                                                      \<br>
    -  OPERATOR(LT)    OPERATOR(GT)   OPERATOR(LE)         \<br>
    -  OPERATOR(GE)    OPERATOR(EQ)   OPERATOR(NE)         \<br>
    -  OPERATOR(And)   OPERATOR(Xor)  OPERATOR(Or)         \<br>
    -  OPERATOR(LAnd)  OPERATOR(LOr)                       \<br>
    -                                                      \<br>
    -  OPERATOR(Assign)                                    \<br>
    -  OPERATOR(Comma)<br>
    +#define BINOP_LIST()                       \<br>
    +  OPERATOR(PtrMemD) OPERATOR(PtrMemI) OPERATOR(Mul) OPERATOR(Div)<br>
                 \<br>
    +      OPERATOR(Rem) OPERATOR(Add) OPERATOR(Sub) OPERATOR(Shl)<br>
    OPERATOR(Shr)    \<br>
    +      OPERATOR(LT) OPERATOR(GT) OPERATOR(LE) OPERATOR(GE)<br>
    OPERATOR(EQ)         \<br>
    +      OPERATOR(NE) OPERATOR(And) OPERATOR(Xor) OPERATOR(Or)<br>
    OPERATOR(LAnd)     \<br>
    +      OPERATOR(LOr) OPERATOR(Assign) OPERATOR(Comma)<br>
<br>
     // All compound assign operators.<br>
    -#define CAO_LIST()                \<br>
    -  OPERATOR(Mul) OPERATOR(Div) OPERATOR(Rem) OPERATOR(Add)<br>
    OPERATOR(Sub) \<br>
    -  OPERATOR(Shl) OPERATOR(Shr) OPERATOR(And) OPERATOR(Or)<br>
     OPERATOR(Xor)<br>
    +#define CAO_LIST()                       \<br>
    +  OPERATOR(Mul) OPERATOR(Div) OPERATOR(Rem) OPERATOR(Add)<br>
    OPERATOR(Sub)        \<br>
    +      OPERATOR(Shl) OPERATOR(Shr) OPERATOR(And) OPERATOR(Or)<br>
    OPERATOR(Xor)<br>
<br>
     namespace clang {<br>
<br>
    @@ -77,8 +67,11 @@ namespace clang {<br>
     // invokes CALL_EXPR, which must be a method call, on the derived<br>
     // object (s.t. a user of RecursiveASTVisitor can override the method<br>
     // in CALL_EXPR).<br>
    -#define TRY_TO(CALL_EXPR) \<br>
    -  do { if (!getDerived().CALL_EXPR) return false; } while (0)<br>
    +#define TRY_TO(CALL_EXPR)                      \<br>
    +  do {                       \<br>
    +    if (!getDerived().CALL_EXPR)                       \<br>
    +      return false;                      \<br>
    +  } while (0)<br>
<br>
     /// \brief A class that does preorder depth-first traversal on the<br>
     /// entire Clang AST and visits each node.<br>
    @@ -144,11 +137,10 @@ namespace clang {<br>
     /// to return true, in which case all known implicit and explicit<br>
     /// instantiations will be visited at the same time as the pattern<br>
     /// from which they were produced.<br>
    -template<typename Derived><br>
    -class RecursiveASTVisitor {<br>
    +template <typename Derived> class RecursiveASTVisitor {<br>
     public:<br>
       /// \brief Return a reference to the derived class.<br>
    -  Derived &getDerived() { return *static_cast<Derived*>(this); }<br>
    +  Derived &getDerived() { return *static_cast<Derived *>(this); }<br>
<br>
       /// \brief Return whether this visitor should recurse into<br>
       /// template instantiations.<br>
    @@ -255,114 +247,111 @@ public:<br>
       // \brief Visit an attribute.<br>
       bool VisitAttr(Attr *A) { return true; }<br>
<br>
    -  // Declare Traverse* and empty Visit* for all Attr classes.<br>
    +// Declare Traverse* and empty Visit* for all Attr classes.<br>
     #define ATTR_VISITOR_DECLS_ONLY<br>
     #include "clang/AST/AttrVisitor.inc"<br>
     #undef ATTR_VISITOR_DECLS_ONLY<br>
<br>
    -  // ---- Methods on Stmts ----<br>
    +// ---- Methods on Stmts ----<br>
<br>
    -  // Declare Traverse*() for all concrete Stmt classes.<br>
    +// Declare Traverse*() for all concrete Stmt classes.<br>
     #define ABSTRACT_STMT(STMT)<br>
    -#define STMT(CLASS, PARENT)       \<br>
    -  bool Traverse##CLASS(CLASS *S);<br>
    +#define STMT(CLASS, PARENT) bool Traverse##CLASS(CLASS *S);<br>
     #include "clang/AST/StmtNodes.inc"<br>
       // The above header #undefs ABSTRACT_STMT and STMT upon exit.<br>
<br>
       // Define WalkUpFrom*() and empty Visit*() for all Stmt classes.<br>
       bool WalkUpFromStmt(Stmt *S) { return getDerived().VisitStmt(S); }<br>
       bool VisitStmt(Stmt *S) { return true; }<br>
    -#define STMT(CLASS, PARENT)       \<br>
    -  bool WalkUpFrom##CLASS(CLASS *S) {        \<br>
    -    TRY_TO(WalkUpFrom##PARENT(S));        \<br>
    -    TRY_TO(Visit##CLASS(S));        \<br>
    -    return true;        \<br>
    -  }       \<br>
    +#define STMT(CLASS, PARENT)                      \<br>
    +  bool WalkUpFrom##CLASS(CLASS *S) {                       \<br>
    +    TRY_TO(WalkUpFrom##PARENT(S));                       \<br>
    +    TRY_TO(Visit##CLASS(S));                       \<br>
    +    return true;                       \<br>
    +  }                      \<br>
       bool Visit##CLASS(CLASS *S) { return true; }<br>
     #include "clang/AST/StmtNodes.inc"<br>
<br>
    -  // Define Traverse*(), WalkUpFrom*(), and Visit*() for unary<br>
    -  // operator methods.  Unary operators are not classes in themselves<br>
    -  // (they're all opcodes in UnaryOperator) but do have visitors.<br>
    -#define OPERATOR(NAME)         \<br>
    -  bool TraverseUnary##NAME(<u></u>UnaryOperator *S) {        \<br>
    -    TRY_TO(WalkUpFromUnary##NAME(<u></u>S));       \<br>
    -    StmtQueueAction StmtQueue(*this);       \<br>
    -    StmtQueue.queue(S->getSubExpr(<u></u>));           \<br>
    -    return true;        \<br>
    -  }       \<br>
    -  bool WalkUpFromUnary##NAME(<u></u>UnaryOperator *S) {        \<br>
    -    TRY_TO(<u></u>WalkUpFromUnaryOperator(S));       \<br>
    -    TRY_TO(VisitUnary##NAME(S));        \<br>
    -    return true;        \<br>
    -  }       \<br>
    +// Define Traverse*(), WalkUpFrom*(), and Visit*() for unary<br>
    +// operator methods.  Unary operators are not classes in themselves<br>
    +// (they're all opcodes in UnaryOperator) but do have visitors.<br>
    +#define OPERATOR(NAME)                       \<br>
    +  bool TraverseUnary##NAME(<u></u>UnaryOperator *S) {                          \<br>
    +    TRY_TO(WalkUpFromUnary##NAME(<u></u>S));                      \<br>
    +    StmtQueueAction StmtQueue(*this);                      \<br>
    +    StmtQueue.queue(S->getSubExpr(<u></u>));                          \<br>
    +    return true;                       \<br>
    +  }                      \<br>
    +  bool WalkUpFromUnary##NAME(<u></u>UnaryOperator *S) {                          \<br>
    +    TRY_TO(<u></u>WalkUpFromUnaryOperator(S));                      \<br>
    +    TRY_TO(VisitUnary##NAME(S));                       \<br>
    +    return true;                       \<br>
    +  }                      \<br>
       bool VisitUnary##NAME(UnaryOperator *S) { return true; }<br>
<br>
       UNARYOP_LIST()<br>
     #undef OPERATOR<br>
<br>
    -  // Define Traverse*(), WalkUpFrom*(), and Visit*() for binary<br>
    -  // operator methods.  Binary operators are not classes in<br>
    themselves<br>
    -  // (they're all opcodes in BinaryOperator) but do have visitors.<br>
    -#define GENERAL_BINOP_FALLBACK(NAME, BINOP_TYPE)        \<br>
    -  bool TraverseBin##NAME(BINOP_TYPE *S) {       \<br>
    -    TRY_TO(WalkUpFromBin##NAME(S))<u></u>;       \<br>
    -    StmtQueueAction StmtQueue(*this);       \<br>
    -    StmtQueue.queue(S->getLHS());           \<br>
    -    StmtQueue.queue(S->getRHS());           \<br>
    -    return true;        \<br>
    -  }       \<br>
    -  bool WalkUpFromBin##NAME(BINOP_TYPE *S) {       \<br>
    -    TRY_TO(WalkUpFrom##BINOP_TYPE(<u></u>S));        \<br>
    -    TRY_TO(VisitBin##NAME(S));        \<br>
    -    return true;        \<br>
    -  }       \<br>
    +// Define Traverse*(), WalkUpFrom*(), and Visit*() for binary<br>
    +// operator methods.  Binary operators are not classes in themselves<br>
    +// (they're all opcodes in BinaryOperator) but do have visitors.<br>
    +#define GENERAL_BINOP_FALLBACK(NAME, BINOP_TYPE)                          \<br>
    +  bool TraverseBin##NAME(BINOP_TYPE *S) {                      \<br>
    +    TRY_TO(WalkUpFromBin##NAME(S))<u></u>;                      \<br>
    +    StmtQueueAction StmtQueue(*this);                      \<br>
    +    StmtQueue.queue(S->getLHS());                          \<br>
    +    StmtQueue.queue(S->getRHS());                          \<br>
    +    return true;                       \<br>
    +  }                      \<br>
    +  bool WalkUpFromBin##NAME(BINOP_TYPE *S) {                      \<br>
    +    TRY_TO(WalkUpFrom##BINOP_TYPE(<u></u>S));                       \<br>
    +    TRY_TO(VisitBin##NAME(S));                       \<br>
    +    return true;                       \<br>
    +  }                      \<br>
       bool VisitBin##NAME(BINOP_TYPE *S) { return true; }<br>
<br>
     #define OPERATOR(NAME) GENERAL_BINOP_FALLBACK(NAME, BinaryOperator)<br>
       BINOP_LIST()<br>
     #undef OPERATOR<br>
<br>
    -  // Define Traverse*(), WalkUpFrom*(), and Visit*() for compound<br>
    -  // assignment methods.  Compound assignment operators are not<br>
    -  // classes in themselves (they're all opcodes in<br>
    -  // CompoundAssignOperator) but do have visitors.<br>
    -#define OPERATOR(NAME) \<br>
    +// Define Traverse*(), WalkUpFrom*(), and Visit*() for compound<br>
    +// assignment methods.  Compound assignment operators are not<br>
    +// classes in themselves (they're all opcodes in<br>
    +// CompoundAssignOperator) but do have visitors.<br>
    +#define OPERATOR(NAME)                       \<br>
       GENERAL_BINOP_FALLBACK(NAME##<u></u>Assign, CompoundAssignOperator)<br>
<br>
       CAO_LIST()<br>
     #undef OPERATOR<br>
     #undef GENERAL_BINOP_FALLBACK<br>
<br>
    -  // ---- Methods on Types ----<br>
    -  // FIXME: revamp to take TypeLoc's rather than Types.<br>
    +// ---- Methods on Types ----<br>
    +// FIXME: revamp to take TypeLoc's rather than Types.<br>
<br>
    -  // Declare Traverse*() for all concrete Type classes.<br>
    +// Declare Traverse*() for all concrete Type classes.<br>
     #define ABSTRACT_TYPE(CLASS, BASE)<br>
    -#define TYPE(CLASS, BASE) \<br>
    -  bool Traverse##CLASS##Type(CLASS##<u></u>Type *T);<br>
    +#define TYPE(CLASS, BASE) bool Traverse##CLASS##Type(CLASS##<u></u>Type *T);<br>
     #include "clang/AST/TypeNodes.def"<br>
       // The above header #undefs ABSTRACT_TYPE and TYPE upon exit.<br>
<br>
       // Define WalkUpFrom*() and empty Visit*() for all Type classes.<br>
       bool WalkUpFromType(Type *T) { return getDerived().VisitType(T); }<br>
       bool VisitType(Type *T) { return true; }<br>
    -#define TYPE(CLASS, BASE)       \<br>
    -  bool WalkUpFrom##CLASS##Type(CLASS#<u></u>#Type *T) {        \<br>
    -    TRY_TO(WalkUpFrom##BASE(T));        \<br>
    -    TRY_TO(Visit##CLASS##Type(T));        \<br>
    -    return true;        \<br>
    -  }       \<br>
    +#define TYPE(CLASS, BASE)                      \<br>
    +  bool WalkUpFrom##CLASS##Type(CLASS#<u></u>#Type *T) {                          \<br>
    +    TRY_TO(WalkUpFrom##BASE(T));                       \<br>
    +    TRY_TO(Visit##CLASS##Type(T));                       \<br>
    +    return true;                       \<br>
    +  }                      \<br>
       bool Visit##CLASS##Type(CLASS##Type *T) { return true; }<br>
     #include "clang/AST/TypeNodes.def"<br>
<br>
    -  // ---- Methods on TypeLocs ----<br>
    -  // FIXME: this currently just calls the matching Type methods<br>
    +// ---- Methods on TypeLocs ----<br>
    +// FIXME: this currently just calls the matching Type methods<br>
<br>
    -  // Declare Traverse*() for all concrete Type classes.<br>
    +// Declare Traverse*() for all concrete Type classes.<br>
     #define ABSTRACT_TYPELOC(CLASS, BASE)<br>
    -#define TYPELOC(CLASS, BASE) \<br>
    -  bool Traverse##CLASS##TypeLoc(<u></u>CLASS##TypeLoc TL);<br>
    +#define TYPELOC(CLASS, BASE) bool<br>
    Traverse##CLASS##TypeLoc(<u></u>CLASS##TypeLoc TL);<br>
     #include "clang/AST/TypeLocNodes.def"<br>
       // The above header #undefs ABSTRACT_TYPELOC and TYPELOC upon exit.<br>
<br>
    @@ -381,34 +370,33 @@ public:<br>
       }<br>
       bool VisitUnqualTypeLoc(<u></u>UnqualTypeLoc TL) { return true; }<br>
<br>
    -  // Note that BASE includes trailing 'Type' which CLASS doesn't.<br>
    -#define TYPE(CLASS, BASE)       \<br>
    -  bool WalkUpFrom##CLASS##TypeLoc(<u></u>CLASS##TypeLoc TL) {        \<br>
    -    TRY_TO(WalkUpFrom##BASE##Loc(<u></u>TL));        \<br>
    -    TRY_TO(Visit##CLASS##TypeLoc(<u></u>TL));        \<br>
    -    return true;        \<br>
    -  }       \<br>
    +// Note that BASE includes trailing 'Type' which CLASS doesn't.<br>
    +#define TYPE(CLASS, BASE)                      \<br>
    +  bool WalkUpFrom##CLASS##TypeLoc(<u></u>CLASS##TypeLoc TL) {                          \<br>
    +    TRY_TO(WalkUpFrom##BASE##Loc(<u></u>TL));                       \<br>
    +    TRY_TO(Visit##CLASS##TypeLoc(<u></u>TL));                       \<br>
    +    return true;                       \<br>
    +  }                      \<br>
       bool Visit##CLASS##TypeLoc(CLASS##<u></u>TypeLoc TL) { return true; }<br>
     #include "clang/AST/TypeNodes.def"<br>
<br>
    -  // ---- Methods on Decls ----<br>
    +// ---- Methods on Decls ----<br>
<br>
    -  // Declare Traverse*() for all concrete Decl classes.<br>
    +// Declare Traverse*() for all concrete Decl classes.<br>
     #define ABSTRACT_DECL(DECL)<br>
    -#define DECL(CLASS, BASE) \<br>
    -  bool Traverse##CLASS##Decl(CLASS##<u></u>Decl *D);<br>
    +#define DECL(CLASS, BASE) bool Traverse##CLASS##Decl(CLASS##<u></u>Decl *D);<br>
     #include "clang/AST/DeclNodes.inc"<br>
       // The above header #undefs ABSTRACT_DECL and DECL upon exit.<br>
<br>
       // Define WalkUpFrom*() and empty Visit*() for all Decl classes.<br>
       bool WalkUpFromDecl(Decl *D) { return getDerived().VisitDecl(D); }<br>
       bool VisitDecl(Decl *D) { return true; }<br>
    -#define DECL(CLASS, BASE)       \<br>
    -  bool WalkUpFrom##CLASS##Decl(CLASS#<u></u>#Decl *D) {        \<br>
    -    TRY_TO(WalkUpFrom##BASE(D));        \<br>
    -    TRY_TO(Visit##CLASS##Decl(D));        \<br>
    -    return true;        \<br>
    -  }       \<br>
    +#define DECL(CLASS, BASE)                      \<br>
    +  bool WalkUpFrom##CLASS##Decl(CLASS#<u></u>#Decl *D) {                          \<br>
    +    TRY_TO(WalkUpFrom##BASE(D));                       \<br>
    +    TRY_TO(Visit##CLASS##Decl(D));                       \<br>
    +    return true;                       \<br>
    +  }                      \<br>
       bool Visit##CLASS##Decl(CLASS##Decl *D) { return true; }<br>
     #include "clang/AST/DeclNodes.inc"<br>
<br>
    @@ -417,7 +405,7 @@ private:<br>
       bool TraverseTemplateParameterListH<u></u>elper(TemplateParameterList<br>
    *TPL);<br>
       bool TraverseClassInstantiations(<u></u>ClassTemplateDecl *D);<br>
       bool TraverseVariableInstantiations<u></u>(VarTemplateDecl *D);<br>
    -  bool TraverseFunctionInstantiations<u></u>(FunctionTemplateDecl *D) ;<br>
    +  bool TraverseFunctionInstantiations<u></u>(FunctionTemplateDecl *D);<br>
       bool TraverseTemplateArgumentLocsHe<u></u>lper(const<br>
    TemplateArgumentLoc *TAL,<br>
                                               unsigned Count);<br>
       bool TraverseArrayTypeLocHelper(<u></u>ArrayTypeLoc TL);<br>
    @@ -429,27 +417,24 @@ private:<br>
       bool TraverseVarHelper(VarDecl *D);<br>
       bool TraverseOMPClause(OMPClause *C);<br>
       bool TraverseOMPExecutableDirective<u></u>(OMPExecutableDirective *S);<br>
    -#define OPENMP_CLAUSE(Name, Class)                \<br>
    -  bool Visit##Class(Class *C);<br>
    +#define OPENMP_CLAUSE(Name, Class) bool Visit##Class(Class *C);<br>
     #include "clang/Basic/OpenMPKinds.def"<br>
       /// \brief Process clauses with list of variables.<br>
    -  template <typename T><br>
    -  void VisitOMPClauseList(T *Node);<br>
    +  template <typename T> void VisitOMPClauseList(T *Node);<br>
<br>
       typedef SmallVector<Stmt *, 16> StmtsTy;<br>
       typedef SmallVector<StmtsTy *, 4> QueuesTy;<br>
    -<br>
    +<br>
       QueuesTy Queues;<br>
<br>
       class NewQueueRAII {<br>
         RecursiveASTVisitor &RAV;<br>
    +<br>
       public:<br>
         NewQueueRAII(StmtsTy &queue, RecursiveASTVisitor &RAV) :<br>
    RAV(RAV) {<br>
           RAV.Queues.push_back(&queue);<br>
         }<br>
    -    ~NewQueueRAII() {<br>
    -      RAV.Queues.pop_back();<br>
    -    }<br>
    +    ~NewQueueRAII() { RAV.Queues.pop_back(); }<br>
       };<br>
<br>
       StmtsTy &getCurrentQueue() {<br>
    @@ -460,20 +445,19 @@ private:<br>
     public:<br>
       class StmtQueueAction {<br>
         StmtsTy &CurrQueue;<br>
    +<br>
       public:<br>
         explicit StmtQueueAction(<u></u>RecursiveASTVisitor &RAV)<br>
    -      : CurrQueue(RAV.getCurrentQueue(<u></u>)) { }<br>
    +        : CurrQueue(RAV.getCurrentQueue(<u></u>)) {}<br>
<br>
    -    void queue(Stmt *S) {<br>
    -      CurrQueue.push_back(S);<br>
    -    }<br>
    +    void queue(Stmt *S) { CurrQueue.push_back(S); }<br>
       };<br>
     };<br>
<br>
    -#define DISPATCH(NAME, CLASS, VAR) \<br>
    -  return getDerived().Traverse##NAME(<u></u>static_cast<CLASS*>(VAR))<br>
    +#define DISPATCH(NAME, CLASS, VAR)                       \<br>
    +  return getDerived().Traverse##NAME(<u></u>static_cast<CLASS *>(VAR))<br>
<br>
    -template<typename Derived><br>
    +template <typename Derived><br>
     bool RecursiveASTVisitor<Derived>::<u></u>TraverseStmt(Stmt *S) {<br>
       if (!S)<br>
         return true;<br>
    @@ -489,84 +473,89 @@ bool RecursiveASTVisitor<Derived>::<u></u>Trave<br>
<br>
         StmtsToEnqueu.clear();<br>
<br>
    -#define DISPATCH_STMT(NAME, CLASS, VAR) \<br>
    -  TRY_TO(Traverse##NAME(static_<u></u>cast<CLASS*>(VAR))); break<br>
    +#define DISPATCH_STMT(NAME, CLASS, VAR)                      \<br>
    +  TRY_TO(Traverse##NAME(static_<u></u>cast<CLASS *>(VAR)));                              \<br>
    +  break<br>
<br>
         // If we have a binary expr, dispatch to the subcode of the<br>
    binop.  A smart<br>
         // optimizer (e.g. LLVM) will fold this comparison into the<br>
    switch stmt<br>
         // below.<br>
         if (BinaryOperator *BinOp = dyn_cast<BinaryOperator>(S)) {<br>
           switch (BinOp->getOpcode()) {<br>
    -#define OPERATOR(NAME) \<br>
    -      case BO_##NAME: DISPATCH_STMT(Bin##NAME, BinaryOperator, S);<br>
    -<br>
    -      BINOP_LIST()<br>
    +#define OPERATOR(NAME)                       \<br>
    +  case BO_##NAME:                      \<br>
    +    DISPATCH_STMT(Bin##NAME, BinaryOperator, S);<br>
    +<br>
    +        BINOP_LIST()<br>
     #undef OPERATOR<br>
     #undef BINOP_LIST<br>
    -<br>
    -#define OPERATOR(NAME)        \<br>
    -      case BO_##NAME##Assign:                          \<br>
    -        DISPATCH_STMT(Bin##NAME##<u></u>Assign, CompoundAssignOperator, S);<br>
    -<br>
    -      CAO_LIST()<br>
    +<br>
    +#define OPERATOR(NAME)                       \<br>
    +  case BO_##NAME##Assign:                      \<br>
    +    DISPATCH_STMT(Bin##NAME##<u></u>Assign, CompoundAssignOperator, S);<br>
    +<br>
    +        CAO_LIST()<br>
     #undef OPERATOR<br>
     #undef CAO_LIST<br>
           }<br>
         } else if (UnaryOperator *UnOp = dyn_cast<UnaryOperator>(S)) {<br>
           switch (UnOp->getOpcode()) {<br>
    -#define OPERATOR(NAME)                \<br>
    -      case UO_##NAME: DISPATCH_STMT(Unary##NAME, UnaryOperator, S);<br>
    -<br>
    -      UNARYOP_LIST()<br>
    +#define OPERATOR(NAME)                       \<br>
    +  case UO_##NAME:                      \<br>
    +    DISPATCH_STMT(Unary##NAME, UnaryOperator, S);<br>
    +<br>
    +        UNARYOP_LIST()<br>
     #undef OPERATOR<br>
     #undef UNARYOP_LIST<br>
           }<br>
         } else {<br>
    -<br>
    +<br>
           // Top switch stmt: dispatch to TraverseFooStmt for each<br>
    concrete FooStmt.<br>
           switch (S->getStmtClass()) {<br>
    -      case Stmt::NoStmtClass: break;<br>
    +      case Stmt::NoStmtClass:<br>
    +        break;<br>
     #define ABSTRACT_STMT(STMT)<br>
    -#define STMT(CLASS, PARENT) \<br>
    -      case Stmt::CLASS##Class: DISPATCH_STMT(CLASS, CLASS, S);<br>
    +#define STMT(CLASS, PARENT)                      \<br>
    +  case Stmt::CLASS##Class:                       \<br>
    +    DISPATCH_STMT(CLASS, CLASS, S);<br>
     #include "clang/AST/StmtNodes.inc"<br>
           }<br>
         }<br>
<br>
    -    for (SmallVectorImpl<Stmt *>::reverse_iterator<br>
    -           RI = StmtsToEnqueu.rbegin(),<br>
    -           RE = StmtsToEnqueu.rend(); RI != RE; ++RI)<br>
    +    for (SmallVectorImpl<Stmt *>::reverse_iterator RI =<br>
    StmtsToEnqueu.rbegin(),<br>
    +                                                   RE =<br>
    StmtsToEnqueu.rend();<br>
    +         RI != RE; ++RI)<br>
           Queue.push_back(*RI);<br>
       }<br>
<br>
       return true;<br>
     }<br>
<br>
    -template<typename Derived><br>
    +template <typename Derived><br>
     bool RecursiveASTVisitor<Derived>::<u></u>TraverseType(QualType T) {<br>
       if (T.isNull())<br>
         return true;<br>
<br>
       switch (T->getTypeClass()) {<br>
     #define ABSTRACT_TYPE(CLASS, BASE)<br>
    -#define TYPE(CLASS, BASE) \<br>
    -  case Type::CLASS: DISPATCH(CLASS##Type, CLASS##Type, \<br>
    - const_cast<Type*>(T.<u></u>getTypePtr()));<br>
    +#define TYPE(CLASS, BASE)                      \<br>
    +  case Type::CLASS:                      \<br>
    +    DISPATCH(CLASS##Type, CLASS##Type, const_cast<Type<br>
    *>(T.getTypePtr()));<br>
     #include "clang/AST/TypeNodes.def"<br>
       }<br>
<br>
       return true;<br>
     }<br>
<br>
    -template<typename Derived><br>
    +template <typename Derived><br>
     bool RecursiveASTVisitor<Derived>::<u></u>TraverseTypeLoc(TypeLoc TL) {<br>
       if (TL.isNull())<br>
         return true;<br>
<br>
       switch (TL.getTypeLocClass()) {<br>
     #define ABSTRACT_TYPELOC(CLASS, BASE)<br>
    -#define TYPELOC(CLASS, BASE) \<br>
    -  case TypeLoc::CLASS: \<br>
    +#define TYPELOC(CLASS, BASE)                       \<br>
    +  case TypeLoc::CLASS:                       \<br>
         return<br>
    getDerived().Traverse##CLASS##<u></u>TypeLoc(TL.castAs<CLASS##<u></u>TypeLoc>());<br>
     #include "clang/AST/TypeLocNodes.def"<br>
       }<br>
    @@ -574,13 +563,12 @@ bool RecursiveASTVisitor<Derived>::<u></u>Trave<br>
       return true;<br>
     }<br>
<br>
    -<br>
     // Define the Traverse*Attr(Attr* A) methods<br>
     #define VISITORCLASS RecursiveASTVisitor<br>
     #include "clang/AST/AttrVisitor.inc"<br>
     #undef VISITORCLASS<br>
<br>
    -template<typename Derived><br>
    +template <typename Derived><br>
     bool RecursiveASTVisitor<Derived>::<u></u>TraverseDecl(Decl *D) {<br>
       if (!D)<br>
         return true;<br>
    @@ -593,10 +581,10 @@ bool RecursiveASTVisitor<Derived>::<u></u>Trave<br>
<br>
       switch (D->getKind()) {<br>
     #define ABSTRACT_DECL(DECL)<br>
    -#define DECL(CLASS, BASE) \<br>
    -  case Decl::CLASS: \<br>
    -    if<br>
    (!getDerived().Traverse##<u></u>CLASS##Decl(static_cast<CLASS#<u></u>#Decl*>(D))) \<br>
    -      return false; \<br>
    +#define DECL(CLASS, BASE)                      \<br>
    +  case Decl::CLASS:                      \<br>
    +    if<br>
    (!getDerived().Traverse##<u></u>CLASS##Decl(static_cast<CLASS#<u></u>#Decl<br>
    *>(D)))    \<br>
    +      return false;                      \<br>
         break;<br>
     #include "clang/AST/DeclNodes.inc"<br>
       }<br>
    @@ -611,9 +599,9 @@ bool RecursiveASTVisitor<Derived>::<u></u>Trave<br>
<br>
     #undef DISPATCH<br>
<br>
    -template<typename Derived><br>
    +template <typename Derived><br>
     bool RecursiveASTVisitor<Derived>::<u></u>TraverseNestedNameSpecifier(<br>
    -  NestedNameSpecifier *NNS) {<br>
    +    NestedNameSpecifier *NNS) {<br>
       if (!NNS)<br>
         return true;<br>
<br>
    @@ -635,14 +623,14 @@ bool RecursiveASTVisitor<Derived>::<u></u>Trave<br>
       return true;<br>
     }<br>
<br>
    -template<typename Derived><br>
    +template <typename Derived><br>
     bool RecursiveASTVisitor<Derived>::<u></u>TraverseNestedNameSpecifierLoc<u></u>(<br>
    -  NestedNameSpecifierLoc NNS) {<br>
    +    NestedNameSpecifierLoc NNS) {<br>
       if (!NNS)<br>
         return true;<br>
<br>
    -   if (NestedNameSpecifierLoc Prefix = NNS.getPrefix())<br>
    -     TRY_TO(<u></u>TraverseNestedNameSpecifierLoc<u></u>(Prefix));<br>
    +  if (NestedNameSpecifierLoc Prefix = NNS.getPrefix())<br>
    +    TRY_TO(<u></u>TraverseNestedNameSpecifierLoc<u></u>(Prefix));<br>
<br>
       switch (NNS.getNestedNameSpecifier()-<u></u>>getKind()) {<br>
       case NestedNameSpecifier::<u></u>Identifier:<br>
    @@ -660,9 +648,9 @@ bool RecursiveASTVisitor<Derived>::<u></u>Trave<br>
       return true;<br>
     }<br>
<br>
    -template<typename Derived><br>
    +template <typename Derived><br>
     bool RecursiveASTVisitor<Derived>::<u></u>TraverseDeclarationNameInfo(<br>
    - DeclarationNameInfo NameInfo) {<br>
    +    DeclarationNameInfo NameInfo) {<br>
       switch (NameInfo.getName().<u></u>getNameKind()) {<br>
       case DeclarationName::<u></u>CXXConstructorName:<br>
       case DeclarationName::<u></u>CXXDestructorName:<br>
    @@ -685,7 +673,7 @@ bool RecursiveASTVisitor<Derived>::<u></u>Trave<br>
       return true;<br>
     }<br>
<br>
    -template<typename Derived><br>
    +template <typename Derived><br>
     bool<br>
    RecursiveASTVisitor<Derived>::<u></u>TraverseTemplateName(<u></u>TemplateName<br>
    Template) {<br>
       if (DependentTemplateName *DTN =<br>
    Template.<u></u>getAsDependentTemplateName())<br>
     TRY_TO(<u></u>TraverseNestedNameSpecifier(<u></u>DTN->getQualifier()));<br>
    @@ -695,9 +683,9 @@ bool RecursiveASTVisitor<Derived>::<u></u>Trave<br>
       return true;<br>
     }<br>
<br>
    -template<typename Derived><br>
    +template <typename Derived><br>
     bool RecursiveASTVisitor<Derived>::<u></u>TraverseTemplateArgument(<br>
    -                                                const<br>
    TemplateArgument &Arg) {<br>
    +    const TemplateArgument &Arg) {<br>
       switch (Arg.getKind()) {<br>
       case TemplateArgument::Null:<br>
       case TemplateArgument::Declaration:<br>
    @@ -711,7 +699,7 @@ bool RecursiveASTVisitor<Derived>::<u></u>Trave<br>
       case TemplateArgument::Template:<br>
       case TemplateArgument::<u></u>TemplateExpansion:<br>
         return getDerived().<u></u>TraverseTemplateName(<br>
    -  Arg.<u></u>getAsTemplateOrTemplatePattern<u></u>());<br>
    +        Arg.<u></u>getAsTemplateOrTemplatePattern<u></u>());<br>
<br>
       case TemplateArgument::Expression:<br>
         return getDerived().TraverseStmt(Arg.<u></u>getAsExpr());<br>
    @@ -726,9 +714,9 @@ bool RecursiveASTVisitor<Derived>::<u></u>Trave<br>
<br>
     // FIXME: no template name location?<br>
     // FIXME: no source locations for a template argument pack?<br>
    -template<typename Derived><br>
    +template <typename Derived><br>
     bool RecursiveASTVisitor<Derived>::<u></u>TraverseTemplateArgumentLoc(<br>
    -                                           const<br>
    TemplateArgumentLoc &ArgLoc) {<br>
    +    const TemplateArgumentLoc &ArgLoc) {<br>
       const TemplateArgument &Arg = ArgLoc.getArgument();<br>
<br>
       switch (Arg.getKind()) {<br>
    @@ -750,9 +738,9 @@ bool RecursiveASTVisitor<Derived>::<u></u>Trave<br>
       case TemplateArgument::<u></u>TemplateExpansion:<br>
         if (ArgLoc.<u></u>getTemplateQualifierLoc())<br>
           TRY_TO(getDerived().<u></u>TraverseNestedNameSpecifierLoc<u></u>(<br>
    -  ArgLoc.<u></u>getTemplateQualifierLoc()));<br>
    +          ArgLoc.<u></u>getTemplateQualifierLoc()));<br>
         return getDerived().<u></u>TraverseTemplateName(<br>
    - Arg.<u></u>getAsTemplateOrTemplatePattern<u></u>());<br>
    +        Arg.<u></u>getAsTemplateOrTemplatePattern<u></u>());<br>
<br>
       case TemplateArgument::Expression:<br>
         return getDerived().TraverseStmt(<u></u>ArgLoc.getSourceExpression());<br>
    @@ -765,10 +753,9 @@ bool RecursiveASTVisitor<Derived>::<u></u>Trave<br>
       return true;<br>
     }<br>
<br>
    -template<typename Derived><br>
    +template <typename Derived><br>
     bool RecursiveASTVisitor<Derived>::<u></u>TraverseTemplateArguments(<br>
    -                                                  const<br>
    TemplateArgument *Args,<br>
    -    unsigned NumArgs) {<br>
    +    const TemplateArgument *Args, unsigned NumArgs) {<br>
       for (unsigned I = 0; I != NumArgs; ++I) {<br>
         TRY_TO(<u></u>TraverseTemplateArgument(Args[<u></u>I]));<br>
       }<br>
    @@ -776,9 +763,9 @@ bool RecursiveASTVisitor<Derived>::<u></u>Trave<br>
       return true;<br>
     }<br>
<br>
    -template<typename Derived><br>
    +template <typename Derived><br>
     bool RecursiveASTVisitor<Derived>::<u></u>TraverseConstructorInitializer<u></u>(<br>
    - CXXCtorInitializer *Init) {<br>
    +    CXXCtorInitializer *Init) {<br>
       if (TypeSourceInfo *TInfo = Init->getTypeSourceInfo())<br>
         TRY_TO(TraverseTypeLoc(TInfo-><u></u>getTypeLoc()));<br>
<br>
    @@ -795,81 +782,64 @@ bool RecursiveASTVisitor<Derived>::<u></u>Trave<br>
     // ----------------- Type traversal -----------------<br>
<br>
     // This macro makes available a variable T, the passed-in type.<br>
    -#define DEF_TRAVERSE_TYPE(TYPE, CODE) \<br>
    -  template<typename Derived>                     \<br>
    -  bool RecursiveASTVisitor<Derived>::<u></u>Traverse##TYPE (TYPE *T) {           \<br>
    -    TRY_TO(WalkUpFrom##TYPE (T));              \<br>
    -    { CODE; }              \<br>
    -    return true;               \<br>
    -  }<br>
    -<br>
    -DEF_TRAVERSE_TYPE(<u></u>BuiltinType, { })<br>
    -<br>
    -DEF_TRAVERSE_TYPE(<u></u>ComplexType, {<br>
    -    TRY_TO(TraverseType(T-><u></u>getElementType()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_TYPE(<u></u>PointerType, {<br>
    -    TRY_TO(TraverseType(T-><u></u>getPointeeType()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_TYPE(<u></u>BlockPointerType, {<br>
    -    TRY_TO(TraverseType(T-><u></u>getPointeeType()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_TYPE(<u></u>LValueReferenceType, {<br>
    -    TRY_TO(TraverseType(T-><u></u>getPointeeType()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_TYPE(<u></u>RValueReferenceType, {<br>
    -    TRY_TO(TraverseType(T-><u></u>getPointeeType()));<br>
    -  })<br>
    +#define DEF_TRAVERSE_TYPE(TYPE, CODE)                      \<br>
    +  template <typename Derived>                            \<br>
    +  bool RecursiveASTVisitor<Derived>::<u></u>Traverse##TYPE(TYPE *T) {                    \<br>
    +    TRY_TO(WalkUpFrom##TYPE(T));                       \<br>
    +    { CODE; }                      \<br>
    +    return true;                       \<br>
    +  }<br>
    +<br>
    +DEF_TRAVERSE_TYPE(<u></u>BuiltinType, {})<br>
    +<br>
    +DEF_TRAVERSE_TYPE(<u></u>ComplexType, {<br>
    TRY_TO(TraverseType(T-><u></u>getElementType())); })<br>
    +<br>
    +DEF_TRAVERSE_TYPE(<u></u>PointerType, {<br>
    TRY_TO(TraverseType(T-><u></u>getPointeeType())); })<br>
    +<br>
    +DEF_TRAVERSE_TYPE(<u></u>BlockPointerType,<br>
    +                  { TRY_TO(TraverseType(T-><u></u>getPointeeType())); })<br>
    +<br>
    +DEF_TRAVERSE_TYPE(<u></u>LValueReferenceType,<br>
    +                  { TRY_TO(TraverseType(T-><u></u>getPointeeType())); })<br>
    +<br>
    +DEF_TRAVERSE_TYPE(<u></u>RValueReferenceType,<br>
    +                  { TRY_TO(TraverseType(T-><u></u>getPointeeType())); })<br>
<br>
     DEF_TRAVERSE_TYPE(<u></u>MemberPointerType, {<br>
    -    TRY_TO(TraverseType(QualType(<u></u>T->getClass(), 0)));<br>
    -    TRY_TO(TraverseType(T-><u></u>getPointeeType()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_TYPE(<u></u>DecayedType, {<br>
    -    TRY_TO(TraverseType(T-><u></u>getOriginalType()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_TYPE(<u></u>AdjustedType, {<br>
    -    TRY_TO(TraverseType(T-><u></u>getOriginalType()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_TYPE(<u></u>ConstantArrayType, {<br>
    -    TRY_TO(TraverseType(T-><u></u>getElementType()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_TYPE(<u></u>IncompleteArrayType, {<br>
    -    TRY_TO(TraverseType(T-><u></u>getElementType()));<br>
    -  })<br>
    +  TRY_TO(TraverseType(QualType(<u></u>T->getClass(), 0)));<br>
    +  TRY_TO(TraverseType(T-><u></u>getPointeeType()));<br>
    +})<br>
    +<br>
    +DEF_TRAVERSE_TYPE(<u></u>DecayedType, {<br>
    TRY_TO(TraverseType(T-><u></u>getOriginalType())); })<br>
    +<br>
    +DEF_TRAVERSE_TYPE(<u></u>AdjustedType, {<br>
    TRY_TO(TraverseType(T-><u></u>getOriginalType())); })<br>
    +<br>
    +DEF_TRAVERSE_TYPE(<u></u>ConstantArrayType,<br>
    +                  { TRY_TO(TraverseType(T-><u></u>getElementType())); })<br>
    +<br>
    +DEF_TRAVERSE_TYPE(<u></u>IncompleteArrayType,<br>
    +                  { TRY_TO(TraverseType(T-><u></u>getElementType())); })<br>
<br>
     DEF_TRAVERSE_TYPE(<u></u>VariableArrayType, {<br>
    -    TRY_TO(TraverseType(T-><u></u>getElementType()));<br>
    -    TRY_TO(TraverseStmt(T-><u></u>getSizeExpr()));<br>
    -  })<br>
    +  TRY_TO(TraverseType(T-><u></u>getElementType()));<br>
    +  TRY_TO(TraverseStmt(T-><u></u>getSizeExpr()));<br>
    +})<br>
<br>
     DEF_TRAVERSE_TYPE(<u></u>DependentSizedArrayType, {<br>
    -    TRY_TO(TraverseType(T-><u></u>getElementType()));<br>
    -    if (T->getSizeExpr())<br>
    -      TRY_TO(TraverseStmt(T-><u></u>getSizeExpr()));<br>
    -  })<br>
    +  TRY_TO(TraverseType(T-><u></u>getElementType()));<br>
    +  if (T->getSizeExpr())<br>
    +    TRY_TO(TraverseStmt(T-><u></u>getSizeExpr()));<br>
    +})<br>
<br>
     DEF_TRAVERSE_TYPE(<u></u>DependentSizedExtVectorType, {<br>
    -    if (T->getSizeExpr())<br>
    -      TRY_TO(TraverseStmt(T-><u></u>getSizeExpr()));<br>
    -    TRY_TO(TraverseType(T-><u></u>getElementType()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_TYPE(VectorType, {<br>
    -    TRY_TO(TraverseType(T-><u></u>getElementType()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_TYPE(<u></u>ExtVectorType, {<br>
    -    TRY_TO(TraverseType(T-><u></u>getElementType()));<br>
    -  })<br>
    +  if (T->getSizeExpr())<br>
    +    TRY_TO(TraverseStmt(T-><u></u>getSizeExpr()));<br>
    +  TRY_TO(TraverseType(T-><u></u>getElementType()));<br>
    +})<br>
    +<br>
    +DEF_TRAVERSE_TYPE(VectorType, {<br>
    TRY_TO(TraverseType(T-><u></u>getElementType())); })<br>
    +<br>
    +DEF_TRAVERSE_TYPE(<u></u>ExtVectorType, {<br>
    TRY_TO(TraverseType(T-><u></u>getElementType())); })<br>
<br>
     DEF_TRAVERSE_TYPE(<u></u>FunctionNoProtoType,<br>
                       { TRY_TO(TraverseType(T-><u></u>getReturnType())); })<br>
    @@ -886,87 +856,72 @@ DEF_TRAVERSE_TYPE(<u></u>FunctionProtoType, {<br>
       }<br>
     })<br>
<br>
    -DEF_TRAVERSE_TYPE(<u></u>UnresolvedUsingType, { })<br>
    -DEF_TRAVERSE_TYPE(<u></u>TypedefType, { })<br>
    +DEF_TRAVERSE_TYPE(<u></u>UnresolvedUsingType, {})<br>
    +DEF_TRAVERSE_TYPE(<u></u>TypedefType, {})<br>
    +<br>
    +DEF_TRAVERSE_TYPE(<u></u>TypeOfExprType,<br>
    +                  { TRY_TO(TraverseStmt(T-><u></u>getUnderlyingExpr())); })<br>
<br>
    -DEF_TRAVERSE_TYPE(<u></u>TypeOfExprType, {<br>
    -    TRY_TO(TraverseStmt(T-><u></u>getUnderlyingExpr()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_TYPE(TypeOfType, {<br>
    -    TRY_TO(TraverseType(T-><u></u>getUnderlyingType()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_TYPE(<u></u>DecltypeType, {<br>
    -    TRY_TO(TraverseStmt(T-><u></u>getUnderlyingExpr()));<br>
    -  })<br>
    +DEF_TRAVERSE_TYPE(TypeOfType, {<br>
    TRY_TO(TraverseType(T-><u></u>getUnderlyingType())); })<br>
    +<br>
    +DEF_TRAVERSE_TYPE(<u></u>DecltypeType,<br>
    +                  { TRY_TO(TraverseStmt(T-><u></u>getUnderlyingExpr())); })<br>
<br>
     DEF_TRAVERSE_TYPE(<u></u>UnaryTransformType, {<br>
    -    TRY_TO(TraverseType(T-><u></u>getBaseType()));<br>
    -    TRY_TO(TraverseType(T-><u></u>getUnderlyingType()));<br>
    -    })<br>
    +  TRY_TO(TraverseType(T-><u></u>getBaseType()));<br>
    +  TRY_TO(TraverseType(T-><u></u>getUnderlyingType()));<br>
    +})<br>
    +<br>
    +DEF_TRAVERSE_TYPE(AutoType, {<br>
    TRY_TO(TraverseType(T-><u></u>getDeducedType())); })<br>
<br>
    -DEF_TRAVERSE_TYPE(AutoType, {<br>
    -    TRY_TO(TraverseType(T-><u></u>getDeducedType()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_TYPE(RecordType, { })<br>
    -DEF_TRAVERSE_TYPE(EnumType, { })<br>
    -DEF_TRAVERSE_TYPE(<u></u>TemplateTypeParmType, { })<br>
    -DEF_TRAVERSE_TYPE(<u></u>SubstTemplateTypeParmType, { })<br>
    -DEF_TRAVERSE_TYPE(<u></u>SubstTemplateTypeParmPackType, { })<br>
    +DEF_TRAVERSE_TYPE(RecordType, {})<br>
    +DEF_TRAVERSE_TYPE(EnumType, {})<br>
    +DEF_TRAVERSE_TYPE(<u></u>TemplateTypeParmType, {})<br>
    +DEF_TRAVERSE_TYPE(<u></u>SubstTemplateTypeParmType, {})<br>
    +DEF_TRAVERSE_TYPE(<u></u>SubstTemplateTypeParmPackType, {})<br>
<br>
     DEF_TRAVERSE_TYPE(<u></u>TemplateSpecializationType, {<br>
    -  TRY_TO(TraverseTemplateName(T-<u></u>>getTemplateName()));<br>
    -    TRY_TO(<u></u>TraverseTemplateArguments(T-><u></u>getArgs(), T->getNumArgs()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_TYPE(<u></u>InjectedClassNameType, { })<br>
    -<br>
    -DEF_TRAVERSE_TYPE(<u></u>AttributedType, {<br>
    -    TRY_TO(TraverseType(T-><u></u>getModifiedType()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_TYPE(ParenType, {<br>
    -    TRY_TO(TraverseType(T-><u></u>getInnerType()));<br>
    -  })<br>
    +  TRY_TO(TraverseTemplateName(T-<u></u>>getTemplateName()));<br>
    +  TRY_TO(<u></u>TraverseTemplateArguments(T-><u></u>getArgs(), T->getNumArgs()));<br>
    +})<br>
<br>
    -DEF_TRAVERSE_TYPE(<u></u>ElaboratedType, {<br>
    -    if (T->getQualifier()) {<br>
    -  TRY_TO(<u></u>TraverseNestedNameSpecifier(T-<u></u>>getQualifier()));<br>
    -    }<br>
    -    TRY_TO(TraverseType(T-><u></u>getNamedType()));<br>
    -  })<br>
    +DEF_TRAVERSE_TYPE(<u></u>InjectedClassNameType, {})<br>
<br>
    -DEF_TRAVERSE_TYPE(<u></u>DependentNameType, {<br>
    +DEF_TRAVERSE_TYPE(<u></u>AttributedType,<br>
    +                  { TRY_TO(TraverseType(T-><u></u>getModifiedType())); })<br>
    +<br>
    +DEF_TRAVERSE_TYPE(ParenType, {<br>
    TRY_TO(TraverseType(T-><u></u>getInnerType())); })<br>
    +<br>
    +DEF_TRAVERSE_TYPE(<u></u>ElaboratedType, {<br>
    +  if (T->getQualifier()) {<br>
     TRY_TO(<u></u>TraverseNestedNameSpecifier(T-<u></u>>getQualifier()));<br>
    -  })<br>
    +  }<br>
    +  TRY_TO(TraverseType(T-><u></u>getNamedType()));<br>
    +})<br>
    +<br>
    +DEF_TRAVERSE_TYPE(<u></u>DependentNameType,<br>
    +                  {<br>
    TRY_TO(<u></u>TraverseNestedNameSpecifier(T-<u></u>>getQualifier())); })<br>
<br>
     DEF_TRAVERSE_TYPE(<u></u>DependentTemplateSpecializatio<u></u>nType, {<br>
    -  TRY_TO(<u></u>TraverseNestedNameSpecifier(T-<u></u>>getQualifier()));<br>
    -    TRY_TO(<u></u>TraverseTemplateArguments(T-><u></u>getArgs(), T->getNumArgs()));<br>
    -  })<br>
    +  TRY_TO(<u></u>TraverseNestedNameSpecifier(T-<u></u>>getQualifier()));<br>
    +  TRY_TO(<u></u>TraverseTemplateArguments(T-><u></u>getArgs(), T->getNumArgs()));<br>
    +})<br>
<br>
    -DEF_TRAVERSE_TYPE(<u></u>PackExpansionType, {<br>
    -    TRY_TO(TraverseType(T-><u></u>getPattern()));<br>
    -  })<br>
    +DEF_TRAVERSE_TYPE(<u></u>PackExpansionType, {<br>
    TRY_TO(TraverseType(T-><u></u>getPattern())); })<br>
<br>
    -DEF_TRAVERSE_TYPE(<u></u>ObjCInterfaceType, { })<br>
    +DEF_TRAVERSE_TYPE(<u></u>ObjCInterfaceType, {})<br>
<br>
     DEF_TRAVERSE_TYPE(<u></u>ObjCObjectType, {<br>
    -    // We have to watch out here because an ObjCInterfaceType's base<br>
    -    // type is itself.<br>
    -    if (T->getBaseType().getTypePtr() != T)<br>
    -      TRY_TO(TraverseType(T-><u></u>getBaseType()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_TYPE(<u></u>ObjCObjectPointerType, {<br>
    -    TRY_TO(TraverseType(T-><u></u>getPointeeType()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_TYPE(AtomicType, {<br>
    -    TRY_TO(TraverseType(T-><u></u>getValueType()));<br>
    -  })<br>
    +  // We have to watch out here because an ObjCInterfaceType's base<br>
    +  // type is itself.<br>
    +  if (T->getBaseType().getTypePtr() != T)<br>
    +    TRY_TO(TraverseType(T-><u></u>getBaseType()));<br>
    +})<br>
    +<br>
    +DEF_TRAVERSE_TYPE(<u></u>ObjCObjectPointerType,<br>
    +                  { TRY_TO(TraverseType(T-><u></u>getPointeeType())); })<br>
    +<br>
    +DEF_TRAVERSE_TYPE(AtomicType, {<br>
    TRY_TO(TraverseType(T-><u></u>getValueType())); })<br>
<br>
     #undef DEF_TRAVERSE_TYPE<br>
<br>
    @@ -977,19 +932,19 @@ DEF_TRAVERSE_TYPE(AtomicType, {<br>
     // in addition to WalkUpFrom* for the TypeLoc itself, such that<br>
    existing<br>
     // clients that override the WalkUpFrom*Type() and/or<br>
    Visit*Type() methods<br>
     // continue to work.<br>
    -#define DEF_TRAVERSE_TYPELOC(TYPE, CODE)                \<br>
    -  template<typename Derived>                      \<br>
    -  bool<br>
    RecursiveASTVisitor<Derived>::<u></u>Traverse##TYPE##Loc(TYPE##Loc TL) { \<br>
    -    if (getDerived().<u></u>shouldWalkTypesOfTypeLocs())               \<br>
    -  TRY_TO(WalkUpFrom##TYPE(const_<u></u>cast<TYPE*>(TL.getTypePtr())))<u></u>;     \<br>
    -    TRY_TO(WalkUpFrom##TYPE##Loc(<u></u>TL));                \<br>
    -    { CODE; }               \<br>
    -    return true;                \<br>
    +#define DEF_TRAVERSE_TYPELOC(TYPE, CODE)                       \<br>
    +  template <typename Derived>                            \<br>
    +  bool<br>
    RecursiveASTVisitor<Derived>::<u></u>Traverse##TYPE##Loc(TYPE##Loc TL) {<br>
          \<br>
    +    if (getDerived().<u></u>shouldWalkTypesOfTypeLocs())                         \<br>
    +      TRY_TO(WalkUpFrom##TYPE(const_<u></u>cast<TYPE<br>
    *>(TL.getTypePtr())));           \<br>
    +    TRY_TO(WalkUpFrom##TYPE##Loc(<u></u>TL));                       \<br>
    +    { CODE; }                      \<br>
    +    return true;                       \<br>
       }<br>
<br>
    -template<typename Derived><br>
    -bool RecursiveASTVisitor<Derived>::<u></u>TraverseQualifiedTypeLoc(<br>
    -    QualifiedTypeLoc TL) {<br>
    +template <typename Derived><br>
    +bool<br>
    +RecursiveASTVisitor<Derived>:<u></u>:TraverseQualifiedTypeLoc(<u></u>QualifiedTypeLoc<br>
    TL) {<br>
       // Move this over to the 'main' typeloc tree.  Note that this is a<br>
       // move -- we pretend that we were really looking at the<br>
    unqualified<br>
       // typeloc all along -- rather than a recursion, so we don't follow<br>
    @@ -1008,46 +963,40 @@ bool RecursiveASTVisitor<Derived>::<u></u>Trave<br>
       return TraverseTypeLoc(TL.<u></u>getUnqualifiedLoc());<br>
     }<br>
<br>
    -DEF_TRAVERSE_TYPELOC(<u></u>BuiltinType, { })<br>
    +DEF_TRAVERSE_TYPELOC(<u></u>BuiltinType, {})<br>
<br>
     // FIXME: ComplexTypeLoc is unfinished<br>
     DEF_TRAVERSE_TYPELOC(<u></u>ComplexType, {<br>
    -  TRY_TO(TraverseType(TL.<u></u>getTypePtr()->getElementType()<u></u>));<br>
    -  })<br>
    +  TRY_TO(TraverseType(TL.<u></u>getTypePtr()->getElementType()<u></u>));<br>
    +})<br>
<br>
    -DEF_TRAVERSE_TYPELOC(<u></u>PointerType, {<br>
    -    TRY_TO(TraverseTypeLoc(TL.<u></u>getPointeeLoc()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_TYPELOC(<u></u>BlockPointerType, {<br>
    -    TRY_TO(TraverseTypeLoc(TL.<u></u>getPointeeLoc()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_TYPELOC(<u></u>LValueReferenceType, {<br>
    -    TRY_TO(TraverseTypeLoc(TL.<u></u>getPointeeLoc()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_TYPELOC(<u></u>RValueReferenceType, {<br>
    -    TRY_TO(TraverseTypeLoc(TL.<u></u>getPointeeLoc()));<br>
    -  })<br>
    +DEF_TRAVERSE_TYPELOC(<u></u>PointerType,<br>
    +                     {<br>
    TRY_TO(TraverseTypeLoc(TL.<u></u>getPointeeLoc())); })<br>
    +<br>
    +DEF_TRAVERSE_TYPELOC(<u></u>BlockPointerType,<br>
    +                     {<br>
    TRY_TO(TraverseTypeLoc(TL.<u></u>getPointeeLoc())); })<br>
    +<br>
    +DEF_TRAVERSE_TYPELOC(<u></u>LValueReferenceType,<br>
    +                     {<br>
    TRY_TO(TraverseTypeLoc(TL.<u></u>getPointeeLoc())); })<br>
    +<br>
    +DEF_TRAVERSE_TYPELOC(<u></u>RValueReferenceType,<br>
    +                     {<br>
    TRY_TO(TraverseTypeLoc(TL.<u></u>getPointeeLoc())); })<br>
<br>
     // FIXME: location of base class?<br>
     // We traverse this in the type case as well, but how is it not<br>
    reached through<br>
     // the pointee type?<br>
     DEF_TRAVERSE_TYPELOC(<u></u>MemberPointerType, {<br>
    -  TRY_TO(TraverseType(QualType(<u></u>TL.getTypePtr()->getClass(), 0)));<br>
    -    TRY_TO(TraverseTypeLoc(TL.<u></u>getPointeeLoc()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_TYPELOC(<u></u>DecayedType, {<br>
    -    TRY_TO(TraverseTypeLoc(TL.<u></u>getOriginalLoc()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_TYPELOC(<u></u>AdjustedType, {<br>
    -    TRY_TO(TraverseTypeLoc(TL.<u></u>getOriginalLoc()));<br>
    -  })<br>
    +  TRY_TO(TraverseType(QualType(<u></u>TL.getTypePtr()->getClass(), 0)));<br>
    +  TRY_TO(TraverseTypeLoc(TL.<u></u>getPointeeLoc()));<br>
    +})<br>
    +<br>
    +DEF_TRAVERSE_TYPELOC(<u></u>DecayedType,<br>
    +                     {<br>
    TRY_TO(TraverseTypeLoc(TL.<u></u>getOriginalLoc())); })<br>
<br>
    -template<typename Derived><br>
    +DEF_TRAVERSE_TYPELOC(<u></u>AdjustedType,<br>
    +                     {<br>
    TRY_TO(TraverseTypeLoc(TL.<u></u>getOriginalLoc())); })<br>
    +<br>
    +template <typename Derived><br>
     bool<br>
    RecursiveASTVisitor<Derived>::<u></u>TraverseArrayTypeLocHelper(<u></u>ArrayTypeLoc<br>
    TL) {<br>
       // This isn't available for ArrayType, but is for the ArrayTypeLoc.<br>
       TRY_TO(TraverseStmt(TL.<u></u>getSizeExpr()));<br>
    @@ -1055,156 +1004,147 @@ bool RecursiveASTVisitor<Derived>::<u></u>Trave<br>
     }<br>
<br>
     DEF_TRAVERSE_TYPELOC(<u></u>ConstantArrayType, {<br>
    -    TRY_TO(TraverseTypeLoc(TL.<u></u>getElementLoc()));<br>
    -    return TraverseArrayTypeLocHelper(TL)<u></u>;<br>
    -  })<br>
    +  TRY_TO(TraverseTypeLoc(TL.<u></u>getElementLoc()));<br>
    +  return TraverseArrayTypeLocHelper(TL)<u></u>;<br>
    +})<br>
<br>
     DEF_TRAVERSE_TYPELOC(<u></u>IncompleteArrayType, {<br>
    -    TRY_TO(TraverseTypeLoc(TL.<u></u>getElementLoc()));<br>
    -    return TraverseArrayTypeLocHelper(TL)<u></u>;<br>
    -  })<br>
    +  TRY_TO(TraverseTypeLoc(TL.<u></u>getElementLoc()));<br>
    +  return TraverseArrayTypeLocHelper(TL)<u></u>;<br>
    +})<br>
<br>
     DEF_TRAVERSE_TYPELOC(<u></u>VariableArrayType, {<br>
    -    TRY_TO(TraverseTypeLoc(TL.<u></u>getElementLoc()));<br>
    -    return TraverseArrayTypeLocHelper(TL)<u></u>;<br>
    -  })<br>
    +  TRY_TO(TraverseTypeLoc(TL.<u></u>getElementLoc()));<br>
    +  return TraverseArrayTypeLocHelper(TL)<u></u>;<br>
    +})<br>
<br>
     DEF_TRAVERSE_TYPELOC(<u></u>DependentSizedArrayType, {<br>
    -    TRY_TO(TraverseTypeLoc(TL.<u></u>getElementLoc()));<br>
    -    return TraverseArrayTypeLocHelper(TL)<u></u>;<br>
    -  })<br>
    +  TRY_TO(TraverseTypeLoc(TL.<u></u>getElementLoc()));<br>
    +  return TraverseArrayTypeLocHelper(TL)<u></u>;<br>
    +})<br>
<br>
     // FIXME: order? why not size expr first?<br>
     // FIXME: base VectorTypeLoc is unfinished<br>
     DEF_TRAVERSE_TYPELOC(<u></u>DependentSizedExtVectorType, {<br>
    -    if (TL.getTypePtr()->getSizeExpr(<u></u>))<br>
    -  TRY_TO(TraverseStmt(TL.<u></u>getTypePtr()->getSizeExpr()));<br>
    -  TRY_TO(TraverseType(TL.<u></u>getTypePtr()->getElementType()<u></u>));<br>
    -  })<br>
    +  if (TL.getTypePtr()->getSizeExpr(<u></u>))<br>
    +  TRY_TO(TraverseStmt(TL.<u></u>getTypePtr()->getSizeExpr()));<br>
    +  TRY_TO(TraverseType(TL.<u></u>getTypePtr()->getElementType()<u></u>));<br>
    +})<br>
<br>
     // FIXME: VectorTypeLoc is unfinished<br>
     DEF_TRAVERSE_TYPELOC(<u></u>VectorType, {<br>
    -  TRY_TO(TraverseType(TL.<u></u>getTypePtr()->getElementType()<u></u>));<br>
    -  })<br>
    +  TRY_TO(TraverseType(TL.<u></u>getTypePtr()->getElementType()<u></u>));<br>
    +})<br>
<br>
     // FIXME: size and attributes<br>
     // FIXME: base VectorTypeLoc is unfinished<br>
     DEF_TRAVERSE_TYPELOC(<u></u>ExtVectorType, {<br>
    -  TRY_TO(TraverseType(TL.<u></u>getTypePtr()->getElementType()<u></u>));<br>
    -  })<br>
    +  TRY_TO(TraverseType(TL.<u></u>getTypePtr()->getElementType()<u></u>));<br>
    +})<br>
<br>
    -DEF_TRAVERSE_TYPELOC(<u></u>FunctionNoProtoType, {<br>
    -    TRY_TO(TraverseTypeLoc(TL.<u></u>getReturnLoc()));<br>
    -  })<br>
    +DEF_TRAVERSE_TYPELOC(<u></u>FunctionNoProtoType,<br>
    +                     { TRY_TO(TraverseTypeLoc(TL.<u></u>getReturnLoc())); })<br>
<br>
     // FIXME: location of exception specifications (attributes?)<br>
     DEF_TRAVERSE_TYPELOC(<u></u>FunctionProtoType, {<br>
    -    TRY_TO(TraverseTypeLoc(TL.<u></u>getReturnLoc()));<br>
    +  TRY_TO(TraverseTypeLoc(TL.<u></u>getReturnLoc()));<br>
<br>
    -    const FunctionProtoType *T = TL.getTypePtr();<br>
    +  const FunctionProtoType *T = TL.getTypePtr();<br>
<br>
    -    for (unsigned I = 0, E = TL.getNumParams(); I != E; ++I) {<br>
    -      if (TL.getParam(I)) {<br>
    -        TRY_TO(TraverseDecl(TL.<u></u>getParam(I)));<br>
    -      } else if (I < T->getNumParams()) {<br>
    -        TRY_TO(TraverseType(T-><u></u>getParamType(I)));<br>
    -      }<br>
    +  for (unsigned I = 0, E = TL.getNumParams(); I != E; ++I) {<br>
    +    if (TL.getParam(I)) {<br>
    +      TRY_TO(TraverseDecl(TL.<u></u>getParam(I)));<br>
    +    } else if (I < T->getNumParams()) {<br>
    +      TRY_TO(TraverseType(T-><u></u>getParamType(I)));<br>
         }<br>
    +  }<br>
<br>
    -    for (const auto &E : T->exceptions()) {<br>
    -      TRY_TO(TraverseType(E));<br>
    -    }<br>
    -  })<br>
    +  for (const auto &E : T->exceptions()) {<br>
    +    TRY_TO(TraverseType(E));<br>
    +  }<br>
    +})<br>
<br>
    -DEF_TRAVERSE_TYPELOC(<u></u>UnresolvedUsingType, { })<br>
    -DEF_TRAVERSE_TYPELOC(<u></u>TypedefType, { })<br>
    +DEF_TRAVERSE_TYPELOC(<u></u>UnresolvedUsingType, {})<br>
    +DEF_TRAVERSE_TYPELOC(<u></u>TypedefType, {})<br>
<br>
    -DEF_TRAVERSE_TYPELOC(<u></u>TypeOfExprType, {<br>
    -    TRY_TO(TraverseStmt(TL.<u></u>getUnderlyingExpr()));<br>
    -  })<br>
    +DEF_TRAVERSE_TYPELOC(<u></u>TypeOfExprType,<br>
    +                     {<br>
    TRY_TO(TraverseStmt(TL.<u></u>getUnderlyingExpr())); })<br>
<br>
     DEF_TRAVERSE_TYPELOC(<u></u>TypeOfType, {<br>
    -  TRY_TO(TraverseTypeLoc(TL.<u></u>getUnderlyingTInfo()-><u></u>getTypeLoc()));<br>
    -  })<br>
    +  TRY_TO(TraverseTypeLoc(TL.<u></u>getUnderlyingTInfo()-><u></u>getTypeLoc()));<br>
    +})<br>
<br>
     // FIXME: location of underlying expr<br>
     DEF_TRAVERSE_TYPELOC(<u></u>DecltypeType, {<br>
    -  TRY_TO(TraverseStmt(TL.<u></u>getTypePtr()-><u></u>getUnderlyingExpr()));<br>
    -  })<br>
    +  TRY_TO(TraverseStmt(TL.<u></u>getTypePtr()-><u></u>getUnderlyingExpr()));<br>
    +})<br>
<br>
     DEF_TRAVERSE_TYPELOC(<u></u>UnaryTransformType, {<br>
    -  TRY_TO(TraverseTypeLoc(TL.<u></u>getUnderlyingTInfo()-><u></u>getTypeLoc()));<br>
    -  })<br>
    +  TRY_TO(TraverseTypeLoc(TL.<u></u>getUnderlyingTInfo()-><u></u>getTypeLoc()));<br>
    +})<br>
<br>
     DEF_TRAVERSE_TYPELOC(AutoType, {<br>
    -  TRY_TO(TraverseType(TL.<u></u>getTypePtr()->getDeducedType()<u></u>));<br>
    -  })<br>
    +  TRY_TO(TraverseType(TL.<u></u>getTypePtr()->getDeducedType()<u></u>));<br>
    +})<br>
<br>
    -DEF_TRAVERSE_TYPELOC(<u></u>RecordType, { })<br>
    -DEF_TRAVERSE_TYPELOC(<u></u>EnumType, { })<br>
    -DEF_TRAVERSE_TYPELOC(<u></u>TemplateTypeParmType, { })<br>
    -DEF_TRAVERSE_TYPELOC(<u></u>SubstTemplateTypeParmType, { })<br>
    -DEF_TRAVERSE_TYPELOC(<u></u>SubstTemplateTypeParmPackType, { })<br>
    +DEF_TRAVERSE_TYPELOC(<u></u>RecordType, {})<br>
    +DEF_TRAVERSE_TYPELOC(<u></u>EnumType, {})<br>
    +DEF_TRAVERSE_TYPELOC(<u></u>TemplateTypeParmType, {})<br>
    +DEF_TRAVERSE_TYPELOC(<u></u>SubstTemplateTypeParmType, {})<br>
    +DEF_TRAVERSE_TYPELOC(<u></u>SubstTemplateTypeParmPackType, {})<br>
<br>
     // FIXME: use the loc for the template name?<br>
     DEF_TRAVERSE_TYPELOC(<u></u>TemplateSpecializationType, {<br>
    -  TRY_TO(TraverseTemplateName(<u></u>TL.getTypePtr()-><u></u>getTemplateName()));<br>
    -    for (unsigned I = 0, E = TL.getNumArgs(); I != E; ++I) {<br>
    -  TRY_TO(<u></u>TraverseTemplateArgumentLoc(<u></u>TL.getArgLoc(I)));<br>
    -    }<br>
    -  })<br>
    +  TRY_TO(TraverseTemplateName(<u></u>TL.getTypePtr()-><u></u>getTemplateName()));<br>
    +  for (unsigned I = 0, E = TL.getNumArgs(); I != E; ++I) {<br>
    +    TRY_TO(<u></u>TraverseTemplateArgumentLoc(<u></u>TL.getArgLoc(I)));<br>
    +  }<br>
    +})<br>
<br>
    -DEF_TRAVERSE_TYPELOC(<u></u>InjectedClassNameType, { })<br>
    +DEF_TRAVERSE_TYPELOC(<u></u>InjectedClassNameType, {})<br>
<br>
    -DEF_TRAVERSE_TYPELOC(<u></u>ParenType, {<br>
    -    TRY_TO(TraverseTypeLoc(TL.<u></u>getInnerLoc()));<br>
    -  })<br>
    +DEF_TRAVERSE_TYPELOC(<u></u>ParenType, {<br>
    TRY_TO(TraverseTypeLoc(TL.<u></u>getInnerLoc())); })<br>
<br>
    -DEF_TRAVERSE_TYPELOC(<u></u>AttributedType, {<br>
    -    TRY_TO(TraverseTypeLoc(TL.<u></u>getModifiedLoc()));<br>
    -  })<br>
    +DEF_TRAVERSE_TYPELOC(<u></u>AttributedType,<br>
    +                     {<br>
    TRY_TO(TraverseTypeLoc(TL.<u></u>getModifiedLoc())); })<br>
<br>
     DEF_TRAVERSE_TYPELOC(<u></u>ElaboratedType, {<br>
    -    if (TL.getQualifierLoc()) {<br>
    -  TRY_TO(<u></u>TraverseNestedNameSpecifierLoc<u></u>(TL.getQualifierLoc()));<br>
    -    }<br>
    -    TRY_TO(TraverseTypeLoc(TL.<u></u>getNamedTypeLoc()));<br>
    -  })<br>
    +  if (TL.getQualifierLoc()) {<br>
    +  TRY_TO(<u></u>TraverseNestedNameSpecifierLoc<u></u>(TL.getQualifierLoc()));<br>
    +  }<br>
    +  TRY_TO(TraverseTypeLoc(TL.<u></u>getNamedTypeLoc()));<br>
    +})<br>
<br>
     DEF_TRAVERSE_TYPELOC(<u></u>DependentNameType, {<br>
    -  TRY_TO(<u></u>TraverseNestedNameSpecifierLoc<u></u>(TL.getQualifierLoc()));<br>
    -  })<br>
    +  TRY_TO(<u></u>TraverseNestedNameSpecifierLoc<u></u>(TL.getQualifierLoc()));<br>
    +})<br>
<br>
     DEF_TRAVERSE_TYPELOC(<u></u>DependentTemplateSpecializatio<u></u>nType, {<br>
    -    if (TL.getQualifierLoc()) {<br>
    -  TRY_TO(<u></u>TraverseNestedNameSpecifierLoc<u></u>(TL.getQualifierLoc()));<br>
    -    }<br>
    +  if (TL.getQualifierLoc()) {<br>
    +  TRY_TO(<u></u>TraverseNestedNameSpecifierLoc<u></u>(TL.getQualifierLoc()));<br>
    +  }<br>
<br>
    -    for (unsigned I = 0, E = TL.getNumArgs(); I != E; ++I) {<br>
    -  TRY_TO(<u></u>TraverseTemplateArgumentLoc(<u></u>TL.getArgLoc(I)));<br>
    -    }<br>
    -  })<br>
    +  for (unsigned I = 0, E = TL.getNumArgs(); I != E; ++I) {<br>
    +    TRY_TO(<u></u>TraverseTemplateArgumentLoc(<u></u>TL.getArgLoc(I)));<br>
    +  }<br>
    +})<br>
<br>
    -DEF_TRAVERSE_TYPELOC(<u></u>PackExpansionType, {<br>
    -    TRY_TO(TraverseTypeLoc(TL.<u></u>getPatternLoc()));<br>
    -  })<br>
    +DEF_TRAVERSE_TYPELOC(<u></u>PackExpansionType,<br>
    +                     {<br>
    TRY_TO(TraverseTypeLoc(TL.<u></u>getPatternLoc())); })<br>
<br>
    -DEF_TRAVERSE_TYPELOC(<u></u>ObjCInterfaceType, { })<br>
    +DEF_TRAVERSE_TYPELOC(<u></u>ObjCInterfaceType, {})<br>
<br>
     DEF_TRAVERSE_TYPELOC(<u></u>ObjCObjectType, {<br>
    -    // We have to watch out here because an ObjCInterfaceType's base<br>
    -    // type is itself.<br>
    -    if (TL.getTypePtr()->getBaseType(<u></u>).getTypePtr() !=<br>
    TL.getTypePtr())<br>
    -      TRY_TO(TraverseTypeLoc(TL.<u></u>getBaseLoc()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_TYPELOC(<u></u>ObjCObjectPointerType, {<br>
    -    TRY_TO(TraverseTypeLoc(TL.<u></u>getPointeeLoc()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_TYPELOC(<u></u>AtomicType, {<br>
    -    TRY_TO(TraverseTypeLoc(TL.<u></u>getValueLoc()));<br>
    -  })<br>
    +  // We have to watch out here because an ObjCInterfaceType's base<br>
    +  // type is itself.<br>
    +  if (TL.getTypePtr()->getBaseType(<u></u>).getTypePtr() != TL.getTypePtr())<br>
    +    TRY_TO(TraverseTypeLoc(TL.<u></u>getBaseLoc()));<br>
    +})<br>
    +<br>
    +DEF_TRAVERSE_TYPELOC(<u></u>ObjCObjectPointerType,<br>
    +                     {<br>
    TRY_TO(TraverseTypeLoc(TL.<u></u>getPointeeLoc())); })<br>
    +<br>
    +DEF_TRAVERSE_TYPELOC(<u></u>AtomicType, {<br>
    TRY_TO(TraverseTypeLoc(TL.<u></u>getValueLoc())); })<br>
<br>
     #undef DEF_TRAVERSE_TYPELOC<br>
<br>
    @@ -1215,7 +1155,7 @@ DEF_TRAVERSE_TYPELOC(<u></u>AtomicType, {<br>
     // Therefore each Traverse* only needs to worry about children other<br>
     // than those.<br>
<br>
    -template<typename Derived><br>
    +template <typename Derived><br>
     bool<br>
    RecursiveASTVisitor<Derived>::<u></u>TraverseDeclContextHelper(<u></u>DeclContext *DC)<br>
    {<br>
       if (!DC)<br>
         return true;<br>
    @@ -1231,131 +1171,121 @@ bool RecursiveASTVisitor<Derived>::<u></u>Trave<br>
     }<br>
<br>
     // This macro makes available a variable D, the passed-in decl.<br>
    -#define DEF_TRAVERSE_DECL(DECL, CODE)       \<br>
    -template<typename Derived>              \<br>
    -bool RecursiveASTVisitor<Derived>::<u></u>Traverse##DECL (DECL *D) {   \<br>
    -  TRY_TO(WalkUpFrom##DECL (D));       \<br>
    -  { CODE; }       \<br>
    -  TRY_TO(<u></u>TraverseDeclContextHelper(dyn_<u></u>cast<DeclContext>(D)));  \<br>
    -  return true;        \<br>
    -}<br>
    +#define DEF_TRAVERSE_DECL(DECL, CODE)                      \<br>
    +  template <typename Derived>                            \<br>
    +  bool RecursiveASTVisitor<Derived>::<u></u>Traverse##DECL(DECL *D) {                    \<br>
    +    TRY_TO(WalkUpFrom##DECL(D));                       \<br>
    +    { CODE; }                      \<br>
    +  TRY_TO(<u></u>TraverseDeclContextHelper(dyn_<u></u>cast<DeclContext>(D)));                  \<br>
    +    return true;                       \<br>
    +  }<br>
<br>
    -DEF_TRAVERSE_DECL(<u></u>AccessSpecDecl, { })<br>
    +DEF_TRAVERSE_DECL(<u></u>AccessSpecDecl, {})<br>
<br>
     DEF_TRAVERSE_DECL(BlockDecl, {<br>
    -    if (TypeSourceInfo *TInfo = D->getSignatureAsWritten())<br>
    -      TRY_TO(TraverseTypeLoc(TInfo-><u></u>getTypeLoc()));<br>
    -    TRY_TO(TraverseStmt(D-><u></u>getBody()));<br>
    -    // This return statement makes sure the traversal of nodes in<br>
    -    // decls_begin()/decls_end() (done in the DEF_TRAVERSE_DECL<br>
    macro)<br>
    -    // is skipped - don't remove it.<br>
    -    return true;<br>
    -  })<br>
    +  if (TypeSourceInfo *TInfo = D->getSignatureAsWritten())<br>
    +    TRY_TO(TraverseTypeLoc(TInfo-><u></u>getTypeLoc()));<br>
    +  TRY_TO(TraverseStmt(D-><u></u>getBody()));<br>
    +  // This return statement makes sure the traversal of nodes in<br>
    +  // decls_begin()/decls_end() (done in the DEF_TRAVERSE_DECL macro)<br>
    +  // is skipped - don't remove it.<br>
    +  return true;<br>
    +})<br>
<br>
     DEF_TRAVERSE_DECL(<u></u>CapturedDecl, {<br>
    -    TRY_TO(TraverseStmt(D-><u></u>getBody()));<br>
    -    // This return statement makes sure the traversal of nodes in<br>
    -    // decls_begin()/decls_end() (done in the DEF_TRAVERSE_DECL<br>
    macro)<br>
    -    // is skipped - don't remove it.<br>
    -    return true;<br>
    -  })<br>
    +  TRY_TO(TraverseStmt(D-><u></u>getBody()));<br>
    +  // This return statement makes sure the traversal of nodes in<br>
    +  // decls_begin()/decls_end() (done in the DEF_TRAVERSE_DECL macro)<br>
    +  // is skipped - don't remove it.<br>
    +  return true;<br>
    +})<br>
<br>
    -DEF_TRAVERSE_DECL(EmptyDecl, { })<br>
    +DEF_TRAVERSE_DECL(EmptyDecl, {})<br>
<br>
    -DEF_TRAVERSE_DECL(<u></u>FileScopeAsmDecl, {<br>
    -    TRY_TO(TraverseStmt(D-><u></u>getAsmString()));<br>
    -  })<br>
    +DEF_TRAVERSE_DECL(<u></u>FileScopeAsmDecl,<br>
    +                  { TRY_TO(TraverseStmt(D-><u></u>getAsmString())); })<br>
<br>
    -DEF_TRAVERSE_DECL(ImportDecl, { })<br>
    +DEF_TRAVERSE_DECL(ImportDecl, {})<br>
<br>
     DEF_TRAVERSE_DECL(FriendDecl, {<br>
    -    // Friend is either decl or a type.<br>
    -    if (D->getFriendType())<br>
    -  TRY_TO(TraverseTypeLoc(D-><u></u>getFriendType()->getTypeLoc())<u></u>);<br>
    -    else<br>
    -      TRY_TO(TraverseDecl(D-><u></u>getFriendDecl()));<br>
    -  })<br>
    +  // Friend is either decl or a type.<br>
    +  if (D->getFriendType())<br>
    +  TRY_TO(TraverseTypeLoc(D-><u></u>getFriendType()->getTypeLoc())<u></u>);<br>
    +  else<br>
    +    TRY_TO(TraverseDecl(D-><u></u>getFriendDecl()));<br>
    +})<br>
<br>
     DEF_TRAVERSE_DECL(<u></u>FriendTemplateDecl, {<br>
    -    if (D->getFriendType())<br>
    -  TRY_TO(TraverseTypeLoc(D-><u></u>getFriendType()->getTypeLoc())<u></u>);<br>
    -    else<br>
    -      TRY_TO(TraverseDecl(D-><u></u>getFriendDecl()));<br>
    -    for (unsigned I = 0, E = D->getNumTemplateParameters(); I <<br>
    E; ++I) {<br>
    -      TemplateParameterList *TPL = D->getTemplateParameterList(I)<u></u>;<br>
    -      for (TemplateParameterList::<u></u>iterator ITPL = TPL->begin(),<br>
    -                                           ETPL = TPL->end();<br>
    -           ITPL != ETPL; ++ITPL) {<br>
    -        TRY_TO(TraverseDecl(*ITPL));<br>
    -      }<br>
    +  if (D->getFriendType())<br>
    +  TRY_TO(TraverseTypeLoc(D-><u></u>getFriendType()->getTypeLoc())<u></u>);<br>
    +  else<br>
    +    TRY_TO(TraverseDecl(D-><u></u>getFriendDecl()));<br>
    +  for (unsigned I = 0, E = D->getNumTemplateParameters(); I < E;<br>
    ++I) {<br>
    +    TemplateParameterList *TPL = D->getTemplateParameterList(I)<u></u>;<br>
    +    for (TemplateParameterList::<u></u>iterator ITPL = TPL->begin(),<br>
    ETPL = TPL->end();<br>
    +         ITPL != ETPL; ++ITPL) {<br>
    +      TRY_TO(TraverseDecl(*ITPL));<br>
         }<br>
    -  })<br>
    +  }<br>
    +})<br>
<br>
    -DEF_TRAVERSE_DECL(<u></u>ClassScopeFunctionSpecializati<u></u>onDecl, {<br>
    -  TRY_TO(TraverseDecl(D-><u></u>getSpecialization()));<br>
    - })<br>
    +DEF_TRAVERSE_DECL(<u></u>ClassScopeFunctionSpecializati<u></u>onDecl,<br>
    +                  { TRY_TO(TraverseDecl(D-><u></u>getSpecialization())); })<br>
<br>
    -DEF_TRAVERSE_DECL(<u></u>LinkageSpecDecl, { })<br>
    +DEF_TRAVERSE_DECL(<u></u>LinkageSpecDecl, {})<br>
<br>
    -DEF_TRAVERSE_DECL(<u></u>ObjCPropertyImplDecl, {<br>
    -    // FIXME: implement this<br>
    -  })<br>
    +DEF_TRAVERSE_DECL(<u></u>ObjCPropertyImplDecl, {// FIXME: implement this<br>
    +                                        })<br>
<br>
     DEF_TRAVERSE_DECL(<u></u>StaticAssertDecl, {<br>
    -    TRY_TO(TraverseStmt(D-><u></u>getAssertExpr()));<br>
    -    TRY_TO(TraverseStmt(D-><u></u>getMessage()));<br>
    -  })<br>
    -<br>
    -DEF_TRAVERSE_DECL(<u></u>TranslationUnitDecl, {<br>
    -    // Code in an unnamed namespace shows up automatically in<br>
    -    // decls_begin()/decls_end().  Thus we don't need to recurse on<br>
    -    // D->getAnonymousNamespace().<br>
    -  })<br>
    +  TRY_TO(TraverseStmt(D-><u></u>getAssertExpr()));<br>
    +  TRY_TO(TraverseStmt(D-><u></u>getMessage()));<br>
    +})<br>
<br>
    -DEF_TRAVERSE_DECL(<u></u>NamespaceAliasDecl, {<br>
    -    // We shouldn't traverse an aliased namespace, since it will be<br>
    -    // defined (and, therefore, traversed) somewhere else.<br>
    -    //<br>
    -    // This return statement makes sure the traversal of nodes in<br>
    -    // decls_begin()/decls_end() (done in the DEF_TRAVERSE_DECL<br>
    macro)<br>
    -    // is skipped - don't remove it.<br>
    -    return true;<br>
    -  })<br></div></div>
    +DEF_TRAVERSE_DECL(<br>
    +    TranslationUnitDecl,<br>
    +    {// Code in an unnamed namespace shows up automatically in<div class=""><br>
    +     // decls_begin()/decls_end().  Thus we don't need to recurse on<br></div><div class="">
    +     // D->getAnonymousNamespace().<br>
    +    })<br>
<br>
    -DEF_TRAVERSE_DECL(LabelDecl, {<br>
    -  // There is no code in a LabelDecl.<br>
    +DEF_TRAVERSE_DECL(<u></u>NamespaceAliasDecl, {<br></div><div class="">
    +  // We shouldn't traverse an aliased namespace, since it will be<br>
    +  // defined (and, therefore, traversed) somewhere else.<br></div>
    +  //<div class=""><br>
    +  // This return statement makes sure the traversal of nodes in</div></blockquote>
</blockquote></div><br></div>
<br>_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
<br></blockquote></div><br></div></div>