Skip to content

Commit 8ff920d

Browse files
committed
Pass vars to recursive GetAllVarsImpl
1 parent 94e8348 commit 8ff920d

1 file changed

Lines changed: 11 additions & 8 deletions

File tree

cpp2rust/converter/converter_lib.cpp

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff 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

0 commit comments

Comments
 (0)