Fixed dependency generation for template specializations

This commit is contained in:
Bartek Kryza
2021-03-20 19:54:04 +01:00
parent 79ad29164c
commit 90952d8c3c
9 changed files with 91 additions and 29 deletions

View File

@@ -38,5 +38,13 @@ std::string type::instantiation_template() const
return cur.fully_qualified();
}
bool type::is_template_instantiation() const
{
auto s = spelling();
auto it = s.find('<');
return it != std::string::npos &&
referenced().type_declaration().kind() != CXCursor_ClassTemplate;
}
}
}

View File

@@ -205,12 +205,7 @@ public:
return clang_Type_getCXXRefQualifier(m_type);
}
bool is_template_instantiation() const
{
auto s = spelling();
auto it = s.find('<');
return it != std::string::npos;
}
bool is_template_instantiation() const;
std::string instantiation_template() const;
@@ -221,18 +216,7 @@ public:
*/
std::string unqualified() const
{
auto toks = clanguml::util::split(spelling(), " ");
const std::vector<std::string> qualifiers = {
"static", "const", "volatile", "register", "mutable"};
toks.erase(toks.begin(),
std::find_if(
toks.begin(), toks.end(), [&qualifiers](const auto &t) {
return std::count(
qualifiers.begin(), qualifiers.end(), t) == 0;
}));
return fmt::format("{}", fmt::join(toks, " "));
return clanguml::util::unqualify(spelling());
}
private: