Hide noexcept condition
This commit is contained in:
parent
38dd1c9d18
commit
495b82158d
3 changed files with 17 additions and 5 deletions
|
|
@ -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
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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(")");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue