From: Bryce McKinlay Date: Mon, 18 Dec 2000 21:23:02 +0000 (+0000) Subject: re GNATS gcj/373: (interface inner classes are implicitly static) X-Git-Tag: prereleases/libstdc++-2.92~2144 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6d003d5c8f47cc7e3d8e14ef6ca154ab9a645fa0;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 0f71e7f8e186..42a82bf9333b 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 * 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 ec09a49de2c6..1dc60163b8a4 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;