Hide noexcept condition

This commit is contained in:
Jonathan Müller 2017-07-17 16:36:59 +02:00
commit 495b82158d
3 changed files with 17 additions and 5 deletions

View file

@ -159,7 +159,8 @@ namespace cppast
exclude, //< Exclude the entire entity.
exclude_return, //< Exclude the return type of a function entity.
exclude_target, //< Exclude the underlying entity of an alias (e.g. typedef).
declaration, //< Only write declaration.
exclude_noexcept_condition, //< Exclude the condition of a noexcept.`
declaration, //< Only write declaration.
/// For a macro, it won't show the replacement if this flag is set
_flag_set_size, //< \exclude
};

View file

@ -500,7 +500,14 @@ namespace
else
{
output << keyword("noexcept") << punctuation("(") << bracket_ws;
detail::write_expression(output, cond);
// update check when expression gets exposed
if (cond.kind() == cpp_expression_kind::unexposed_t
&& static_cast<const cpp_unexposed_expression&>(cond).expression() == "false")
output << keyword("false");
else if (output.options().is_set(code_generator::exclude_noexcept_condition))
output.excluded(base);
else
detail::write_expression(output, cond);
output << bracket_ws << punctuation(")");
}
}

View file

@ -162,7 +162,7 @@ struct foo{
else if (e.name() == "FOO")
// don't show macro replacement
return code_generator::declaration;
return {};
return code_generator::exclude_noexcept_condition;
}
};
@ -174,7 +174,7 @@ void func(int a, int e, int c);
#define FOO hidden
template <typename e1, typename e2>
void tfunc(int a);
void tfunc(int a) noexcept(false);
struct base {};
struct e_t {};
@ -198,13 +198,15 @@ public:
private:
int e3;
};
void func2() noexcept(0 == 1 && 42);
)";
auto synopsis = R"(void func(int a,int c);
#define FOO
void tfunc(int a);
void tfunc(int a)noexcept(false);
struct base{
};
@ -221,6 +223,8 @@ class foo{
public:
int c;
};
void func2()noexcept(excluded);
)";
auto file = parse({}, "code_generator_exclude.cpp", code);