OSDN Git Service

* parse.h (THIS_MODIFIER_ONLY): Changed meaning of `v' parameter.
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 6 Apr 2000 00:43:27 +0000 (00:43 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 6 Apr 2000 00:43:27 +0000 (00:43 +0000)
* parse.y (check_modifiers_consistency): Check for final/volatile
clash.  Fixes PR gcj/164.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@32955 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/java/ChangeLog
gcc/java/parse.c
gcc/java/parse.h
gcc/java/parse.y

index 1a0edc8..f16dd5d 100644 (file)
@@ -1,3 +1,9 @@
+2000-04-05  Tom Tromey  <tromey@cygnus.com>
+
+       * parse.h (THIS_MODIFIER_ONLY): Changed meaning of `v' parameter.
+       * parse.y (check_modifiers_consistency): Check for final/volatile
+       clash.  Fixes PR gcj/164.
+
 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
 
        * class.c: (java_hash_hash_tree_node): Renamed from `decl_hash',
index d476617..e15e571 100644 (file)
@@ -2387,7 +2387,7 @@ static const short yycheck[] = {     3,
 #define YYPURE 1
 
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
-#line 3 "/home/apbianco/install/intel-java-alpha/install-x86//share/bison.simple"
+#line 3 "/usr/share/misc/bison.simple"
 
 /* Skeleton output parser for bison,
    Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
@@ -2404,7 +2404,7 @@ static const short yycheck[] = {     3,
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 /* As a special exception, when this file is copied by Bison into a
    Bison output file, you may use that output file without restriction.
@@ -2538,8 +2538,10 @@ int yydebug;                     /*  nonzero means print parse trace     */
 
 /* Prevent warning if -Wstrict-prototypes.  */
 #ifdef __GNUC__
+#ifndef YYPARSE_PARAM
 int yyparse (void);
 #endif
+#endif
 \f
 #if __GNUC__ > 1               /* GNU C and GNU C++ define this.  */
 #define __yy_memcpy(TO,FROM,COUNT)     __builtin_memcpy(TO,FROM,COUNT)
@@ -2580,7 +2582,7 @@ __yy_memcpy (char *to, char *from, int count)
 #endif
 #endif
 \f
-#line 196 "/home/apbianco/install/intel-java-alpha/install-x86//share/bison.simple"
+#line 196 "/usr/share/misc/bison.simple"
 
 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
    into yyparse.  The argument should have type void *.
@@ -4976,7 +4978,7 @@ case 503:
     break;}
 }
    /* the action file gets copied in in place of this dollarsign */
-#line 498 "/home/apbianco/install/intel-java-alpha/install-x86//share/bison.simple"
+#line 498 "/usr/share/misc/bison.simple"
 \f
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -7200,12 +7202,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 */
index bea4b70..b19edbe 100644 (file)
@@ -89,7 +89,7 @@ extern tree stabilize_reference PARAMS ((tree));
 #define THIS_MODIFIER_ONLY(f, m, v, count, l)                          \
   if ((f) & (m))                                                       \
     {                                                                  \
-      tree node = ctxp->modifier_ctx [v];                              \
+      tree node = MODIFIER_WFL (v);                                    \
       if ((l)                                                          \
          && ((EXPR_WFL_COLNO (node) > EXPR_WFL_COLNO (l))              \
              || (EXPR_WFL_LINENO (node) > EXPR_WFL_LINENO (l))))       \
index bfb7242..cac9a3a 100644 (file)
@@ -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 */