diff options
author | Joerg Brunsmann <joerg.brunsmann@fernuni-hagen.de> | 2000-01-17 22:54:30 +0000 |
---|---|---|
committer | Alexandre Petit-Bianco <apbianco@gcc.gnu.org> | 2000-01-17 14:54:30 -0800 |
commit | 18990de52b8166a8f5fb71271cf4c12d3c0f0a47 (patch) | |
tree | 38b3b6e05880001aef4c13dc53095725793ed261 /gcc | |
parent | a68ad5bdee43a9796ae1f0f324508a5bff4f7cb0 (diff) | |
download | gcc-18990de52b8166a8f5fb71271cf4c12d3c0f0a47.zip gcc-18990de52b8166a8f5fb71271cf4c12d3c0f0a47.tar.gz gcc-18990de52b8166a8f5fb71271cf4c12d3c0f0a47.tar.bz2 |
re GNATS gcj/128 (weak error message when expecting final modifier)
Mon Jan 17 11:58:17 2000 Joerg Brunsmann <joerg.brunsmann@fernuni-hagen.de>
* parse.y (format_parameter:): Use final: rule instead of modifiers:.
(final:): New rule.
Joerg Brunsmann's contribution to fix the Java PR #128.
From-SVN: r31477
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/java/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/java/parse.y | 15 |
2 files changed, 17 insertions, 3 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 85c0b05..aa636cf 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,8 @@ +Mon Jan 17 11:58:17 2000 Joerg Brunsmann <joerg.brunsmann@fernuni-hagen.de> + + * parse.y (format_parameter:): Use final: rule instead of modifiers:. + (final:): New rule. + 2000-01-17 Tom Tromey <tromey@cygnus.com> * gjavah.c (print_field_info): Allow non-static final fields. diff --git a/gcc/java/parse.y b/gcc/java/parse.y index 8563508..b4d9d76 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -950,20 +950,29 @@ formal_parameter: { $$ = build_tree_list ($2, $1); } -| modifiers type variable_declarator_id /* Added, JDK1.1 final parms */ +| final type variable_declarator_id /* Added, JDK1.1 final parms */ { parse_jdk1_1_error ("final parameters"); $$ = build_tree_list ($3, $2); } | type error {yyerror ("Missing identifier"); RECOVER;} -| modifiers type error +| final type error { - SOURCE_FRONTEND_DEBUG (("Modifiers: %d", $1)); yyerror ("Missing identifier"); RECOVER; } ; +final: + modifiers + { + check_modifiers ("Illegal modifier `%s'. Only `final' was expected here", + $1, ACC_FINAL); + if ($1 != ACC_FINAL) + MODIFIER_WFL (FINAL_TK) = build_wfl_node (NULL_TREE); + } +; + throws: { $$ = NULL_TREE; } | THROWS_TK class_type_list |