data: parse variable usage

* Implemented functions for parsing usages of fields and global variables in ASTBodyVisitor and ASTVisitor.
* Storage adds TokenLocatons and Edges for usages.
* Added tests for parsing usage of fields and global variables.

fortune cookie message = Fame, riches and love are yours for the taking.
This commit is contained in:
malte_langkabel
2014-07-17 15:09:53 +02:00
parent 4578c109ec
commit ad5056354d
12 changed files with 180 additions and 12 deletions
@@ -39,3 +39,21 @@ void ASTBodyVisitor::VisitCXXConstructExpr(clang::CXXConstructExpr* expr)
VisitStmt(expr);
}
void ASTBodyVisitor::VisitMemberExpr(clang::make_ptr<clang::MemberExpr>::type expr)
{
if (expr->getMemberDecl()->getKind() == clang::Decl::Kind::Field)
{
m_client->VisitFieldUsageExprInDeclBody(m_parentDecl, expr);
}
VisitStmt(expr);
}
void ASTBodyVisitor::VisitDeclRefExpr(clang::make_ptr<clang::DeclRefExpr>::type expr)
{
if (expr->getDecl()->getKind() == clang::Decl::Var && expr->getDecl()->isDefinedOutsideFunctionOrMethod())
{
m_client->VisitGlobalVariableUsageExprInDeclBody(m_parentDecl, expr);
}
VisitStmt(expr);
}