diff options
author | Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> | 2001-03-22 19:44:21 +0100 |
---|---|---|
committer | Gerald Pfeifer <gerald@gcc.gnu.org> | 2001-03-22 18:44:21 +0000 |
commit | fd8b7a0ed9583626f2a3113fb46c0deaf2fc2bec (patch) | |
tree | 4a947073d54987aecf89197e7a51238428066e83 /gcc | |
parent | b6b14b1bb43f67b8a740b3bf6dad7707044ef5be (diff) | |
download | gcc-fd8b7a0ed9583626f2a3113fb46c0deaf2fc2bec.zip gcc-fd8b7a0ed9583626f2a3113fb46c0deaf2fc2bec.tar.gz gcc-fd8b7a0ed9583626f2a3113fb46c0deaf2fc2bec.tar.bz2 |
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 <jbuck@synopsys.com>
From-SVN: r40752
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cp/parse.y | 23 |
2 files changed, 30 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index d2c9217..bdce0ce 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2001-03-22 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> + based on an idea from Joe Buck <jbuck@synopsys.com> + + * 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 <jakub@redhat.com> * 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 59ad4e6..3d4ab44 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; } |