Fixed handling of template function specialization arguments

This commit is contained in:
Bartek Kryza
2023-04-02 19:40:05 +02:00
parent a55845e29e
commit 75eaef3662
9 changed files with 276 additions and 28 deletions

View File

@@ -29,6 +29,8 @@ sink(signal_handler<Ret(Args...), A> &)
signal_handler<void(int), bool> int_handler;
sink sink1{int_handler};
struct R {
sink<signal_handler<void(int), bool>> sink1{int_handler};
};
} // namespace clanguml::t00044

View File

@@ -35,10 +35,28 @@ TEST_CASE("t00044", "[test-case][class]")
REQUIRE_THAT(puml, StartsWith("@startuml"));
REQUIRE_THAT(puml, EndsWith("@enduml\n"));
// TODO:
// Check dependants filter<void(int), bool>
// REQUIRE_THAT(puml, IsClassTemplate("signal_handler",
// "Ret,Args...,A"));
REQUIRE_THAT(puml, IsClassTemplate("sink", "T"));
REQUIRE_THAT(puml, IsClassTemplate("signal_handler", "T,A"));
REQUIRE_THAT(puml, IsClassTemplate("signal_handler", "Ret(Args...),A"));
REQUIRE_THAT(puml, IsClassTemplate("signal_handler", "void(int),bool"));
REQUIRE_THAT(puml,
IsClassTemplate(
"sink", "clanguml::t00044::signal_handler<Ret(Args...),A>"));
REQUIRE_THAT(puml,
IsInstantiation(_A("sink<T>"),
_A("sink<clanguml::t00044::signal_handler<Ret(Args...),A>>")));
REQUIRE_THAT(puml, IsClassTemplate("signal_handler", "T,A"));
REQUIRE_THAT(puml,
IsInstantiation(_A("signal_handler<T,A>"),
_A("signal_handler<Ret(Args...),A>")));
REQUIRE_THAT(puml,
IsInstantiation(_A("signal_handler<Ret(Args...),A>"),
_A("signal_handler<void(int),bool>")));
save_puml(
config.output_directory() + "/" + diagram->name + ".puml", puml);