From 6d003d5c8f47cc7e3d8e14ef6ca154ab9a645fa0 Mon Sep 17 00:00:00 2001 From: Bryce McKinlay Date: Mon, 18 Dec 2000 21:23:02 +0000 Subject: 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 --- gcc/java/ChangeLog | 4 ++++ gcc/java/parse.y | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 0f71e7f..42a82bf 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 ec09a49..1dc6016 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; -- cgit v1.1