Fixed namespace resolution of base classes

This commit is contained in:
Bartek Kryza
2022-03-17 00:14:48 +01:00
parent 23cdcc8ee4
commit 331f3310ce
2 changed files with 9 additions and 4 deletions

View File

@@ -547,7 +547,10 @@ void translation_unit_visitor::process_class_bases(
{ {
for (auto &base : cls.bases()) { for (auto &base : cls.bases()) {
class_parent cp; class_parent cp;
cp.set_name(cx::util::fully_prefixed(ctx.get_namespace(), base)); auto base_ns = common::model::namespace_{
cx::util::ns(base.type(), ctx.entity_index())};
base_ns = base_ns | base.name();
cp.set_name(base_ns.to_string());
cp.is_virtual(base.is_virtual()); cp.is_virtual(base.is_virtual());
switch (base.access_specifier()) { switch (base.access_specifier()) {

View File

@@ -60,9 +60,6 @@ TEST_CASE("t00038", "[test-case][class]")
_A("map<std::map<key_t,std::vector<std::integral_constant<property_" _A("map<std::map<key_t,std::vector<std::integral_constant<property_"
"t,property_t::property_c>>>>"))); "t,property_t::property_c>>>>")));
// TODO: Add parsing of unexposed template arguments to infer
// additional relationships
REQUIRE_THAT(puml, REQUIRE_THAT(puml,
IsDependency(_A("map<std::integral_constant<property_t,property_t::" IsDependency(_A("map<std::integral_constant<property_t,property_t::"
"property_a>>"), "property_a>>"),
@@ -89,6 +86,11 @@ TEST_CASE("t00038", "[test-case][class]")
"thirdparty::ns1::color_t::red>>"), "thirdparty::ns1::color_t::red>>"),
_A("thirdparty::ns1::color_t"))); _A("thirdparty::ns1::color_t")));
REQUIRE_THAT(puml,
IsBaseClass(_A("thirdparty::ns1::E"),
_A("map<std::integral_constant<thirdparty::ns1::color_t,"
"thirdparty::ns1::color_t::red>>")));
save_puml( save_puml(
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml); "./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
} }