Commit af580858 by Jason Merrill Committed by Jason Merrill

error.c (dump_aggr_type): Fix lambda detection.

	* error.c (dump_aggr_type): Fix lambda detection.
	(dump_simple_decl): Pretty-print capture field.

From-SVN: r198159
parent 0462b6aa
2013-04-22 Jason Merrill <jason@redhat.com>
* error.c (dump_aggr_type): Fix lambda detection.
(dump_simple_decl): Pretty-print capture field.
N3323
* cvt.c (build_expr_type_conversion): Two conversions that return
the same type aren't necessarily ambiguous.
......
......@@ -656,7 +656,7 @@ dump_aggr_type (tree t, int flags)
else
pp_printf (pp_base (cxx_pp), M_("<anonymous %s>"), variety);
}
else if (LAMBDA_TYPE_P (name))
else if (LAMBDA_TYPE_P (t))
{
/* A lambda's "type" is essentially its signature. */
pp_string (cxx_pp, M_("<lambda"));
......@@ -933,7 +933,16 @@ dump_simple_decl (tree t, tree type, int flags)
&& TEMPLATE_PARM_PARAMETER_PACK (DECL_INITIAL (t)))
pp_string (cxx_pp, "...");
if (DECL_NAME (t))
dump_decl (DECL_NAME (t), flags);
{
if (DECL_CLASS_SCOPE_P (t) && LAMBDA_TYPE_P (DECL_CONTEXT (t)))
{
pp_character (cxx_pp, '<');
pp_string (cxx_pp, IDENTIFIER_POINTER (DECL_NAME (t)) + 2);
pp_string (cxx_pp, " capture>");
}
else
dump_decl (DECL_NAME (t), flags);
}
else
pp_string (cxx_pp, M_("<anonymous>"));
if (flags & TFF_DECL_SPECIFIERS)
......
// { dg-require-effective-target c++11 }
int main()
{
int x;
auto f = [x]{ };
f.__x.foo; // { dg-error "<lambda\\(\\)>::<x capture>" }
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment