Commit 277264f8 by Mark Mitchell Committed by Mark Mitchell

re PR c++/29730 (ICE on invalid declaration of template member)

	PR c++/29730
	* parser.c (cp_parser_init_declarator): Reject initialization of
	functions.
	PR c++/29730
	* g++.dg/template/crash64.C: New test.
	* g++.dg/parse/crash27.C: Adjust error markers.

From-SVN: r119601
parent 66863d89
2006-12-06 Mark Mitchell <mark@codesourcery.com>
PR c++/29730
* parser.c (cp_parser_init_declarator): Reject initialization of
functions.
2006-12-05 Mark Mitchell <mark@codesourcery.com>
PR c++/29729
......
......@@ -11311,9 +11311,23 @@ cp_parser_init_declarator (cp_parser* parser,
is_non_constant_init = true;
if (is_initialized)
{
if (function_declarator_p (declarator)
&& initialization_kind == CPP_EQ)
initializer = cp_parser_pure_specifier (parser);
if (function_declarator_p (declarator))
{
if (initialization_kind == CPP_EQ)
initializer = cp_parser_pure_specifier (parser);
else
{
/* If the declaration was erroneous, we don't really
know what the user intended, so just silently
consume the initializer. */
if (decl != error_mark_node)
error ("initializer provided for function");
cp_parser_skip_to_closing_parenthesis (parser,
/*recovering=*/true,
/*or_comma=*/false,
/*consume_paren=*/true);
}
}
else
initializer = cp_parser_initializer (parser,
&is_parenthesized_init,
......
2006-12-06 Mark Mitchell <mark@codesourcery.com>
PR c++/29730
* g++.dg/template/crash64.C: New test.
* g++.dg/parse/crash27.C: Adjust error markers.
2006-12-06 Thomas Koenig <Thomas.Koenig@online.de>
PR libfortran/30009
......@@ -3,6 +3,3 @@
void Dispatcher()
(__builtin_offsetof (ArgsType, largeMsgLen))
/* { dg-error "function " "function" { target *-*-* } 4 } */
/* { dg-error "expected type" "expected 1" { target *-*-* } 4 } */
/* { dg-error "expected `,' before" "expected 2" { target *-*-* } 4 } */
/* { dg-error "expected `\\\)" "expected 3" { target *-*-* } 4 } */
// PR c++/29730
struct A
{
template<int> void foo()(0); // { dg-error "initializer" }
};
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