re PR java/16701 (Error when constant initializer depends on another constant with restricted access)

2004-08-02  Bryce McKinlay  <mckinlay@redhat.com>

	PR java/16701
	* parse.y (fold_constant_for_init): Call resolve_field_access with
	correct current_class context.

2004-08-02  Bryce McKinlay  <mckinlay@redhat.com>

	* testsuite/libjava.compile/PR16701.java: New test.

From-SVN: r85453
This commit is contained in:
Bryce McKinlay 2004-08-02 21:20:46 +00:00 committed by Bryce McKinlay
parent 4c24b21a47
commit 899deeca6c
4 changed files with 25 additions and 5 deletions

View File

@ -1,3 +1,9 @@
2004-08-02 Bryce McKinlay <mckinlay@redhat.com>
PR java/16701
* parse.y (fold_constant_for_init): Call resolve_field_access with
correct current_class context.
2004-08-01 Roger Sayle <roger@eyesopen.com>
* decl.c (update_aliases, initialize_local_variable): Replace calls

View File

@ -15970,16 +15970,16 @@ fold_constant_for_init (tree node, tree context)
}
else
{
/* Install the proper context for the field resolution.
The prior context is restored once the name is
properly qualified. */
tree r = NULL_TREE;
/* Install the proper context for the field resolution. */
tree saved_current_class = current_class;
/* Wait until the USE_COMPONENT_REF re-write. FIXME. */
current_class = DECL_CONTEXT (context);
qualify_ambiguous_name (node);
r = resolve_field_access (node, &decl, NULL);
/* Restore prior context. */
current_class = saved_current_class;
if (resolve_field_access (node, &decl, NULL)
&& decl != NULL_TREE)
if (r != error_mark_node && decl != NULL_TREE)
return fold_constant_for_init (decl, decl);
return NULL_TREE;
}

View File

@ -1,3 +1,7 @@
2004-08-02 Bryce McKinlay <mckinlay@redhat.com>
* testsuite/libjava.compile/PR16701.java: New test.
2004-08-01 Andrew John Hughes <gnu_andrew@member.fsf.org>
* java/util/Collection.java, java/util/List.java,

View File

@ -0,0 +1,10 @@
class Cl
{
private static final int CONSTANT1 = 0x001;
public static final int CONSTANT2 = 0x002 >> CONSTANT1;
}
public class PR16701
{
public static final int VALUE = Cl.CONSTANT2;
}