Workaround broken virtual implementation
This commit is contained in:
parent
79fce1170b
commit
6cd9404175
3 changed files with 4 additions and 10 deletions
|
|
@ -18,7 +18,7 @@ std::unique_ptr<cpp_type_alias> cpp_type_alias::build(const cpp_entity_index& id
|
||||||
std::unique_ptr<cpp_type> type)
|
std::unique_ptr<cpp_type> type)
|
||||||
{
|
{
|
||||||
auto result = build(std::move(name), std::move(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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -436,13 +436,8 @@ namespace
|
||||||
cpp_virtual calculate_virtual(const CXCursor& cur, bool virtual_keyword,
|
cpp_virtual calculate_virtual(const CXCursor& cur, bool virtual_keyword,
|
||||||
const cpp_virtual& virtual_suffix)
|
const cpp_virtual& virtual_suffix)
|
||||||
{
|
{
|
||||||
if (!clang_CXXMethod_isVirtual(cur))
|
if (!clang_CXXMethod_isVirtual(cur) && !virtual_keyword && !virtual_suffix)
|
||||||
{
|
|
||||||
// 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");
|
|
||||||
return {};
|
return {};
|
||||||
}
|
|
||||||
else if (clang_CXXMethod_isPureVirtual(cur))
|
else if (clang_CXXMethod_isPureVirtual(cur))
|
||||||
{
|
{
|
||||||
// pure virtual function - all information in the suffix
|
// pure virtual function - all information in the suffix
|
||||||
|
|
@ -545,8 +540,6 @@ std::unique_ptr<cpp_entity> detail::parse_cpp_member_function(const detail::pars
|
||||||
std::move(prefix.semantic_parent));
|
std::move(prefix.semantic_parent));
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
std::unique_ptr<cpp_entity> detail::parse_cpp_conversion_op(const detail::parse_context& context,
|
std::unique_ptr<cpp_entity> detail::parse_cpp_conversion_op(const detail::parse_context& context,
|
||||||
const CXCursor& cur)
|
const CXCursor& cur)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -211,7 +211,8 @@ std::unique_ptr<cpp_entity> detail::parse_cpp_alias_template(const detail::parse
|
||||||
return nullptr;
|
return nullptr;
|
||||||
context.comments.match(builder.value().get(), cur);
|
context.comments.match(builder.value().get(), cur);
|
||||||
parse_parameters(builder.value(), context, 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<cpp_entity> detail::parse_cpp_function_template(
|
std::unique_ptr<cpp_entity> detail::parse_cpp_function_template(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue