re PR java/3635 ("empty declaration" warning too broad)
authorAlexandre Petit-Bianco <apbianco@redhat.com>
Fri, 13 Jul 2001 19:43:54 +0000 (12:43 -0700)
committerAlexandre Petit-Bianco <apbianco@gcc.gnu.org>
Fri, 13 Jul 2001 19:43:54 +0000 (12:43 -0700)
2001-07-12  Alexandre Petit-Bianco  <apbianco@redhat.com>

* parse.y (patch_method_invocation): Don't override primary if one
is already provided, but let this$<n> be built. Fixed comment.

2001-07-12  Alexandre Petit-Bianco  <apbianco@redhat.com>

* parse.y (empty_statement:): Report empty statement error only
when found at class declaration level.
Fixes PR java/3635

(http://gcc.gnu.org/ml/gcc-patches/2001-07/msg00885.html )

From-SVN: r43993

gcc/java/ChangeLog
gcc/java/parse.y

index 4648f54f0eb2a29e4ad3ec679c593b4ab7cdc3d0..63015155428c48431b511232d6d5cd111f0dc6b0 100644 (file)
@@ -1,3 +1,14 @@
+2001-07-12  Alexandre Petit-Bianco  <apbianco@redhat.com>
+
+       * parse.y (patch_method_invocation): Don't override primary if one
+       is already provided, but let this$<n> be built. Fixed comment.
+
+2001-07-12  Alexandre Petit-Bianco  <apbianco@redhat.com>
+
+       * parse.y (empty_statement:): Report empty statement error only
+       when found at class declaration level.
+       Fixes PR java/3635
+
 2001-07-12  Tom Tromey  <tromey@redhat.com>
 
        * expr.c (expand_load_internal): New function.
index b5cdbdb04eff58ecc8713aacdb01029ff5b28069..03a540c06e0bc324f7b01da6d7e3982225f09398 100644 (file)
@@ -1453,7 +1453,13 @@ statement_without_trailing_substatement:
 empty_statement:
        SC_TK
                { 
-                 if (flag_extraneous_semicolon)
+                 if (flag_extraneous_semicolon 
+                     && ! current_static_block 
+                     && (! current_function_decl || 
+                         /* Verify we're not in a inner class declaration */
+                         (GET_CPC () != TYPE_NAME
+                          (DECL_CONTEXT (current_function_decl)))))
+                          
                    {
                      EXPR_WFL_SET_LINECOL (wfl_operator, lineno, -1);
                      parse_warning_context (wfl_operator, "An empty declaration is a deprecated feature that should not be used");
@@ -10030,7 +10036,7 @@ patch_method_invocation (patch, primary, where, from_super,
             - LIST is non static. It's invocation is transformed from
               x(a1,....,an) into access$<n>(this$<n>,a1,...,an).
             - LIST is static. It's invocation is transformed from
-              x(a1,....,an) into TYPEOF(this$<n>).x(a1,....an).
+              x(a1,....,an) into TYPE_OF(this$<n>).x(a1,....an).
 
             Of course, this$<n> can be abitrary complex, ranging from
             this$0 (the immediate outer context) to 
@@ -10040,7 +10046,8 @@ patch_method_invocation (patch, primary, where, from_super,
             this_arg has to be moved into the (then generated) stub
             argument list. In the meantime, the selected function
             might have be replaced by a generated stub. */
-         if (maybe_use_access_method (is_super_init, &list, &this_arg))
+         if (!primary &&
+             maybe_use_access_method (is_super_init, &list, &this_arg))
            {
              args = tree_cons (NULL_TREE, this_arg, args);
              this_arg = NULL_TREE; /* So it doesn't get chained twice */