diff --git a/plugins/cpp/parser/src/clangastvisitor.h b/plugins/cpp/parser/src/clangastvisitor.h index 699d6334f..36bc58dff 100644 --- a/plugins/cpp/parser/src/clangastvisitor.h +++ b/plugins/cpp/parser/src/clangastvisitor.h @@ -141,6 +141,31 @@ class ClangASTVisitor : public clang::RecursiveASTVisitor return b; } + + bool TraverseCXXForRangeStmt (clang::CXXForRangeStmt *forRangeStmt){ + return Base::TraverseCXXForRangeStmt(forRangeStmt); + } + + bool VisitCXXForRangeStmt(clang::CXXForRangeStmt *forRangeStmt) + { + model::CppAstNodePtr astNode = std::make_shared(); + + clang::DeclRefExpr* declRefExpr = llvm::dyn_cast(forRangeStmt->getRangeInit()); + + clang::Stmt* stmt = llvm::dyn_cast(forRangeStmt->getRangeInit()); + + clang::CallExpr* callExpr = llvm::dyn_cast(stmt); + + if(declRefExpr){ //lvalue Var + VisitDeclRefExpr(declRefExpr); + } + + if(callExpr){ //lvalue Function + VisitCallExpr(callExpr); + } + return true; + } + bool TraverseFunctionDecl(clang::FunctionDecl* fd_) { _functionStack.push(std::make_shared());