Commit 172f0e13 by Jason Merrill Committed by Jason Merrill

PR c++/70781 - ICE on ill-formed lambda.

	* parser.c (cp_parser_lambda_expression): Unset OK if there was an
	error parsing the lambda-declarator.

From-SVN: r238563
parent dd5dda56
2016-07-21 Jason Merrill <jason@redhat.com>
PR c++/70781
* parser.c (cp_parser_lambda_expression): Unset OK if there was an
error parsing the lambda-declarator.
PR c++/71896
* constexpr.c (cxx_eval_binary_expression): Handle comparison
between lowered and unlowered PTRMEM_CST.
......
......@@ -9771,10 +9771,12 @@ cp_parser_lambda_expression (cp_parser* parser)
ok &= cp_parser_lambda_declarator_opt (parser, lambda_expr);
if (ok && cp_parser_error_occurred (parser))
ok = false;
if (ok)
{
if (!cp_parser_error_occurred (parser)
&& cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)
if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)
&& cp_parser_start_tentative_firewall (parser))
start = token;
cp_parser_lambda_body (parser, lambda_expr);
// PR c++/70781
// { dg-do compile { target c++11 } }
template < typename T >
void foo ()
{
T ([=] (S) { [=] {}; }); // { dg-error "" }
}
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