From f8691bddfa6cfee3b1e7d423b6c1ba3f701028ef Mon Sep 17 00:00:00 2001
From: tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Fri, 16 Dec 2005 00:00:43 +0000
Subject: [PATCH] gcc/java: 	PR java/25429 	* parse.y
 (resolve_expression_name): Don't generate accessor 	methods for constant
 fields. libjava: 	* testsuite/libjava.compile/rh175833.java: New file. 
 * testsuite/libjava.compile/pr25429.java: New file.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@108608 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/java/ChangeLog                              |  7 +++++++
 gcc/java/parse.y                                | 11 +++++++++--
 libjava/ChangeLog                               |  5 +++++
 libjava/testsuite/libjava.compile/pr25429.java  | 13 +++++++++++++
 libjava/testsuite/libjava.compile/rh175833.java | 13 +++++++++++++
 5 files changed, 47 insertions(+), 2 deletions(-)
 create mode 100644 libjava/testsuite/libjava.compile/pr25429.java
 create mode 100644 libjava/testsuite/libjava.compile/rh175833.java

diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 05577d5dc47d..9843b6cbedd7 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 056feeaa2c66..a467ff15a79f 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 0c00f2e46d9c..b3a03b720d35 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 000000000000..a869b585c4be
--- /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 000000000000..6bdec57cb6e7
--- /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) { }
+}
-- 
GitLab