c++: using in diagnostics [PR102987]
The decl pretty-printing code wasn't looking at the flags parameter, so we were printing 'using' in the middle of an expression. PR c++/102987 gcc/cp/ChangeLog: * error.cc (dump_decl) [USING_DECL]: Respect flags. gcc/testsuite/ChangeLog: * g++.dg/diagnostic/using1.C: Check pretty-printing.
This commit is contained in:
parent
ac5b356d05
commit
a0a2554d7c
|
@ -1439,16 +1439,20 @@ dump_decl (cxx_pretty_printer *pp, tree t, int flags)
|
|||
|
||||
case USING_DECL:
|
||||
{
|
||||
pp_cxx_ws_string (pp, "using");
|
||||
tree scope = USING_DECL_SCOPE (t);
|
||||
if (flags & TFF_DECL_SPECIFIERS)
|
||||
pp_cxx_ws_string (pp, "using");
|
||||
bool variadic = false;
|
||||
if (PACK_EXPANSION_P (scope))
|
||||
if (!(flags & TFF_UNQUALIFIED_NAME))
|
||||
{
|
||||
scope = PACK_EXPANSION_PATTERN (scope);
|
||||
variadic = true;
|
||||
tree scope = USING_DECL_SCOPE (t);
|
||||
if (PACK_EXPANSION_P (scope))
|
||||
{
|
||||
scope = PACK_EXPANSION_PATTERN (scope);
|
||||
variadic = true;
|
||||
}
|
||||
dump_type (pp, scope, flags);
|
||||
pp_cxx_colon_colon (pp);
|
||||
}
|
||||
dump_type (pp, scope, flags);
|
||||
pp_cxx_colon_colon (pp);
|
||||
dump_decl (pp, DECL_NAME (t), flags);
|
||||
if (variadic)
|
||||
pp_cxx_ws_string (pp, "...");
|
||||
|
|
|
@ -7,6 +7,7 @@ struct a {
|
|||
template <typename c> struct d : c {
|
||||
using c::e;
|
||||
using f = d;
|
||||
// { dg-message "decltype .c::e" "" { target *-*-* } 0 }
|
||||
constexpr int g(decltype(e.b())) { return buh; } // { dg-error "buh" }
|
||||
};
|
||||
struct h {
|
||||
|
|
Loading…
Reference in New Issue