re PR java/25429 (can't see private static final int CREATE = 1)

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.

Co-Authored-By: Andrew Haley <aph@redhat.com>

From-SVN: r108608
This commit is contained in:
Tom Tromey 2005-12-16 00:00:43 +00:00 committed by Tom Tromey
parent 094bb856e6
commit 86bcd3a224
5 changed files with 47 additions and 2 deletions

View File

@ -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

View File

@ -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)))
{

View File

@ -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.

View File

@ -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) { }
}

View File

@ -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) { }
}