File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -644,25 +644,28 @@ clang::Expr *GetCallObject(clang::CallExpr *expr) {
644644 return nullptr ;
645645}
646646
647- std::unordered_set<const clang::ValueDecl *>
648- GetAllVars (const clang::Stmt *stmt) {
649- std::unordered_set<const clang::ValueDecl *> vars;
647+ static void GetAllVarsImpl (const clang::Stmt *stmt,
648+ std::unordered_set<const clang::ValueDecl *> &vars) {
650649 if (!stmt) {
651- return vars ;
650+ return ;
652651 }
653652
654653 if (auto *decl_ref = clang::dyn_cast<clang::DeclRefExpr>(stmt)) {
655654 vars.insert (decl_ref->getDecl ());
656655 } else if (auto *member = clang::dyn_cast<clang::MemberExpr>(stmt)) {
657656 vars.insert (member->getMemberDecl ());
658- auto child_vars = GetAllVars (member->getBase ());
659- vars.insert (child_vars.begin (), child_vars.end ());
657+ GetAllVarsImpl (member->getBase (), vars);
660658 }
661659
662660 for (auto *child : stmt->children ()) {
663- auto child_vars = GetAllVars (child);
664- vars.insert (child_vars.begin (), child_vars.end ());
661+ GetAllVarsImpl (child, vars);
665662 }
663+ }
664+
665+ std::unordered_set<const clang::ValueDecl *>
666+ GetAllVars (const clang::Stmt *stmt) {
667+ std::unordered_set<const clang::ValueDecl *> vars;
668+ GetAllVarsImpl (stmt, vars);
666669 return vars;
667670}
668671
You can’t perform that action at this time.
0 commit comments