diff --git a/src/cpp_type_alias.cpp b/src/cpp_type_alias.cpp index d0cdd30..389b637 100644 --- a/src/cpp_type_alias.cpp +++ b/src/cpp_type_alias.cpp @@ -18,7 +18,7 @@ std::unique_ptr cpp_type_alias::build(const cpp_entity_index& id std::unique_ptr type) { auto result = build(std::move(name), std::move(type)); - idx.register_definition(std::move(id), type_safe::cref(*result)); + idx.register_forward_declaration(std::move(id), type_safe::cref(*result)); // not a definition return result; } diff --git a/src/libclang/function_parser.cpp b/src/libclang/function_parser.cpp index 33be5d3..fde4771 100644 --- a/src/libclang/function_parser.cpp +++ b/src/libclang/function_parser.cpp @@ -436,13 +436,8 @@ namespace cpp_virtual calculate_virtual(const CXCursor& cur, bool virtual_keyword, const cpp_virtual& virtual_suffix) { - if (!clang_CXXMethod_isVirtual(cur)) - { - // not a virtual function, ensure it wasn't parsed that way - DEBUG_ASSERT(!virtual_keyword && !virtual_suffix.has_value(), - detail::parse_error_handler{}, cur, "virtualness not parsed properly"); + if (!clang_CXXMethod_isVirtual(cur) && !virtual_keyword && !virtual_suffix) return {}; - } else if (clang_CXXMethod_isPureVirtual(cur)) { // pure virtual function - all information in the suffix @@ -545,8 +540,6 @@ std::unique_ptr detail::parse_cpp_member_function(const detail::pars std::move(prefix.semantic_parent)); } -#include - std::unique_ptr detail::parse_cpp_conversion_op(const detail::parse_context& context, const CXCursor& cur) { diff --git a/src/libclang/template_parser.cpp b/src/libclang/template_parser.cpp index 4e6ed25..ef25975 100644 --- a/src/libclang/template_parser.cpp +++ b/src/libclang/template_parser.cpp @@ -211,7 +211,8 @@ std::unique_ptr detail::parse_cpp_alias_template(const detail::parse return nullptr; context.comments.match(builder.value().get(), cur); parse_parameters(builder.value(), context, cur); - return builder.value().finish(*context.idx, detail::get_entity_id(cur), true); + return builder.value().finish(*context.idx, detail::get_entity_id(cur), + false); // not a definition } std::unique_ptr detail::parse_cpp_function_template(