Fixed handling of nested classes in relative namespaces

This commit is contained in:
Bartek Kryza
2022-09-10 19:28:19 +02:00
parent ae1735855a
commit f93cbe8ff2
5 changed files with 21 additions and 5 deletions

View File

@@ -70,7 +70,7 @@ public:
std::string full_name(bool relative = true) const override;
std::string full_name_no_ns() const;
std::string full_name_no_ns() const override;
bool is_abstract() const;

View File

@@ -176,7 +176,7 @@ bool translation_unit_visitor::VisitEnumDecl(clang::EnumDecl *enm)
assert(parent_class);
e.set_namespace(ns);
e.set_name(parent_class.value().full_name(true) + "##" +
e.set_name(parent_class.value().full_name_no_ns() + "##" +
enm->getNameAsString());
e.set_id(common::to_id(e.full_name(false)));
e.add_relationship({relationship_t::kContainment, *id_opt});
@@ -462,19 +462,19 @@ std::unique_ptr<class_> translation_unit_visitor::create_class_declaration(
const auto &[label, hint, access] =
anonymous_struct_relationships_[cls->getID()];
c.set_name(parent_class.value().full_name(true) + "##" +
c.set_name(parent_class.value().full_name_no_ns() + "##" +
fmt::format("({})", label));
parent_class.value().add_relationship(
{hint, common::to_id(c.full_name(false)), access, label});
}
else
c.set_name(parent_class.value().full_name(true) + "##" +
c.set_name(parent_class.value().full_name_no_ns() + "##" +
fmt::format(
"(anonymous_{})", std::to_string(cls->getID())));
}
else {
c.set_name(parent_class.value().full_name(true) + "##" +
c.set_name(parent_class.value().full_name_no_ns() + "##" +
cls->getNameAsString());
}

View File

@@ -60,6 +60,8 @@ public:
return name_and_ns();
}
virtual std::string full_name_no_ns() const { return name(); }
void set_using_namespaces(const namespace_ &un);
const namespace_ &using_namespace() const;