Commit fad882c6 by Jason Merrill Committed by Jason Merrill

re PR c++/56710 (Using reserved double underscore variable name in a lambda…

re PR c++/56710 (Using reserved double underscore variable name in a lambda causes internal compiler error)

	PR c++/56710
	* semantics.c (finish_member_declaration): Don't push closure
	members.

From-SVN: r197211
parent c561e952
2013-03-28 Jason Merrill <jason@redhat.com>
PR c++/56710
* semantics.c (finish_member_declaration): Don't push closure
members.
* name-lookup.c (pushdecl_maybe_friend_1): Use
nonlambda_method_basetype and current_nonlambda_class_type.
......
......@@ -2719,8 +2719,10 @@ finish_member_declaration (tree decl)
/*friend_p=*/0);
}
}
/* Enter the DECL into the scope of the class. */
else if (pushdecl_class_level (decl))
/* Enter the DECL into the scope of the class, if the class
isn't a closure (whose fields are supposed to be unnamed). */
else if (CLASSTYPE_LAMBDA_EXPR (current_class_type)
|| pushdecl_class_level (decl))
{
if (TREE_CODE (decl) == USING_DECL)
{
......
// PR c++/56710
// { dg-options "-std=c++11 -Wall" }
int main()
{
int t = 0;
return [&]() -> int {int __t; __t = t; return __t; }();
return [&t]() -> int {int __t; __t = t; return __t; }();
}
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