Commit 2af5cb50 by Jason Merrill Committed by Jason Merrill

FI 20, decomposition declaration with parenthesized initializer.

	* parser.c (cp_parser_decomposition_declaration): Use
	cp_parser_initializer.

From-SVN: r244282
parent 491b3c5f
2017-01-10 Jason Merrill <jason@redhat.com>
FI 20, decomposition declaration with parenthesized initializer.
* parser.c (cp_parser_decomposition_declaration): Use
cp_parser_initializer.
2017-01-09 Jason Merrill <jason@redhat.com> 2017-01-09 Jason Merrill <jason@redhat.com>
Implement P0195R2, C++17 variadic using. Implement P0195R2, C++17 variadic using.
......
...@@ -12923,7 +12923,7 @@ cp_parser_simple_declaration (cp_parser* parser, ...@@ -12923,7 +12923,7 @@ cp_parser_simple_declaration (cp_parser* parser,
/* Helper of cp_parser_simple_declaration, parse a decomposition declaration. /* Helper of cp_parser_simple_declaration, parse a decomposition declaration.
decl-specifier-seq ref-qualifier [opt] [ identifier-list ] decl-specifier-seq ref-qualifier [opt] [ identifier-list ]
brace-or-equal-initializer ; */ initializer ; */
static tree static tree
cp_parser_decomposition_declaration (cp_parser *parser, cp_parser_decomposition_declaration (cp_parser *parser,
...@@ -13022,21 +13022,12 @@ cp_parser_decomposition_declaration (cp_parser *parser, ...@@ -13022,21 +13022,12 @@ cp_parser_decomposition_declaration (cp_parser *parser,
|| cp_lexer_next_token_is_not (parser->lexer, CPP_COLON)) || cp_lexer_next_token_is_not (parser->lexer, CPP_COLON))
{ {
bool non_constant_p = false, is_direct_init = false; bool non_constant_p = false, is_direct_init = false;
tree initializer;
*init_loc = cp_lexer_peek_token (parser->lexer)->location; *init_loc = cp_lexer_peek_token (parser->lexer)->location;
/* Parse the initializer. */ tree initializer = cp_parser_initializer (parser, &is_direct_init,
if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) &non_constant_p);
{ if (TREE_CODE (initializer) == TREE_LIST)
initializer = cp_parser_braced_list (parser, &non_constant_p); initializer = build_x_compound_expr_from_list (initializer, ELK_INIT,
CONSTRUCTOR_IS_DIRECT_INIT (initializer) = 1; tf_warning_or_error);
is_direct_init = true;
}
else
{
/* Consume the `='. */
cp_parser_require (parser, CPP_EQ, RT_EQ);
initializer = cp_parser_initializer_clause (parser, &non_constant_p);
}
if (decl != error_mark_node) if (decl != error_mark_node)
{ {
// { dg-options -std=c++1z }
struct A { int i,j; };
A f();
int main()
{
auto [i,j] (f());
}
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