Added rendering of template specialization members

This commit is contained in:
Bartek Kryza
2023-05-04 22:20:20 +02:00
parent 7277320199
commit 3eb1c476b3
3 changed files with 14 additions and 1 deletions

View File

@@ -1,5 +1,6 @@
# CHANGELOG
* Added rendering of template specialization fields and methods (#128)
* Improved template specialization/instantiation matching based on deduced
context

View File

@@ -206,10 +206,14 @@ bool translation_unit_visitor::VisitClassTemplateSpecializationDecl(
process_template_specialization_children(cls, template_specialization);
}
if (cls->hasDefinition())
if (cls->hasDefinition()) {
// Process template specialization bases
process_class_bases(cls, template_specialization);
// Process class child entities
process_class_children(cls, template_specialization);
}
if (!template_specialization.template_specialization_found()) {
// Only do this if we haven't found a bettern specialization during
// construction of the template specialization

View File

@@ -55,6 +55,14 @@ TEST_CASE("t00062", "[test-case][class]")
REQUIRE_THAT(puml, IsClassTemplate("A", "C<T>"));
REQUIRE_THAT(puml, IsClassTemplate("A", "C<T,Args...>"));
REQUIRE_THAT(puml, (IsField<Public>("u", "U &")));
REQUIRE_THAT(puml, (IsField<Public>("u", "U **")));
REQUIRE_THAT(puml, (IsField<Public>("u", "U ***")));
REQUIRE_THAT(puml, (IsField<Public>("u", "U &&")));
REQUIRE_THAT(puml, (IsField<Public>("u", "const U &")));
REQUIRE_THAT(puml, (IsField<Public>("c", "C &")));
REQUIRE_THAT(puml, (IsField<Public>("m", "M C::*")));
REQUIRE_THAT(puml, IsInstantiation(_A("A<T>"), _A("A<U &>")));
REQUIRE_THAT(puml, IsInstantiation(_A("A<T>"), _A("A<U &&>")));
REQUIRE_THAT(puml, IsInstantiation(_A("A<T>"), _A("A<M C::*>")));