+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
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
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 } */