logic: fixed case where reference to member recorded as usage instead of call
This commit is contained in:
@@ -400,6 +400,7 @@ DEF_TRAVERSE_TYPE_PTR(DeclRefExpr, {}, {})
|
||||
DEF_TRAVERSE_TYPE_PTR(CXXForRangeStmt, {}, {})
|
||||
DEF_TRAVERSE_TYPE(TemplateSpecializationTypeLoc, {}, {})
|
||||
DEF_TRAVERSE_TYPE_PTR(UnresolvedLookupExpr, {}, {})
|
||||
DEF_TRAVERSE_TYPE_PTR(UnresolvedMemberExpr, {}, {})
|
||||
|
||||
bool CxxAstVisitor::TraverseTemplateArgumentLoc(const clang::TemplateArgumentLoc& loc)
|
||||
{
|
||||
|
||||
@@ -87,6 +87,7 @@ public:
|
||||
virtual bool TraverseCXXForRangeStmt(clang::CXXForRangeStmt* s);
|
||||
virtual bool TraverseTemplateSpecializationTypeLoc(clang::TemplateSpecializationTypeLoc loc);
|
||||
virtual bool TraverseUnresolvedLookupExpr(clang::UnresolvedLookupExpr* s);
|
||||
virtual bool TraverseUnresolvedMemberExpr(clang::UnresolvedMemberExpr* S);
|
||||
virtual bool TraverseTemplateArgumentLoc(const clang::TemplateArgumentLoc& loc);
|
||||
virtual bool TraverseLambdaCapture(clang::LambdaExpr* lambdaExpr, const clang::LambdaCapture* capture, clang::Expr *Init);
|
||||
virtual bool TraverseBinComma(clang::BinaryOperator* s);
|
||||
|
||||
@@ -50,6 +50,8 @@ DEF_TRAVERSE_TYPE_PTR(CXXForRangeStmt)
|
||||
|
||||
DEF_TRAVERSE_TYPE_PTR(UnresolvedLookupExpr)
|
||||
|
||||
DEF_TRAVERSE_TYPE_PTR(UnresolvedMemberExpr)
|
||||
|
||||
virtual void beginTraverseCallCommonCallee() {}
|
||||
virtual void endTraverseCallCommonCallee() {}
|
||||
|
||||
|
||||
@@ -17,35 +17,35 @@ public:
|
||||
NameHierarchy getContextName(const size_t skip = 0);
|
||||
NameHierarchy getContextName(const NameHierarchy& fallback, const size_t skip = 0);
|
||||
|
||||
virtual void beginTraverseDecl(clang::Decl* d);
|
||||
virtual void endTraverseDecl(clang::Decl* d);
|
||||
virtual void beginTraverseDecl(clang::Decl* d) override;
|
||||
virtual void endTraverseDecl(clang::Decl* d) override;
|
||||
|
||||
virtual void beginTraverseTypeLoc(const clang::TypeLoc& tl);
|
||||
virtual void endTraverseTypeLoc(const clang::TypeLoc& tl);
|
||||
virtual void beginTraverseTypeLoc(const clang::TypeLoc& tl) override;
|
||||
virtual void endTraverseTypeLoc(const clang::TypeLoc& tl) override;
|
||||
|
||||
virtual void beginTraverseLambdaExpr(clang::LambdaExpr* s);
|
||||
virtual void endTraverseLambdaExpr(clang::LambdaExpr* s);
|
||||
virtual void beginTraverseLambdaExpr(clang::LambdaExpr* s) override;
|
||||
virtual void endTraverseLambdaExpr(clang::LambdaExpr* s) override;
|
||||
|
||||
virtual void beginTraverseFunctionDecl(clang::FunctionDecl* d);
|
||||
virtual void endTraverseFunctionDecl(clang::FunctionDecl* d);
|
||||
virtual void beginTraverseFunctionDecl(clang::FunctionDecl* d) override;
|
||||
virtual void endTraverseFunctionDecl(clang::FunctionDecl* d) override;
|
||||
|
||||
virtual void beginTraverseClassTemplateSpecializationDecl(clang::ClassTemplateSpecializationDecl *d);
|
||||
virtual void endTraverseClassTemplateSpecializationDecl(clang::ClassTemplateSpecializationDecl *d);
|
||||
virtual void beginTraverseClassTemplateSpecializationDecl(clang::ClassTemplateSpecializationDecl *d) override;
|
||||
virtual void endTraverseClassTemplateSpecializationDecl(clang::ClassTemplateSpecializationDecl *d) override;
|
||||
|
||||
virtual void beginTraverseClassTemplatePartialSpecializationDecl(clang::ClassTemplatePartialSpecializationDecl* d);
|
||||
virtual void endTraverseClassTemplatePartialSpecializationDecl(clang::ClassTemplatePartialSpecializationDecl* d);
|
||||
virtual void beginTraverseClassTemplatePartialSpecializationDecl(clang::ClassTemplatePartialSpecializationDecl* d) override;
|
||||
virtual void endTraverseClassTemplatePartialSpecializationDecl(clang::ClassTemplatePartialSpecializationDecl* d) override;
|
||||
|
||||
virtual void beginTraverseDeclRefExpr(clang::DeclRefExpr* s);
|
||||
virtual void endTraverseDeclRefExpr(clang::DeclRefExpr* s);
|
||||
virtual void beginTraverseDeclRefExpr(clang::DeclRefExpr* s) override;
|
||||
virtual void endTraverseDeclRefExpr(clang::DeclRefExpr* s) override;
|
||||
|
||||
virtual void beginTraverseTemplateSpecializationTypeLoc(const clang::TemplateSpecializationTypeLoc& loc);
|
||||
virtual void endTraverseTemplateSpecializationTypeLoc(const clang::TemplateSpecializationTypeLoc& loc);
|
||||
virtual void beginTraverseTemplateSpecializationTypeLoc(const clang::TemplateSpecializationTypeLoc& loc) override;
|
||||
virtual void endTraverseTemplateSpecializationTypeLoc(const clang::TemplateSpecializationTypeLoc& loc) override;
|
||||
|
||||
virtual void beginTraverseUnresolvedLookupExpr(clang::UnresolvedLookupExpr* e);
|
||||
virtual void endTraverseUnresolvedLookupExpr(clang::UnresolvedLookupExpr* e);
|
||||
virtual void beginTraverseUnresolvedLookupExpr(clang::UnresolvedLookupExpr* e) override;
|
||||
virtual void endTraverseUnresolvedLookupExpr(clang::UnresolvedLookupExpr* e) override;
|
||||
|
||||
virtual void beginTraverseTemplateArgumentLoc(const clang::TemplateArgumentLoc& loc);
|
||||
virtual void endTraverseTemplateArgumentLoc(const clang::TemplateArgumentLoc& loc);
|
||||
virtual void beginTraverseTemplateArgumentLoc(const clang::TemplateArgumentLoc& loc) override;
|
||||
virtual void endTraverseTemplateArgumentLoc(const clang::TemplateArgumentLoc& loc) override;
|
||||
|
||||
private:
|
||||
std::vector<std::shared_ptr<CxxContext>> m_contextStack;
|
||||
|
||||
@@ -116,6 +116,11 @@ void CxxAstVisitorComponentDeclRefKind::beginTraverseCXXTemporaryObjectExpr(clan
|
||||
m_childRefKind = REFERENCE_USAGE;
|
||||
}
|
||||
|
||||
void CxxAstVisitorComponentDeclRefKind::beginTraverseUnresolvedMemberExpr(clang::UnresolvedMemberExpr* s)
|
||||
{
|
||||
m_childRefKind = REFERENCE_USAGE;
|
||||
}
|
||||
|
||||
void CxxAstVisitorComponentDeclRefKind::visitVarDecl(clang::VarDecl* d)
|
||||
{
|
||||
m_childRefKind = REFERENCE_USAGE;
|
||||
|
||||
@@ -19,51 +19,53 @@ public:
|
||||
|
||||
ReferenceKind getReferenceKind() const;
|
||||
|
||||
virtual void beginTraverseDecl(clang::Decl* d);
|
||||
virtual void endTraverseDecl(clang::Decl* d);
|
||||
virtual void beginTraverseDecl(clang::Decl* d) override;
|
||||
virtual void endTraverseDecl(clang::Decl* d) override;
|
||||
|
||||
virtual void beginTraverseStmt(clang::Stmt* s);
|
||||
virtual void endTraverseStmt(clang::Stmt* s);
|
||||
virtual void beginTraverseStmt(clang::Stmt* s) override;
|
||||
virtual void endTraverseStmt(clang::Stmt* s) override;
|
||||
|
||||
virtual void beginTraverseType(const clang::QualType& t);
|
||||
virtual void endTraverseType(const clang::QualType& t);
|
||||
virtual void beginTraverseType(const clang::QualType& t) override;
|
||||
virtual void endTraverseType(const clang::QualType& t) override;
|
||||
|
||||
virtual void beginTraverseTypeLoc(const clang::TypeLoc& tl);
|
||||
virtual void endTraverseTypeLoc(const clang::TypeLoc& tl);
|
||||
virtual void beginTraverseTypeLoc(const clang::TypeLoc& tl) override;
|
||||
virtual void endTraverseTypeLoc(const clang::TypeLoc& tl) override;
|
||||
|
||||
virtual void beginTraverseCallCommonCallee();
|
||||
virtual void beginTraverseCallCommonCallee() override;
|
||||
|
||||
virtual void beginTraverseCallCommonArgument();
|
||||
virtual void beginTraverseCallCommonArgument() override;
|
||||
|
||||
virtual void beginTraverseBinCommaLhs();
|
||||
virtual void beginTraverseBinCommaLhs() override;
|
||||
|
||||
virtual void beginTraverseBinCommaRhs();
|
||||
virtual void beginTraverseBinCommaRhs() override;
|
||||
|
||||
virtual void beginTraverseAssignCommonLhs();
|
||||
virtual void beginTraverseAssignCommonLhs() override;
|
||||
|
||||
virtual void beginTraverseAssignCommonRhs();
|
||||
virtual void beginTraverseAssignCommonRhs() override;
|
||||
|
||||
virtual void beginTraverseConstructorInitializer(clang::CXXCtorInitializer* init);
|
||||
virtual void beginTraverseConstructorInitializer(clang::CXXCtorInitializer* init) override;
|
||||
|
||||
virtual void beginTraverseCXXTemporaryObjectExpr(clang::CXXTemporaryObjectExpr* s);
|
||||
virtual void beginTraverseCXXTemporaryObjectExpr(clang::CXXTemporaryObjectExpr* s) override;
|
||||
|
||||
virtual void visitVarDecl(clang::VarDecl* d);
|
||||
virtual void beginTraverseUnresolvedMemberExpr(clang::UnresolvedMemberExpr* s) override;
|
||||
|
||||
virtual void visitCastExpr(clang::CastExpr* s);
|
||||
virtual void visitVarDecl(clang::VarDecl* d) override;
|
||||
|
||||
virtual void visitUnaryAddrOf(clang::UnaryOperator* s);
|
||||
virtual void visitCastExpr(clang::CastExpr* s) override;
|
||||
|
||||
virtual void visitUnaryDeref(clang::UnaryOperator* s);
|
||||
virtual void visitUnaryAddrOf(clang::UnaryOperator* s) override;
|
||||
|
||||
virtual void visitDeclStmt(clang::DeclStmt* s);
|
||||
virtual void visitUnaryDeref(clang::UnaryOperator* s) override;
|
||||
|
||||
virtual void visitReturnStmt(clang::ReturnStmt* s);
|
||||
virtual void visitDeclStmt(clang::DeclStmt* s) override;
|
||||
|
||||
virtual void visitInitListExpr(clang::InitListExpr* s);
|
||||
virtual void visitReturnStmt(clang::ReturnStmt* s) override;
|
||||
|
||||
virtual void visitMemberExpr(clang::MemberExpr* s);
|
||||
virtual void visitInitListExpr(clang::InitListExpr* s) override;
|
||||
|
||||
virtual void visitCXXDependentScopeMemberExpr(clang::CXXDependentScopeMemberExpr* s);
|
||||
virtual void visitMemberExpr(clang::MemberExpr* s) override;
|
||||
|
||||
virtual void visitCXXDependentScopeMemberExpr(clang::CXXDependentScopeMemberExpr* s) override;
|
||||
|
||||
private:
|
||||
void saveAll();
|
||||
|
||||
@@ -12,11 +12,11 @@ public:
|
||||
|
||||
bool shouldVisitImplicitCode() const;
|
||||
|
||||
virtual void beginTraverseDecl(clang::Decl* d);
|
||||
virtual void endTraverseDecl(clang::Decl* d);
|
||||
virtual void beginTraverseDecl(clang::Decl* d) override;
|
||||
virtual void endTraverseDecl(clang::Decl* d) override;
|
||||
|
||||
virtual void beginTraverseCXXForRangeStmt(clang::CXXForRangeStmt* s);
|
||||
virtual void endTraverseCXXForRangeStmt(clang::CXXForRangeStmt* s);
|
||||
virtual void beginTraverseCXXForRangeStmt(clang::CXXForRangeStmt* s) override;
|
||||
virtual void endTraverseCXXForRangeStmt(clang::CXXForRangeStmt* s) override;
|
||||
|
||||
private:
|
||||
std::vector<bool> m_stack;
|
||||
|
||||
@@ -15,36 +15,36 @@ public:
|
||||
CxxAstVisitorComponentIndexer(CxxAstVisitor* astVisitor, clang::ASTContext* astContext, std::shared_ptr<ParserClient> client, std::shared_ptr<FileRegister> fileRegister);
|
||||
virtual ~CxxAstVisitorComponentIndexer();
|
||||
|
||||
virtual void beginTraverseNestedNameSpecifierLoc(const clang::NestedNameSpecifierLoc& loc);
|
||||
virtual void beginTraverseTemplateArgumentLoc(const clang::TemplateArgumentLoc& loc);
|
||||
virtual void beginTraverseLambdaCapture(clang::LambdaExpr *lambdaExpr, const clang::LambdaCapture *capture);
|
||||
virtual void beginTraverseNestedNameSpecifierLoc(const clang::NestedNameSpecifierLoc& loc) override;
|
||||
virtual void beginTraverseTemplateArgumentLoc(const clang::TemplateArgumentLoc& loc) override;
|
||||
virtual void beginTraverseLambdaCapture(clang::LambdaExpr *lambdaExpr, const clang::LambdaCapture *capture) override;
|
||||
|
||||
virtual void visitTagDecl(clang::TagDecl* d);
|
||||
virtual void visitClassTemplateSpecializationDecl(clang::ClassTemplateSpecializationDecl* d);
|
||||
virtual void visitVarDecl(clang::VarDecl* d);
|
||||
virtual void visitVarTemplateSpecializationDecl(clang::VarTemplateSpecializationDecl* d);
|
||||
virtual void visitFieldDecl(clang::FieldDecl* d);
|
||||
virtual void visitFunctionDecl(clang::FunctionDecl* d);
|
||||
virtual void visitCXXMethodDecl(clang::CXXMethodDecl* d);
|
||||
virtual void visitEnumConstantDecl(clang::EnumConstantDecl* d);
|
||||
virtual void visitNamespaceDecl(clang::NamespaceDecl* d);
|
||||
virtual void visitNamespaceAliasDecl(clang::NamespaceAliasDecl* d);
|
||||
virtual void visitTypedefDecl(clang::TypedefDecl* d);
|
||||
virtual void visitTypeAliasDecl(clang::TypeAliasDecl* d);
|
||||
virtual void visitUsingDirectiveDecl(clang::UsingDirectiveDecl* d);
|
||||
virtual void visitUsingDecl(clang::UsingDecl* d);
|
||||
virtual void visitNonTypeTemplateParmDecl(clang::NonTypeTemplateParmDecl* d);
|
||||
virtual void visitTemplateTypeParmDecl(clang::TemplateTypeParmDecl* d);
|
||||
virtual void visitTemplateTemplateParmDecl(clang::TemplateTemplateParmDecl* d);
|
||||
virtual void visitTagDecl(clang::TagDecl* d) override;
|
||||
virtual void visitClassTemplateSpecializationDecl(clang::ClassTemplateSpecializationDecl* d) override;
|
||||
virtual void visitVarDecl(clang::VarDecl* d) override;
|
||||
virtual void visitVarTemplateSpecializationDecl(clang::VarTemplateSpecializationDecl* d) override;
|
||||
virtual void visitFieldDecl(clang::FieldDecl* d) override;
|
||||
virtual void visitFunctionDecl(clang::FunctionDecl* d) override;
|
||||
virtual void visitCXXMethodDecl(clang::CXXMethodDecl* d) override;
|
||||
virtual void visitEnumConstantDecl(clang::EnumConstantDecl* d) override;
|
||||
virtual void visitNamespaceDecl(clang::NamespaceDecl* d) override;
|
||||
virtual void visitNamespaceAliasDecl(clang::NamespaceAliasDecl* d) override;
|
||||
virtual void visitTypedefDecl(clang::TypedefDecl* d) override;
|
||||
virtual void visitTypeAliasDecl(clang::TypeAliasDecl* d) override;
|
||||
virtual void visitUsingDirectiveDecl(clang::UsingDirectiveDecl* d) override;
|
||||
virtual void visitUsingDecl(clang::UsingDecl* d) override;
|
||||
virtual void visitNonTypeTemplateParmDecl(clang::NonTypeTemplateParmDecl* d) override;
|
||||
virtual void visitTemplateTypeParmDecl(clang::TemplateTypeParmDecl* d) override;
|
||||
virtual void visitTemplateTemplateParmDecl(clang::TemplateTemplateParmDecl* d) override;
|
||||
|
||||
virtual void visitTypeLoc(clang::TypeLoc tl);
|
||||
virtual void visitTypeLoc(clang::TypeLoc tl) override;
|
||||
|
||||
virtual void visitDeclRefExpr(clang::DeclRefExpr* s);
|
||||
virtual void visitMemberExpr(clang::MemberExpr* s);
|
||||
virtual void visitCXXConstructExpr(clang::CXXConstructExpr* s);
|
||||
virtual void visitLambdaExpr(clang::LambdaExpr* s);
|
||||
virtual void visitDeclRefExpr(clang::DeclRefExpr* s) override;
|
||||
virtual void visitMemberExpr(clang::MemberExpr* s) override;
|
||||
virtual void visitCXXConstructExpr(clang::CXXConstructExpr* s) override;
|
||||
virtual void visitLambdaExpr(clang::LambdaExpr* s) override;
|
||||
|
||||
virtual void visitConstructorInitializer(clang::CXXCtorInitializer* init);
|
||||
virtual void visitConstructorInitializer(clang::CXXCtorInitializer* init) override;
|
||||
|
||||
private:
|
||||
struct FileIdHash
|
||||
|
||||
@@ -19,14 +19,14 @@ public:
|
||||
|
||||
ReferenceKind getReferenceKind() const;
|
||||
|
||||
virtual void beginTraverseCXXBaseSpecifier();
|
||||
virtual void endTraverseCXXBaseSpecifier();
|
||||
virtual void beginTraverseCXXBaseSpecifier() override;
|
||||
virtual void endTraverseCXXBaseSpecifier() override;
|
||||
|
||||
virtual void beginTraverseTemplateDefaultArgumentLoc();
|
||||
virtual void endTraverseTemplateDefaultArgumentLoc();
|
||||
virtual void beginTraverseTemplateDefaultArgumentLoc() override;
|
||||
virtual void endTraverseTemplateDefaultArgumentLoc() override;
|
||||
|
||||
virtual void beginTraverseTemplateArgumentLoc(const clang::TemplateArgumentLoc& loc);
|
||||
virtual void endTraverseTemplateArgumentLoc(const clang::TemplateArgumentLoc& loc);
|
||||
virtual void beginTraverseTemplateArgumentLoc(const clang::TemplateArgumentLoc& loc) override;
|
||||
virtual void endTraverseTemplateArgumentLoc(const clang::TemplateArgumentLoc& loc) override;
|
||||
|
||||
private:
|
||||
std::vector<ReferenceKind> m_refKindStack;
|
||||
|
||||
Reference in New Issue
Block a user