OSDN Git Service

Fix for PR gcj/373:
authorbryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 18 Dec 2000 21:23:02 +0000 (21:23 +0000)
committerbryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 18 Dec 2000 21:23:02 +0000 (21:23 +0000)
* parse.y (create_class): Set ACC_STATIC if class is declared in an
interface.

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

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

index 0f71e7f..42a82bf 100644 (file)
@@ -6,6 +6,10 @@
        * class.c (layout_class): Call maybe_layout_super_class on 
        superinterfaces also, but only if compiling from bytecode.
 
+       Fix for PR gcj/373:
+       * parse.y (create_class): Set ACC_STATIC if class is declared in an
+       interface.
+
 2000-12-15  Tom Tromey  <tromey@redhat.com>
 
        * jcf-parse.c (jcf_parse_source): Set wfl_operator if not already
index ec09a49..1dc6016 100644 (file)
@@ -3887,7 +3887,14 @@ create_class (flags, id, super, interfaces)
   else
     super_decl_type = NULL_TREE;
 
-  /* Set super info and mark the class a complete */
+  /* A class nested in an interface is implicitly static. */
+  if (INNER_CLASS_DECL_P (decl)
+      && CLASS_INTERFACE (TYPE_NAME (TREE_TYPE (DECL_CONTEXT (decl)))))
+    {
+      flags |= ACC_STATIC;
+    }
+
+  /* Set super info and mark the class as complete. */
   set_super_info (flags, TREE_TYPE (decl), super_decl_type, 
                  ctxp->interface_number);
   ctxp->interface_number = 0;