From fd8b7a0ed9583626f2a3113fb46c0deaf2fc2bec Mon Sep 17 00:00:00 2001 From: Gerald Pfeifer Date: Thu, 22 Mar 2001 19:44:21 +0100 Subject: [PATCH] parse.y (bad_decl, [...]): New nonterminals. * parse.y (bad_decl, template_arg_list_ignore, arg_list_ignore): New nonterminals. (data_def, component_decl): Add reductions to bad_decl. Co-Authored-By: Joe Buck From-SVN: r40752 --- gcc/cp/ChangeLog | 7 +++++++ gcc/cp/parse.y | 23 +++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index d2c9217b29e..bdce0cea9ca 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2001-03-22 Gerald Pfeifer + based on an idea from Joe Buck + + * parse.y (bad_decl, template_arg_list_ignore, arg_list_ignore): + New nonterminals. + (data_def, component_decl): Add reductions to bad_decl. + 2001-03-22 Jakub Jelinek * method.c (do_build_assign_ref): Don't use build_modify_expr for diff --git a/gcc/cp/parse.y b/gcc/cp/parse.y index 59ad4e61064..3d4ab4400f6 100644 --- a/gcc/cp/parse.y +++ b/gcc/cp/parse.y @@ -733,6 +733,7 @@ datadef: | error ';' | error '}' | ';' + | bad_decl ; ctor_initializer_opt: @@ -2590,6 +2591,8 @@ component_decl: $$ = finish_member_class_template ($2.t); finish_template_decl ($1); } + | bad_decl + { $$ = NULL_TREE; } ; component_decl_1: @@ -3761,6 +3764,26 @@ bad_parm: } ; +bad_decl: + IDENTIFIER template_arg_list_ignore IDENTIFIER arg_list_ignore ';' + { + cp_error("'%D' is used as a type, but is not defined as a type.", $1); + $3 = error_mark_node; + } + ; + +template_arg_list_ignore: + '<' template_arg_list_opt template_close_bracket + { } + | /* empty */ + ; + +arg_list_ignore: + '(' nonnull_exprlist ')' + { } + | /* empty */ + ; + exception_specification_opt: /* empty */ %prec EMPTY { $$ = NULL_TREE; } -- 2.30.2