Author: steveire Date: Wed Jan 30 12:03:47 2019 New Revision: 352661 URL: http://llvm.org/viewvc/llvm-project?rev=352661&view=rev Log: [ASTDump] Re-arrange method declarations to group Visit together
This will make follow-up commits easier to review. Modified: cfe/trunk/lib/AST/ASTDumper.cpp Modified: cfe/trunk/lib/AST/ASTDumper.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTDumper.cpp?rev=352661&r1=352660&r2=352661&view=diff ============================================================================== --- cfe/trunk/lib/AST/ASTDumper.cpp (original) +++ cfe/trunk/lib/AST/ASTDumper.cpp Wed Jan 30 12:03:47 2019 @@ -76,24 +76,26 @@ namespace { void Visit(const Decl *D); void Visit(const Stmt *S, StringRef Label = {}); - - // Utilities void Visit(QualType T); void Visit(const Type *T); - void dumpDeclContext(const DeclContext *DC); - void dumpLookups(const DeclContext *DC, bool DumpDecls); void Visit(const Attr *A); + void Visit(const CXXCtorInitializer *Init); + void Visit(const TemplateArgument &A, SourceRange R = SourceRange(), + const Decl *From = nullptr, const char *Label = nullptr); + void Visit(const BlockDecl::Capture &C); + void Visit(const OMPClause *C); + void Visit(const GenericSelectionExpr::ConstAssociation &A); + void Visit(const Comment *C, const FullComment *FC); // C++ Utilities - void Visit(const CXXCtorInitializer *Init); + void dumpDeclContext(const DeclContext *DC); + void dumpLookups(const DeclContext *DC, bool DumpDecls); void dumpTemplateParameters(const TemplateParameterList *TPL); void dumpTemplateArgumentListInfo(const TemplateArgumentListInfo &TALI); void dumpTemplateArgumentLoc(const TemplateArgumentLoc &A, const Decl *From = nullptr, const char *Label = nullptr); void dumpTemplateArgumentList(const TemplateArgumentList &TAL); - void Visit(const TemplateArgument &A, SourceRange R = SourceRange(), - const Decl *From = nullptr, const char *Label = nullptr); template <typename SpecializationDecl> void dumpTemplateDeclSpecialization(const SpecializationDecl *D, bool DumpExplicitInst, @@ -242,7 +244,6 @@ namespace { void VisitObjCCategoryDecl(const ObjCCategoryDecl *D); void VisitObjCInterfaceDecl(const ObjCInterfaceDecl *D); void VisitObjCImplementationDecl(const ObjCImplementationDecl *D); - void Visit(const BlockDecl::Capture &C); void VisitBlockDecl(const BlockDecl *D); // Stmts. @@ -252,14 +253,12 @@ namespace { void VisitCapturedStmt(const CapturedStmt *Node); // OpenMP - void Visit(const OMPClause *C); void VisitOMPExecutableDirective(const OMPExecutableDirective *Node); // Exprs void VisitInitListExpr(const InitListExpr *ILE); void VisitBlockExpr(const BlockExpr *Node); void VisitOpaqueValueExpr(const OpaqueValueExpr *Node); - void Visit(const GenericSelectionExpr::ConstAssociation &A); void VisitGenericSelectionExpr(const GenericSelectionExpr *E); // C++ @@ -271,9 +270,6 @@ namespace { // ObjC void VisitObjCAtCatchStmt(const ObjCAtCatchStmt *Node); - // Comments. - void Visit(const Comment *C, const FullComment *FC); - void VisitExpressionTemplateArgument(const TemplateArgument &TA) { Visit(TA.getAsExpr()); } @@ -291,6 +287,49 @@ namespace { // Utilities //===----------------------------------------------------------------------===// +void ASTDumper::Visit(const Decl *D) { + NodeDumper.AddChild([=] { + NodeDumper.Visit(D); + if (!D) + return; + + ConstDeclVisitor<ASTDumper>::Visit(D); + + for (const auto &A : D->attrs()) + Visit(A); + + if (const FullComment *Comment = + D->getASTContext().getLocalCommentForDeclUncached(D)) + Visit(Comment, Comment); + + // Decls within functions are visited by the body. + if (!isa<FunctionDecl>(*D) && !isa<ObjCMethodDecl>(*D)) { + if (const auto *DC = dyn_cast<DeclContext>(D)) + dumpDeclContext(DC); + } + }); +} + +void ASTDumper::Visit(const Stmt *S, StringRef Label) { + NodeDumper.AddChild(Label, [=] { + NodeDumper.Visit(S); + + if (!S) { + return; + } + + ConstStmtVisitor<ASTDumper>::Visit(S); + + // Some statements have custom mechanisms for dumping their children. + if (isa<DeclStmt>(S) || isa<GenericSelectionExpr>(S)) { + return; + } + + for (const Stmt *SubStmt : S->children()) + Visit(SubStmt); + }); +} + void ASTDumper::Visit(QualType T) { SplitQualType SQT = T.split(); if (!SQT.Quals.hasQualifiers()) @@ -316,6 +355,66 @@ void ASTDumper::Visit(const Type *T) { }); } +void ASTDumper::Visit(const Attr *A) { + NodeDumper.AddChild([=] { + NodeDumper.Visit(A); + ConstAttrVisitor<ASTDumper>::Visit(A); + }); +} + +void ASTDumper::Visit(const CXXCtorInitializer *Init) { + NodeDumper.AddChild([=] { + NodeDumper.Visit(Init); + Visit(Init->getInit()); + }); +} + +void ASTDumper::Visit(const TemplateArgument &A, SourceRange R, + const Decl *From, const char *Label) { + NodeDumper.AddChild([=] { + NodeDumper.Visit(A, R, From, Label); + ConstTemplateArgumentVisitor<ASTDumper>::Visit(A); + }); +} + +void ASTDumper::Visit(const BlockDecl::Capture &C) { + NodeDumper.AddChild([=] { + NodeDumper.Visit(C); + if (C.hasCopyExpr()) + Visit(C.getCopyExpr()); + }); +} + +void ASTDumper::Visit(const OMPClause *C) { + NodeDumper.AddChild([=] { + NodeDumper.Visit(C); + for (const auto *S : C->children()) + Visit(S); + }); +} + +void ASTDumper::Visit(const GenericSelectionExpr::ConstAssociation &A) { + NodeDumper.AddChild([=] { + NodeDumper.Visit(A); + if (const TypeSourceInfo *TSI = A.getTypeSourceInfo()) + Visit(TSI->getType()); + Visit(A.getAssociationExpr()); + }); +} + +void ASTDumper::Visit(const Comment *C, const FullComment *FC) { + NodeDumper.AddChild([=] { + NodeDumper.Visit(C, FC); + if (!C) { + return; + } + ConstCommentVisitor<ASTDumper, void, const FullComment *>::visit(C, FC); + for (Comment::child_iterator I = C->child_begin(), E = C->child_end(); + I != E; ++I) + Visit(*I, FC); + }); +} + void ASTDumper::dumpDeclContext(const DeclContext *DC) { if (!DC) return; @@ -383,24 +482,10 @@ void ASTDumper::dumpLookups(const DeclCo }); } -void ASTDumper::Visit(const Attr *A) { - NodeDumper.AddChild([=] { - NodeDumper.Visit(A); - ConstAttrVisitor<ASTDumper>::Visit(A); - }); -} - //===----------------------------------------------------------------------===// // C++ Utilities //===----------------------------------------------------------------------===// -void ASTDumper::Visit(const CXXCtorInitializer *Init) { - NodeDumper.AddChild([=] { - NodeDumper.Visit(Init); - Visit(Init->getInit()); - }); -} - void ASTDumper::dumpTemplateParameters(const TemplateParameterList *TPL) { if (!TPL) return; @@ -425,14 +510,6 @@ void ASTDumper::dumpTemplateArgumentList Visit(TAL[i]); } -void ASTDumper::Visit(const TemplateArgument &A, SourceRange R, - const Decl *From, const char *Label) { - NodeDumper.AddChild([=] { - NodeDumper.Visit(A, R, From, Label); - ConstTemplateArgumentVisitor<ASTDumper>::Visit(A); - }); -} - //===----------------------------------------------------------------------===// // Objective-C Utilities //===----------------------------------------------------------------------===// @@ -449,29 +526,6 @@ void ASTDumper::dumpObjCTypeParamList(co // Decl dumping methods. //===----------------------------------------------------------------------===// -void ASTDumper::Visit(const Decl *D) { - NodeDumper.AddChild([=] { - NodeDumper.Visit(D); - if (!D) - return; - - ConstDeclVisitor<ASTDumper>::Visit(D); - - for (const auto &A : D->attrs()) - Visit(A); - - if (const FullComment *Comment = - D->getASTContext().getLocalCommentForDeclUncached(D)) - Visit(Comment, Comment); - - // Decls within functions are visited by the body. - if (!isa<FunctionDecl>(*D) && !isa<ObjCMethodDecl>(*D)) { - if (const auto *DC = dyn_cast<DeclContext>(D)) - dumpDeclContext(DC); - } - }); -} - void ASTDumper::VisitTypedefDecl(const TypedefDecl *D) { Visit(D->getUnderlyingType()); } @@ -728,14 +782,6 @@ void ASTDumper::VisitObjCImplementationD Visit(I); } -void ASTDumper::Visit(const BlockDecl::Capture &C) { - NodeDumper.AddChild([=] { - NodeDumper.Visit(C); - if (C.hasCopyExpr()) - Visit(C.getCopyExpr()); - }); -} - void ASTDumper::VisitBlockDecl(const BlockDecl *D) { for (const auto &I : D->parameters()) Visit(I); @@ -749,26 +795,6 @@ void ASTDumper::VisitBlockDecl(const Blo // Stmt dumping methods. //===----------------------------------------------------------------------===// -void ASTDumper::Visit(const Stmt *S, StringRef Label) { - NodeDumper.AddChild(Label, [=] { - NodeDumper.Visit(S); - - if (!S) { - return; - } - - ConstStmtVisitor<ASTDumper>::Visit(S); - - // Some statements have custom mechanisms for dumping their children. - if (isa<DeclStmt>(S) || isa<GenericSelectionExpr>(S)) { - return; - } - - for (const Stmt *SubStmt : S->children()) - Visit(SubStmt); - }); -} - void ASTDumper::VisitDeclStmt(const DeclStmt *Node) { for (const auto &D : Node->decls()) Visit(D); @@ -791,14 +817,6 @@ void ASTDumper::VisitCapturedStmt(const // OpenMP dumping methods. //===----------------------------------------------------------------------===// -void ASTDumper::Visit(const OMPClause *C) { - NodeDumper.AddChild([=] { - NodeDumper.Visit(C); - for (const auto *S : C->children()) - Visit(S); - }); -} - void ASTDumper::VisitOMPExecutableDirective( const OMPExecutableDirective *Node) { for (const auto *C : Node->clauses()) @@ -825,15 +843,6 @@ void ASTDumper::VisitOpaqueValueExpr(con Visit(Source); } -void ASTDumper::Visit(const GenericSelectionExpr::ConstAssociation &A) { - NodeDumper.AddChild([=] { - NodeDumper.Visit(A); - if (const TypeSourceInfo *TSI = A.getTypeSourceInfo()) - Visit(TSI->getType()); - Visit(A.getAssociationExpr()); - }); -} - void ASTDumper::VisitGenericSelectionExpr(const GenericSelectionExpr *E) { Visit(E->getControllingExpr()); Visit(E->getControllingExpr()->getType()); // FIXME: remove @@ -863,23 +872,6 @@ void ASTDumper::VisitObjCAtCatchStmt(con } //===----------------------------------------------------------------------===// -// Comments -//===----------------------------------------------------------------------===// - -void ASTDumper::Visit(const Comment *C, const FullComment *FC) { - NodeDumper.AddChild([=] { - NodeDumper.Visit(C, FC); - if (!C) { - return; - } - ConstCommentVisitor<ASTDumper, void, const FullComment *>::visit(C, FC); - for (Comment::child_iterator I = C->child_begin(), E = C->child_end(); - I != E; ++I) - Visit(*I, FC); - }); -} - -//===----------------------------------------------------------------------===// // Type method implementations //===----------------------------------------------------------------------===// _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits