clang 20.0.0git
Public Member Functions | List of all members
clang::dataflow::AnalysisASTVisitor Class Reference

Specialization of RecursiveASTVisitor that visits those nodes that are relevant to the dataflow analysis; generally, these are the ones that also appear in the CFG. More...

#include "clang/Analysis/FlowSensitive/ASTOps.h"

Inheritance diagram for clang::dataflow::AnalysisASTVisitor:
Inheritance graph
[legend]

Public Member Functions

 AnalysisASTVisitor ()
 
bool TraverseDecl (Decl *D) override
 Recursively visit a declaration, by dispatching to Traverse*Decl() based on the argument's dynamic type.
 
bool TraverseDecltypeTypeLoc (DecltypeTypeLoc) override
 
bool TraverseTypeOfExprTypeLoc (TypeOfExprTypeLoc) override
 
bool TraverseCXXTypeidExpr (CXXTypeidExpr *TIE) override
 
bool TraverseUnaryExprOrTypeTraitExpr (UnaryExprOrTypeTraitExpr *) override
 
bool TraverseBindingDecl (BindingDecl *BD) override
 
- Public Member Functions inherited from clang::DynamicRecursiveASTVisitor
virtual void anchor ()
 
virtual ~DynamicRecursiveASTVisitor ()=default
 
virtual bool TraverseAST (ASTContext &AST)
 Recursively visits an entire AST, starting from the TranslationUnitDecl.
 
virtual bool TraverseAttr (Attr *At)
 Recursively visit an attribute, by dispatching to Traverse*Attr() based on the argument's dynamic type.
 
virtual bool TraverseConstructorInitializer (CXXCtorInitializer *Init)
 Recursively visit a constructor initializer.
 
virtual bool TraverseCXXBaseSpecifier (const CXXBaseSpecifier &Base)
 Recursively visit a base specifier.
 
virtual bool TraverseDecl (Decl *D)
 Recursively visit a declaration, by dispatching to Traverse*Decl() based on the argument's dynamic type.
 
virtual bool TraverseDeclarationNameInfo (DeclarationNameInfo NameInfo)
 Recursively visit a name with its location information.
 
virtual bool TraverseLambdaCapture (LambdaExpr *LE, const LambdaCapture *C, Expr *Init)
 Recursively visit a lambda capture.
 
virtual bool TraverseNestedNameSpecifier (NestedNameSpecifier *NNS)
 Recursively visit a C++ nested-name-specifier.
 
virtual bool TraverseNestedNameSpecifierLoc (NestedNameSpecifierLoc NNS)
 Recursively visit a C++ nested-name-specifier with location information.
 
virtual bool TraverseStmt (Stmt *S)
 Recursively visit a statement or expression, by dispatching to Traverse*() based on the argument's dynamic type.
 
virtual bool TraverseTemplateArgument (const TemplateArgument &Arg)
 Recursively visit a template argument and dispatch to the appropriate method for the argument type.
 
virtual bool TraverseTemplateArgumentLoc (const TemplateArgumentLoc &ArgLoc)
 Recursively visit a template argument location and dispatch to the appropriate method for the argument type.
 
bool TraverseTemplateArguments (ArrayRef< TemplateArgument > Args)
 Recursively visit a set of template arguments.
 
virtual bool TraverseTemplateName (TemplateName Template)
 Recursively visit a template name and dispatch to the appropriate method.
 
virtual bool TraverseType (QualType T)
 Recursively visit a type, by dispatching to Traverse*Type() based on the argument's getTypeClass() property.
 
virtual bool TraverseTypeLoc (TypeLoc TL)
 Recursively visit a type with location, by dispatching to Traverse*TypeLoc() based on the argument type's getTypeClass() property.
 
virtual bool TraverseObjCProtocolLoc (ObjCProtocolLoc ProtocolLoc)
 Recursively visit an Objective-C protocol reference with location information.
 
virtual bool TraverseTypeConstraint (const TypeConstraint *C)
 Traverse a concept (requirement).
 
virtual bool TraverseConceptRequirement (concepts::Requirement *R)
 
virtual bool TraverseConceptTypeRequirement (concepts::TypeRequirement *R)
 
virtual bool TraverseConceptExprRequirement (concepts::ExprRequirement *R)
 
virtual bool TraverseConceptNestedRequirement (concepts::NestedRequirement *R)
 
virtual bool TraverseConceptReference (ConceptReference *CR)
 
virtual bool VisitConceptReference (ConceptReference *CR)
 
virtual bool VisitAttr (Attr *A)
 Visit a node.
 
virtual bool VisitDecl (Decl *D)
 
virtual bool VisitStmt (Stmt *S)
 
virtual bool VisitType (Type *T)
 
virtual bool VisitTypeLoc (TypeLoc TL)
 
bool WalkUpFromDecl (Decl *D)
 Walk up from a node.
 
bool WalkUpFromStmt (Stmt *S)
 
bool WalkUpFromType (Type *T)
 
bool WalkUpFromTypeLoc (TypeLoc TL)
 
virtual bool dataTraverseStmtPre (Stmt *S)
 Invoked before visiting a statement or expression via data recursion.
 
virtual bool dataTraverseStmtPost (Stmt *S)
 Invoked after visiting a statement or expression via data recursion.
 
virtual bool dataTraverseNode (Stmt *S)
 

Additional Inherited Members

- Public Attributes inherited from clang::DynamicRecursiveASTVisitor
bool ShouldVisitTemplateInstantiations = false
 Whether this visitor should recurse into template instantiations.
 
bool ShouldWalkTypesOfTypeLocs = true
 Whether this visitor should recurse into the types of TypeLocs.
 
bool ShouldVisitImplicitCode = false
 Whether this visitor should recurse into implicit code, e.g.
 
bool ShouldVisitLambdaBody = true
 Whether this visitor should recurse into lambda body.
 
- Protected Member Functions inherited from clang::DynamicRecursiveASTVisitor
 DynamicRecursiveASTVisitor ()=default
 
 DynamicRecursiveASTVisitor (DynamicRecursiveASTVisitor &&)=default
 
 DynamicRecursiveASTVisitor (const DynamicRecursiveASTVisitor &)=default
 
DynamicRecursiveASTVisitoroperator= (DynamicRecursiveASTVisitor &&)=default
 
DynamicRecursiveASTVisitoroperator= (const DynamicRecursiveASTVisitor &)=default
 

Detailed Description

Specialization of RecursiveASTVisitor that visits those nodes that are relevant to the dataflow analysis; generally, these are the ones that also appear in the CFG.

To start the traversal, call TraverseStmt() on the statement or body of the function to analyze. Don't call TraverseDecl() on the function itself; this won't work as TraverseDecl() contains code to avoid traversing nested functions.

Definition at line 92 of file ASTOps.h.

Constructor & Destructor Documentation

◆ AnalysisASTVisitor()

clang::dataflow::AnalysisASTVisitor::AnalysisASTVisitor ( )
inline

Member Function Documentation

◆ TraverseBindingDecl()

bool clang::dataflow::AnalysisASTVisitor::TraverseBindingDecl ( BindingDecl BD)
inlineoverride

Definition at line 126 of file ASTOps.h.

References clang::BindingDecl::getHoldingVar(), and TraverseDecl().

◆ TraverseCXXTypeidExpr()

bool clang::dataflow::AnalysisASTVisitor::TraverseCXXTypeidExpr ( CXXTypeidExpr TIE)
inlineoverride

Definition at line 117 of file ASTOps.h.

References clang::CXXTypeidExpr::isPotentiallyEvaluated().

◆ TraverseDecl()

bool clang::dataflow::AnalysisASTVisitor::TraverseDecl ( Decl D)
inlineoverridevirtual

Recursively visit a declaration, by dispatching to Traverse*Decl() based on the argument's dynamic type.

Returns
false if the visitation was terminated early, true otherwise (including when the argument is NULL).

Reimplemented from clang::DynamicRecursiveASTVisitor.

Definition at line 99 of file ASTOps.h.

References D, and clang::DynamicRecursiveASTVisitor::TraverseDecl().

Referenced by TraverseBindingDecl().

◆ TraverseDecltypeTypeLoc()

bool clang::dataflow::AnalysisASTVisitor::TraverseDecltypeTypeLoc ( DecltypeTypeLoc  )
inlineoverride

Definition at line 115 of file ASTOps.h.

◆ TraverseTypeOfExprTypeLoc()

bool clang::dataflow::AnalysisASTVisitor::TraverseTypeOfExprTypeLoc ( TypeOfExprTypeLoc  )
inlineoverride

Definition at line 116 of file ASTOps.h.

◆ TraverseUnaryExprOrTypeTraitExpr()

bool clang::dataflow::AnalysisASTVisitor::TraverseUnaryExprOrTypeTraitExpr ( UnaryExprOrTypeTraitExpr )
inlineoverride

Definition at line 122 of file ASTOps.h.


The documentation for this class was generated from the following file: