Commit 5504e5d8 by Paolo Carlini Committed by Paolo Carlini

re PR c++/28262 (Inconsistent "default arguments are only permitted for function parameters".)

/cp
2013-07-06  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/28262
	* parser.c (cp_parser_init_declarator): If we are parsing a typedef
	set parser->default_arg_ok_p to false before cp_parser_declarator.

/testsuite
2013-07-06  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/28262
	* g++.dg/parse/defarg16.C: New.

From-SVN: r200730
parent 90b0f444
2013-07-06 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/28262
* parser.c (cp_parser_init_declarator): If we are parsing a typedef
set parser->default_arg_ok_p to false before cp_parser_declarator.
2013-07-05 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/14263
......
......@@ -16182,6 +16182,7 @@ cp_parser_init_declarator (cp_parser* parser,
bool friend_p;
tree pushed_scope = NULL_TREE;
bool range_for_decl_p = false;
bool saved_default_arg_ok_p = parser->default_arg_ok_p;
/* Gather the attributes that were provided with the
decl-specifiers. */
......@@ -16192,6 +16193,10 @@ cp_parser_init_declarator (cp_parser* parser,
if (function_definition_p)
*function_definition_p = false;
/* Default arguments are only permitted for function parameters. */
if (decl_spec_seq_has_spec_p (decl_specifiers, ds_typedef))
parser->default_arg_ok_p = false;
/* Defer access checks while parsing the declarator; we cannot know
what names are accessible until we know what is being
declared. */
......@@ -16207,6 +16212,8 @@ cp_parser_init_declarator (cp_parser* parser,
/* Gather up the deferred checks. */
stop_deferring_access_checks ();
parser->default_arg_ok_p = saved_default_arg_ok_p;
/* If the DECLARATOR was erroneous, there's no need to go
further. */
if (declarator == cp_error_declarator)
......
2013-07-06 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/28262
* g++.dg/parse/defarg16.C: New.
2013-07-05 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/55342
......
// PR c++/28262
typedef void (funcptrhack) (int = 10); // { dg-error "default arguments" }
typedef funcptrhack * funcptr;
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