Skip to content

Commit 4e7039e

Browse files
committed
Delete the implicit member definer
1 parent abecbe5 commit 4e7039e

1 file changed

Lines changed: 13 additions & 28 deletions

File tree

‎cpp2rust/converter/rules/rules_loader.cpp‎

Lines changed: 13 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -30,29 +30,10 @@ namespace fs = std::filesystem;
3030

3131
namespace {
3232

33-
class ImplicitMemberDefiner
34-
: public clang::RecursiveASTVisitor<ImplicitMemberDefiner> {
33+
class RuleUsageCollector
34+
: public clang::RecursiveASTVisitor<RuleUsageCollector> {
3535
public:
36-
explicit ImplicitMemberDefiner(clang::Sema &sema) : sema_(sema) {}
37-
38-
bool shouldVisitTemplateInstantiations() const { return true; }
39-
40-
bool VisitCXXRecordDecl(clang::CXXRecordDecl *decl) {
41-
if (decl->isThisDeclarationADefinition() && !decl->isDependentType() &&
42-
IsConvertibleCXXRecordDecl(decl) &&
43-
(decl->isStruct() || decl->isClass()) && !decl->isAbstract()) {
44-
DefineImplicitMembers(sema_, decl);
45-
}
46-
return true;
47-
}
48-
49-
private:
50-
clang::Sema &sema_;
51-
};
52-
53-
class KeyCollector : public clang::RecursiveASTVisitor<KeyCollector> {
54-
public:
55-
KeyCollector(clang::Sema &sema, std::set<fs::path> &paths)
36+
RuleUsageCollector(clang::Sema &sema, std::set<fs::path> &paths)
5637
: ctx_(sema.Context), sema_(sema), paths_(paths) {}
5738

5839
bool shouldVisitTemplateInstantiations() const { return true; }
@@ -67,6 +48,15 @@ class KeyCollector : public clang::RecursiveASTVisitor<KeyCollector> {
6748
return RecursiveASTVisitor::TraverseDecl(decl);
6849
}
6950

51+
bool VisitCXXRecordDecl(clang::CXXRecordDecl *decl) {
52+
if (decl->isThisDeclarationADefinition() && !decl->isDependentType() &&
53+
IsConvertibleCXXRecordDecl(decl) &&
54+
(decl->isStruct() || decl->isClass()) && !decl->isAbstract()) {
55+
DefineImplicitMembers(sema_, decl);
56+
}
57+
return true;
58+
}
59+
7060
bool VisitExpr(clang::Expr *expr) {
7161
if (expr->isTypeDependent() || expr->isValueDependent()) {
7262
return true;
@@ -440,12 +430,7 @@ void PragmaHandler::HandlePragma(clang::Preprocessor &PP,
440430
}
441431
ctx.setTraversalScope(user_decls);
442432
std::set<fs::path> selected;
443-
ImplicitMemberDefiner definer(CI_.getSema());
444-
for (auto *decl : user_decls) {
445-
definer.TraverseDecl(decl);
446-
}
447-
CI_.getSema().PerformPendingInstantiations();
448-
KeyCollector collector(CI_.getSema(), selected);
433+
RuleUsageCollector collector(CI_.getSema(), selected);
449434
for (auto *decl : user_decls) {
450435
collector.TraverseDecl(decl);
451436
}

0 commit comments

Comments
 (0)