Fix parsing of default value
It is now always unexposed, but works better.
This commit is contained in:
parent
df684694cc
commit
9a0ac36715
12 changed files with 99 additions and 100 deletions
|
|
@ -15,24 +15,10 @@ namespace
|
|||
std::unique_ptr<cpp_function_parameter> parse_parameter(const detail::parse_context& context,
|
||||
const CXCursor& cur)
|
||||
{
|
||||
auto name = detail::get_cursor_name(cur);
|
||||
auto type = detail::parse_type(context, cur, clang_getCursorType(cur));
|
||||
auto is_decltype = type->kind() == cpp_type_kind::decltype_t;
|
||||
auto name = detail::get_cursor_name(cur);
|
||||
auto type = detail::parse_type(context, cur, clang_getCursorType(cur));
|
||||
|
||||
std::unique_ptr<cpp_expression> default_value;
|
||||
detail::visit_children(cur, [&](const CXCursor& child) {
|
||||
if (!clang_isExpression(clang_getCursorKind(child)))
|
||||
return;
|
||||
else if (is_decltype)
|
||||
// skip first expression then
|
||||
is_decltype = false;
|
||||
else
|
||||
{
|
||||
DEBUG_ASSERT(!default_value, detail::parse_error_handler{}, child,
|
||||
"unexpected child cursor of function parameter");
|
||||
default_value = detail::parse_expression(context, child);
|
||||
}
|
||||
});
|
||||
auto default_value = detail::parse_default_value(context, cur, name.c_str());
|
||||
|
||||
if (name.empty())
|
||||
return cpp_function_parameter::build(std::move(type), std::move(default_value));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue