summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryce McKinlay <bryce@albatross.co.nz>2000-12-18 21:23:02 +0000
committerBryce McKinlay <bryce@gcc.gnu.org>2000-12-18 21:23:02 +0000
commit6d003d5c8f47cc7e3d8e14ef6ca154ab9a645fa0 (patch)
tree7c06673c62808b74162f6559910809044b833d70
parentda68e693599df262c5a06641b8850b1363bef29d (diff)
downloadgcc-6d003d5c8f47cc7e3d8e14ef6ca154ab9a645fa0.tar.gz
re GNATS gcj/373: (interface inner classes are implicitly static)
Fix for PR gcj/373: * parse.y (create_class): Set ACC_STATIC if class is declared in an interface. From-SVN: r38365
-rw-r--r--gcc/java/ChangeLog4
-rw-r--r--gcc/java/parse.y9
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 0f71e7f8e18..42a82bf9333 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -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
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index ec09a49de2c..1dc60163b8a 100644
--- a/gcc/java/parse.y
+++ b/gcc/java/parse.y
@@ -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;