diff options
author | Tom Tromey <tromey@cygnus.com> | 2000-04-06 00:43:27 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2000-04-06 00:43:27 +0000 |
commit | e0fc4118fea69036438dc790c529a68e183f24fe (patch) | |
tree | 1e8724cd9b278c8353f39e72d4fb6ad66b16565c /gcc/java/parse.y | |
parent | 24969f074e21f4aecec90c16348537b3b4a5f5a1 (diff) | |
download | gcc-e0fc4118fea69036438dc790c529a68e183f24fe.zip gcc-e0fc4118fea69036438dc790c529a68e183f24fe.tar.gz gcc-e0fc4118fea69036438dc790c529a68e183f24fe.tar.bz2 |
re GNATS gcj/164 (compiler permits "volatile final" variables)
* parse.h (THIS_MODIFIER_ONLY): Changed meaning of `v' parameter.
* parse.y (check_modifiers_consistency): Check for final/volatile
clash. Fixes PR gcj/164.
From-SVN: r32955
Diffstat (limited to 'gcc/java/parse.y')
-rw-r--r-- | gcc/java/parse.y | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/gcc/java/parse.y b/gcc/java/parse.y index bfb7242..cac9a3a9 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -4570,12 +4570,22 @@ check_modifiers_consistency (flags) int acc_count = 0; tree cl = NULL_TREE; - THIS_MODIFIER_ONLY (flags, ACC_PUBLIC, 0, acc_count, cl); - THIS_MODIFIER_ONLY (flags, ACC_PRIVATE, 1, acc_count, cl); - THIS_MODIFIER_ONLY (flags, ACC_PROTECTED, 2, acc_count, cl); + THIS_MODIFIER_ONLY (flags, ACC_PUBLIC, PUBLIC_TK, acc_count, cl); + THIS_MODIFIER_ONLY (flags, ACC_PRIVATE, PRIVATE_TK, acc_count, cl); + THIS_MODIFIER_ONLY (flags, ACC_PROTECTED, PROTECTED_TK, acc_count, cl); if (acc_count > 1) parse_error_context - (cl, "Inconsistent member declaration. At most one of `public', `private', or `protected' may be specified"); + (cl, "Inconsistent member declaration. At most one of `public', `private', or `protected' may be specified"); + + acc_count = 0; + cl = NULL_TREE; + THIS_MODIFIER_ONLY (flags, ACC_FINAL, FINAL_TK - PUBLIC_TK, + acc_count, cl); + THIS_MODIFIER_ONLY (flags, ACC_VOLATILE, VOLATILE_TK - PUBLIC_TK, + acc_count, cl); + if (acc_count > 1) + parse_error_context (cl, + "Inconsistent member declaration. At most one of `final' or `volatile' may be specified"); } /* Check the methode header METH for abstract specifics features */ |