diff options
-rw-r--r-- | clang/include/clang/AST/DataRecursiveASTVisitor.h (renamed from clang/tools/libclang/RecursiveASTVisitor.h) | 102 | ||||
-rw-r--r-- | clang/tools/libclang/IndexBody.cpp | 6 | ||||
-rw-r--r-- | clang/tools/libclang/IndexTypeSourceInfo.cpp | 4 |
3 files changed, 55 insertions, 57 deletions
diff --git a/clang/tools/libclang/RecursiveASTVisitor.h b/clang/include/clang/AST/DataRecursiveASTVisitor.h index fa574f66a1b..3f4df50c545 100644 --- a/clang/tools/libclang/RecursiveASTVisitor.h +++ b/clang/include/clang/AST/DataRecursiveASTVisitor.h @@ -1,4 +1,4 @@ -//===--- RecursiveASTVisitor.h - Recursive AST Visitor ----------*- C++ -*-===// +//===--- DataRecursiveASTVisitor.h - Data-Recursive AST Visitor -*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -7,12 +7,12 @@ // //===----------------------------------------------------------------------===// // -// This file defines the RecursiveASTVisitor interface, which recursively -// traverses the entire AST. +// This file defines the DataRecursiveASTVisitor interface, which recursively +// traverses the entire AST, using data recursion for Stmts/Exprs. // //===----------------------------------------------------------------------===// -#ifndef LLVM_CLANG_LIBCLANG_RECURSIVEASTVISITOR_H -#define LLVM_CLANG_LIBCLANG_RECURSIVEASTVISITOR_H +#ifndef LLVM_CLANG_AST_DATARECURSIVEASTVISITOR_H +#define LLVM_CLANG_AST_DATARECURSIVEASTVISITOR_H #include "clang/AST/Decl.h" #include "clang/AST/DeclCXX.h" @@ -67,11 +67,10 @@ OPERATOR(Shl) OPERATOR(Shr) OPERATOR(And) OPERATOR(Or) OPERATOR(Xor) namespace clang { -namespace cxindex { // A helper macro to implement short-circuiting when recursing. It // invokes CALL_EXPR, which must be a method call, on the derived -// object (s.t. a user of RecursiveASTVisitor can override the method +// object (s.t. a user of DataRecursiveASTVisitor can override the method // in CALL_EXPR). #define TRY_TO(CALL_EXPR) \ do { if (!getDerived().CALL_EXPR) return false; } while (0) @@ -141,7 +140,7 @@ namespace cxindex { /// instantiations will be visited at the same time as the pattern /// from which they were produced. template<typename Derived> -class RecursiveASTVisitor { +class DataRecursiveASTVisitor { public: /// \brief Return a reference to the derived class. Derived &getDerived() { return *static_cast<Derived*>(this); } @@ -420,9 +419,9 @@ private: QueuesTy Queues; class NewQueueRAII { - RecursiveASTVisitor &RAV; + DataRecursiveASTVisitor &RAV; public: - NewQueueRAII(StmtsTy &queue, RecursiveASTVisitor &RAV) : RAV(RAV) { + NewQueueRAII(StmtsTy &queue, DataRecursiveASTVisitor &RAV) : RAV(RAV) { RAV.Queues.push_back(&queue); } ~NewQueueRAII() { @@ -439,7 +438,7 @@ public: class StmtQueueAction { StmtsTy &CurrQueue; public: - explicit StmtQueueAction(RecursiveASTVisitor &RAV) + explicit StmtQueueAction(DataRecursiveASTVisitor &RAV) : CurrQueue(RAV.getCurrentQueue()) { } void queue(Stmt *S) { @@ -452,7 +451,7 @@ public: return getDerived().Traverse##NAME(static_cast<CLASS*>(VAR)) template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseStmt(Stmt *S) { +bool DataRecursiveASTVisitor<Derived>::TraverseStmt(Stmt *S) { if (!S) return true; @@ -521,7 +520,7 @@ bool RecursiveASTVisitor<Derived>::TraverseStmt(Stmt *S) { } template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseType(QualType T) { +bool DataRecursiveASTVisitor<Derived>::TraverseType(QualType T) { if (T.isNull()) return true; @@ -537,7 +536,7 @@ bool RecursiveASTVisitor<Derived>::TraverseType(QualType T) { } template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseTypeLoc(TypeLoc TL) { +bool DataRecursiveASTVisitor<Derived>::TraverseTypeLoc(TypeLoc TL) { if (TL.isNull()) return true; @@ -554,7 +553,7 @@ bool RecursiveASTVisitor<Derived>::TraverseTypeLoc(TypeLoc TL) { template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseDecl(Decl *D) { +bool DataRecursiveASTVisitor<Derived>::TraverseDecl(Decl *D) { if (!D) return true; @@ -577,7 +576,7 @@ bool RecursiveASTVisitor<Derived>::TraverseDecl(Decl *D) { #undef DISPATCH template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseNestedNameSpecifier( +bool DataRecursiveASTVisitor<Derived>::TraverseNestedNameSpecifier( NestedNameSpecifier *NNS) { if (!NNS) return true; @@ -601,7 +600,7 @@ bool RecursiveASTVisitor<Derived>::TraverseNestedNameSpecifier( } template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseNestedNameSpecifierLoc( +bool DataRecursiveASTVisitor<Derived>::TraverseNestedNameSpecifierLoc( NestedNameSpecifierLoc NNS) { if (!NNS) return true; @@ -626,7 +625,7 @@ bool RecursiveASTVisitor<Derived>::TraverseNestedNameSpecifierLoc( } template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseDeclarationNameInfo( +bool DataRecursiveASTVisitor<Derived>::TraverseDeclarationNameInfo( DeclarationNameInfo NameInfo) { switch (NameInfo.getName().getNameKind()) { case DeclarationName::CXXConstructorName: @@ -651,7 +650,7 @@ bool RecursiveASTVisitor<Derived>::TraverseDeclarationNameInfo( } template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseTemplateName(TemplateName Template) { +bool DataRecursiveASTVisitor<Derived>::TraverseTemplateName(TemplateName Template) { if (DependentTemplateName *DTN = Template.getAsDependentTemplateName()) TRY_TO(TraverseNestedNameSpecifier(DTN->getQualifier())); else if (QualifiedTemplateName *QTN = Template.getAsQualifiedTemplateName()) @@ -661,7 +660,7 @@ bool RecursiveASTVisitor<Derived>::TraverseTemplateName(TemplateName Template) { } template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseTemplateArgument( +bool DataRecursiveASTVisitor<Derived>::TraverseTemplateArgument( const TemplateArgument &Arg) { switch (Arg.getKind()) { case TemplateArgument::Null: @@ -692,7 +691,7 @@ bool RecursiveASTVisitor<Derived>::TraverseTemplateArgument( // FIXME: no template name location? // FIXME: no source locations for a template argument pack? template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseTemplateArgumentLoc( +bool DataRecursiveASTVisitor<Derived>::TraverseTemplateArgumentLoc( const TemplateArgumentLoc &ArgLoc) { const TemplateArgument &Arg = ArgLoc.getArgument(); @@ -731,7 +730,7 @@ bool RecursiveASTVisitor<Derived>::TraverseTemplateArgumentLoc( } template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseTemplateArguments( +bool DataRecursiveASTVisitor<Derived>::TraverseTemplateArguments( const TemplateArgument *Args, unsigned NumArgs) { for (unsigned I = 0; I != NumArgs; ++I) { @@ -742,7 +741,7 @@ bool RecursiveASTVisitor<Derived>::TraverseTemplateArguments( } template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseConstructorInitializer( +bool DataRecursiveASTVisitor<Derived>::TraverseConstructorInitializer( CXXCtorInitializer *Init) { if (TypeSourceInfo *TInfo = Init->getTypeSourceInfo()) TRY_TO(TraverseTypeLoc(TInfo->getTypeLoc())); @@ -753,7 +752,7 @@ bool RecursiveASTVisitor<Derived>::TraverseConstructorInitializer( } template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseLambdaCapture(LambdaExpr::Capture C){ +bool DataRecursiveASTVisitor<Derived>::TraverseLambdaCapture(LambdaExpr::Capture C){ return true; } @@ -762,7 +761,7 @@ bool RecursiveASTVisitor<Derived>::TraverseLambdaCapture(LambdaExpr::Capture C){ // This macro makes available a variable T, the passed-in type. #define DEF_TRAVERSE_TYPE(TYPE, CODE) \ template<typename Derived> \ - bool RecursiveASTVisitor<Derived>::Traverse##TYPE (TYPE *T) { \ + bool DataRecursiveASTVisitor<Derived>::Traverse##TYPE (TYPE *T) { \ TRY_TO(WalkUpFrom##TYPE (T)); \ { CODE; } \ return true; \ @@ -949,7 +948,7 @@ DEF_TRAVERSE_TYPE(AtomicType, { // continue to work. #define DEF_TRAVERSE_TYPELOC(TYPE, CODE) \ template<typename Derived> \ - bool RecursiveASTVisitor<Derived>::Traverse##TYPE##Loc(TYPE##Loc TL) { \ + bool DataRecursiveASTVisitor<Derived>::Traverse##TYPE##Loc(TYPE##Loc TL) { \ if (getDerived().shouldWalkTypesOfTypeLocs()) \ TRY_TO(WalkUpFrom##TYPE(const_cast<TYPE*>(TL.getTypePtr()))); \ TRY_TO(WalkUpFrom##TYPE##Loc(TL)); \ @@ -958,7 +957,7 @@ DEF_TRAVERSE_TYPE(AtomicType, { } template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseQualifiedTypeLoc( +bool DataRecursiveASTVisitor<Derived>::TraverseQualifiedTypeLoc( QualifiedTypeLoc TL) { // Move this over to the 'main' typeloc tree. Note that this is a // move -- we pretend that we were really looking at the unqualified @@ -1018,7 +1017,7 @@ DEF_TRAVERSE_TYPELOC(AdjustedType, { }) template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseArrayTypeLocHelper(ArrayTypeLoc TL) { +bool DataRecursiveASTVisitor<Derived>::TraverseArrayTypeLocHelper(ArrayTypeLoc TL) { // This isn't available for ArrayType, but is for the ArrayTypeLoc. TRY_TO(TraverseStmt(TL.getSizeExpr())); return true; @@ -1188,7 +1187,7 @@ DEF_TRAVERSE_TYPELOC(AtomicType, { // than those. template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseDeclContextHelper(DeclContext *DC) { +bool DataRecursiveASTVisitor<Derived>::TraverseDeclContextHelper(DeclContext *DC) { if (!DC) return true; @@ -1207,7 +1206,7 @@ bool RecursiveASTVisitor<Derived>::TraverseDeclContextHelper(DeclContext *DC) { // This macro makes available a variable D, the passed-in decl. #define DEF_TRAVERSE_DECL(DECL, CODE) \ template<typename Derived> \ -bool RecursiveASTVisitor<Derived>::Traverse##DECL (DECL *D) { \ +bool DataRecursiveASTVisitor<Derived>::Traverse##DECL (DECL *D) { \ TRY_TO(WalkUpFrom##DECL (D)); \ { CODE; } \ TRY_TO(TraverseDeclContextHelper(dyn_cast<DeclContext>(D))); \ @@ -1370,7 +1369,7 @@ DEF_TRAVERSE_DECL(OMPThreadPrivateDecl, { // A helper method for TemplateDecl's children. template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseTemplateParameterListHelper( +bool DataRecursiveASTVisitor<Derived>::TraverseTemplateParameterListHelper( TemplateParameterList *TPL) { if (TPL) { for (TemplateParameterList::iterator I = TPL->begin(), E = TPL->end(); @@ -1384,7 +1383,7 @@ bool RecursiveASTVisitor<Derived>::TraverseTemplateParameterListHelper( // A helper method for traversing the implicit instantiations of a // class template. template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseClassInstantiations( +bool DataRecursiveASTVisitor<Derived>::TraverseClassInstantiations( ClassTemplateDecl *D) { ClassTemplateDecl::spec_iterator end = D->spec_end(); for (ClassTemplateDecl::spec_iterator it = D->spec_begin(); it != end; ++it) { @@ -1433,7 +1432,7 @@ DEF_TRAVERSE_DECL(ClassTemplateDecl, { // A helper method for traversing the implicit instantiations of a // class template. template <typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseVariableInstantiations( +bool DataRecursiveASTVisitor<Derived>::TraverseVariableInstantiations( VarTemplateDecl *D) { VarTemplateDecl::spec_iterator end = D->spec_end(); for (VarTemplateDecl::spec_iterator it = D->spec_begin(); it != end; ++it) { @@ -1484,7 +1483,7 @@ DEF_TRAVERSE_DECL( // A helper method for traversing the instantiations of a // function while skipping its specializations. template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseFunctionInstantiations( +bool DataRecursiveASTVisitor<Derived>::TraverseFunctionInstantiations( FunctionTemplateDecl *D) { FunctionTemplateDecl::spec_iterator end = D->spec_end(); for (FunctionTemplateDecl::spec_iterator it = D->spec_begin(); it != end; @@ -1584,7 +1583,7 @@ DEF_TRAVERSE_DECL(EnumDecl, { // Helper methods for RecordDecl and its children. template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseRecordHelper( +bool DataRecursiveASTVisitor<Derived>::TraverseRecordHelper( RecordDecl *D) { // We shouldn't traverse D->getTypeForDecl(); it's a result of // declaring the type, not something that was written in the source. @@ -1594,7 +1593,7 @@ bool RecursiveASTVisitor<Derived>::TraverseRecordHelper( } template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseCXXRecordHelper( +bool DataRecursiveASTVisitor<Derived>::TraverseCXXRecordHelper( CXXRecordDecl *D) { if (!TraverseRecordHelper(D)) return false; @@ -1640,7 +1639,7 @@ DEF_TRAVERSE_DECL(ClassTemplateSpecializationDecl, { }) template <typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseTemplateArgumentLocsHelper( +bool DataRecursiveASTVisitor<Derived>::TraverseTemplateArgumentLocsHelper( const TemplateArgumentLoc *TAL, unsigned Count) { for (unsigned I = 0; I < Count; ++I) { TRY_TO(TraverseTemplateArgumentLoc(TAL[I])); @@ -1683,7 +1682,7 @@ DEF_TRAVERSE_DECL(UnresolvedUsingValueDecl, { DEF_TRAVERSE_DECL(IndirectFieldDecl, {}) template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseDeclaratorHelper(DeclaratorDecl *D) { +bool DataRecursiveASTVisitor<Derived>::TraverseDeclaratorHelper(DeclaratorDecl *D) { TRY_TO(TraverseNestedNameSpecifierLoc(D->getQualifierLoc())); if (D->getTypeSourceInfo()) TRY_TO(TraverseTypeLoc(D->getTypeSourceInfo()->getTypeLoc())); @@ -1719,7 +1718,7 @@ DEF_TRAVERSE_DECL(ObjCIvarDecl, { }) template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseFunctionHelper(FunctionDecl *D) { +bool DataRecursiveASTVisitor<Derived>::TraverseFunctionHelper(FunctionDecl *D) { TRY_TO(TraverseNestedNameSpecifierLoc(D->getQualifierLoc())); TRY_TO(TraverseDeclarationNameInfo(D->getNameInfo())); @@ -1796,7 +1795,7 @@ DEF_TRAVERSE_DECL(CXXDestructorDecl, { }) template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseVarHelper(VarDecl *D) { +bool DataRecursiveASTVisitor<Derived>::TraverseVarHelper(VarDecl *D) { TRY_TO(TraverseDeclaratorHelper(D)); // Default params are taken care of when we traverse the ParmVarDecl. if (!isa<ParmVarDecl>(D)) @@ -1884,7 +1883,7 @@ DEF_TRAVERSE_DECL(ParmVarDecl, { // This macro makes available a variable S, the passed-in stmt. #define DEF_TRAVERSE_STMT(STMT, CODE) \ template<typename Derived> \ -bool RecursiveASTVisitor<Derived>::Traverse##STMT (STMT *S) { \ +bool DataRecursiveASTVisitor<Derived>::Traverse##STMT (STMT *S) { \ TRY_TO(WalkUpFrom##STMT(S)); \ StmtQueueAction StmtQueue(*this); \ { CODE; } \ @@ -2032,7 +2031,7 @@ DEF_TRAVERSE_STMT(CXXStaticCastExpr, { // calls WalkUp*() on the semantic form, before our code can convert // to the syntactic form. template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseInitListExpr(InitListExpr *S) { +bool DataRecursiveASTVisitor<Derived>::TraverseInitListExpr(InitListExpr *S) { if (InitListExpr *Syn = S->getSyntacticForm()) S = Syn; TRY_TO(WalkUpFromInitListExpr(S)); @@ -2048,7 +2047,7 @@ bool RecursiveASTVisitor<Derived>::TraverseInitListExpr(InitListExpr *S) { // are interleaved. We also need to watch out for null types (default // generic associations). template<typename Derived> -bool RecursiveASTVisitor<Derived>:: +bool DataRecursiveASTVisitor<Derived>:: TraverseGenericSelectionExpr(GenericSelectionExpr *S) { TRY_TO(WalkUpFromGenericSelectionExpr(S)); StmtQueueAction StmtQueue(*this); @@ -2064,7 +2063,7 @@ TraverseGenericSelectionExpr(GenericSelectionExpr *S) { // PseudoObjectExpr is a special case because of the wierdness with // syntactic expressions and opaque values. template<typename Derived> -bool RecursiveASTVisitor<Derived>:: +bool DataRecursiveASTVisitor<Derived>:: TraversePseudoObjectExpr(PseudoObjectExpr *S) { TRY_TO(WalkUpFromPseudoObjectExpr(S)); StmtQueueAction StmtQueue(*this); @@ -2148,7 +2147,7 @@ DEF_TRAVERSE_STMT(CXXTemporaryObjectExpr, { // Walk only the visible parts of lambda expressions. template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseLambdaExpr(LambdaExpr *S) { +bool DataRecursiveASTVisitor<Derived>::TraverseLambdaExpr(LambdaExpr *S) { TRY_TO(WalkUpFromLambdaExpr(S)); for (LambdaExpr::capture_iterator C = S->explicit_capture_begin(), @@ -2315,7 +2314,7 @@ DEF_TRAVERSE_STMT(OMPParallelDirective, { // OpenMP clauses. template<typename Derived> -bool RecursiveASTVisitor<Derived>::TraverseOMPClause(OMPClause *C) { +bool DataRecursiveASTVisitor<Derived>::TraverseOMPClause(OMPClause *C) { if (!C) return true; switch (C->getClauseKind()) { #define OPENMP_CLAUSE(Name, Class) \ @@ -2328,13 +2327,13 @@ bool RecursiveASTVisitor<Derived>::TraverseOMPClause(OMPClause *C) { } template<typename Derived> -bool RecursiveASTVisitor<Derived>::VisitOMPDefaultClause(OMPDefaultClause *C) { +bool DataRecursiveASTVisitor<Derived>::VisitOMPDefaultClause(OMPDefaultClause *C) { return true; } template<typename Derived> template<typename T> -void RecursiveASTVisitor<Derived>::VisitOMPClauseList(T *Node) { +void DataRecursiveASTVisitor<Derived>::VisitOMPClauseList(T *Node) { for (typename T::varlist_iterator I = Node->varlist_begin(), E = Node->varlist_end(); I != E; ++I) @@ -2342,20 +2341,20 @@ void RecursiveASTVisitor<Derived>::VisitOMPClauseList(T *Node) { } template<typename Derived> -bool RecursiveASTVisitor<Derived>::VisitOMPPrivateClause(OMPPrivateClause *C) { +bool DataRecursiveASTVisitor<Derived>::VisitOMPPrivateClause(OMPPrivateClause *C) { VisitOMPClauseList(C); return true; } template<typename Derived> -bool RecursiveASTVisitor<Derived>::VisitOMPFirstprivateClause( +bool DataRecursiveASTVisitor<Derived>::VisitOMPFirstprivateClause( OMPFirstprivateClause *C) { VisitOMPClauseList(C); return true; } template<typename Derived> -bool RecursiveASTVisitor<Derived>::VisitOMPSharedClause(OMPSharedClause *C) { +bool DataRecursiveASTVisitor<Derived>::VisitOMPSharedClause(OMPSharedClause *C) { VisitOMPClauseList(C); return true; } @@ -2381,7 +2380,6 @@ bool RecursiveASTVisitor<Derived>::VisitOMPSharedClause(OMPSharedClause *C) { #undef TRY_TO -} // end namespace cxindex } // end namespace clang #endif // LLVM_CLANG_LIBCLANG_RECURSIVEASTVISITOR_H diff --git a/clang/tools/libclang/IndexBody.cpp b/clang/tools/libclang/IndexBody.cpp index e08a3461e82..6cc80623822 100644 --- a/clang/tools/libclang/IndexBody.cpp +++ b/clang/tools/libclang/IndexBody.cpp @@ -8,19 +8,19 @@ //===----------------------------------------------------------------------===// #include "IndexingContext.h" -#include "RecursiveASTVisitor.h" +#include "clang/AST/DataRecursiveASTVisitor.h" using namespace clang; using namespace cxindex; namespace { -class BodyIndexer : public cxindex::RecursiveASTVisitor<BodyIndexer> { +class BodyIndexer : public DataRecursiveASTVisitor<BodyIndexer> { IndexingContext &IndexCtx; const NamedDecl *Parent; const DeclContext *ParentDC; - typedef RecursiveASTVisitor<BodyIndexer> base; + typedef DataRecursiveASTVisitor<BodyIndexer> base; public: BodyIndexer(IndexingContext &indexCtx, const NamedDecl *Parent, const DeclContext *DC) diff --git a/clang/tools/libclang/IndexTypeSourceInfo.cpp b/clang/tools/libclang/IndexTypeSourceInfo.cpp index 2c771c854ce..4f8d4e59258 100644 --- a/clang/tools/libclang/IndexTypeSourceInfo.cpp +++ b/clang/tools/libclang/IndexTypeSourceInfo.cpp @@ -8,14 +8,14 @@ //===----------------------------------------------------------------------===// #include "IndexingContext.h" -#include "RecursiveASTVisitor.h" +#include "clang/AST/DataRecursiveASTVisitor.h" using namespace clang; using namespace cxindex; namespace { -class TypeIndexer : public cxindex::RecursiveASTVisitor<TypeIndexer> { +class TypeIndexer : public DataRecursiveASTVisitor<TypeIndexer> { IndexingContext &IndexCtx; const NamedDecl *Parent; const DeclContext *ParentDC; |