diff options
author | Bryce McKinlay <bryce@albatross.co.nz> | 2000-12-18 21:23:02 +0000 |
---|---|---|
committer | Bryce McKinlay <bryce@gcc.gnu.org> | 2000-12-18 21:23:02 +0000 |
commit | 6d003d5c8f47cc7e3d8e14ef6ca154ab9a645fa0 (patch) | |
tree | 7c06673c62808b74162f6559910809044b833d70 | |
parent | da68e693599df262c5a06641b8850b1363bef29d (diff) | |
download | gcc-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/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/java/parse.y | 9 |
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; |