diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 05577d5dc47d9f657db53534a84544608866f1e2..9843b6cbedd725bfd3748b38b2acb8fec30c79d2 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,10 @@ +2005-12-15 Tom Tromey <tromey@redhat.com> + Andrew Haley <aph@redhat.com> + + PR java/25429 + * parse.y (resolve_expression_name): Don't generate accessor + methods for constant fields. + 2005-12-13 Andrew Haley <aph@redhat.com> PR java/25366 diff --git a/gcc/java/parse.y b/gcc/java/parse.y index 056feeaa2c66c46eabee6d2d97c31de5a1fd5c23..a467ff15a79fe63b12cce66a662cd20302743fd8 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -9584,8 +9584,15 @@ resolve_expression_name (tree id, tree *orig) /* If we're processing an inner class and we're trying to access a field belonging to an outer class, build - the access to the field. */ - if (nested_member_access_p (current_class, decl)) + the access to the field. + As usual, we have to treat initialized static final + variables as a special case. */ + if (nested_member_access_p (current_class, decl) + && ! (JDECL_P (decl) && CLASS_FINAL_VARIABLE_P (decl) + && DECL_INITIAL (decl) != NULL_TREE + && (JSTRING_TYPE_P (TREE_TYPE (decl)) + || JNUMERIC_TYPE_P (TREE_TYPE (decl))) + && TREE_CONSTANT (DECL_INITIAL (decl)))) { if (!fs && CLASS_STATIC (TYPE_NAME (current_class))) { diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 0c00f2e46d9c8b01e8d7de255693cd91007305c0..b3a03b720d356e5742b087459bcea21eaa20385d 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2005-12-15 Tom Tromey <tromey@redhat.com> + + * testsuite/libjava.compile/rh175833.java: New file. + * testsuite/libjava.compile/pr25429.java: New file. + 2005-12-15 Alan Modra <amodra@bigpond.net.au> * testsuite/lib/libjava.exp: Revert 2005-12-01. diff --git a/libjava/testsuite/libjava.compile/pr25429.java b/libjava/testsuite/libjava.compile/pr25429.java new file mode 100644 index 0000000000000000000000000000000000000000..a869b585c4beb39db512f78f60f295c586854847 --- /dev/null +++ b/libjava/testsuite/libjava.compile/pr25429.java @@ -0,0 +1,13 @@ +public class pr25429 +{ + private static final int CONST = 0; + class I { + public void f () { + switch(0) { + case CONST: + } + } + } + + public static void main(String[] args) { } +} diff --git a/libjava/testsuite/libjava.compile/rh175833.java b/libjava/testsuite/libjava.compile/rh175833.java new file mode 100644 index 0000000000000000000000000000000000000000..6bdec57cb6e782ee41ee75f831dcaf1732fa9f89 --- /dev/null +++ b/libjava/testsuite/libjava.compile/rh175833.java @@ -0,0 +1,13 @@ +// Follow-on to PR 25429 +public class rh175833 +{ + private static final Object CONST = new Object(); + class I { + public Object f () { + // We need an accessor here. + return CONST; + } + } + + public static void main(String[] args) { } +}