diff --git a/src/class_diagram/visitor/translation_unit_visitor.cc b/src/class_diagram/visitor/translation_unit_visitor.cc index f60b474a..9752286b 100644 --- a/src/class_diagram/visitor/translation_unit_visitor.cc +++ b/src/class_diagram/visitor/translation_unit_visitor.cc @@ -2597,7 +2597,8 @@ translation_unit_visitor::get_template_argument_from_type_parameter_string( { if (const auto *template_decl = llvm::dyn_cast(decl); - template_decl && return_type_name.find("type-parameter-") == 0) { + template_decl != nullptr && + return_type_name.find("type-parameter-") == 0) { [[maybe_unused]] const auto [depth, index] = common::extract_template_parameter_index(return_type_name); diff --git a/src/common/model/template_parameter.cc b/src/common/model/template_parameter.cc index b2abc965..9c9dc22b 100644 --- a/src/common/model/template_parameter.cc +++ b/src/common/model/template_parameter.cc @@ -113,14 +113,19 @@ int template_parameter::calculate_specialization_match( { int res{0}; - if (base_template_parameter.type().has_value() && type().has_value() && + auto maybe_base_template_parameter_type = base_template_parameter.type(); + auto maybe_template_parameter_type = type(); + + if (maybe_base_template_parameter_type.has_value() && + maybe_template_parameter_type.has_value() && !base_template_parameter.is_template_parameter() && !is_template_parameter()) { - if (base_template_parameter.type().value() != type().value()) + if (maybe_base_template_parameter_type.value() != + maybe_template_parameter_type.value()) return 0; - else - res++; + + res++; } if (base_template_parameter.is_function_template() && @@ -389,8 +394,8 @@ int calculate_template_params_specialization_match( return res; } - else - return 0; + + return 0; } return 0;