From 899deeca6c931c4f4a21e73d40b623346d632fe9 Mon Sep 17 00:00:00 2001 From: Bryce McKinlay Date: Mon, 2 Aug 2004 21:20:46 +0000 Subject: [PATCH] re PR java/16701 (Error when constant initializer depends on another constant with restricted access) 2004-08-02 Bryce McKinlay PR java/16701 * parse.y (fold_constant_for_init): Call resolve_field_access with correct current_class context. 2004-08-02 Bryce McKinlay * testsuite/libjava.compile/PR16701.java: New test. From-SVN: r85453 --- gcc/java/ChangeLog | 6 ++++++ gcc/java/parse.y | 10 +++++----- libjava/ChangeLog | 4 ++++ libjava/testsuite/libjava.compile/PR16701.java | 10 ++++++++++ 4 files changed, 25 insertions(+), 5 deletions(-) create mode 100644 libjava/testsuite/libjava.compile/PR16701.java diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index b2c0a625fa6..1cd9315f14b 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,9 @@ +2004-08-02 Bryce McKinlay + + PR java/16701 + * parse.y (fold_constant_for_init): Call resolve_field_access with + correct current_class context. + 2004-08-01 Roger Sayle * decl.c (update_aliases, initialize_local_variable): Replace calls diff --git a/gcc/java/parse.y b/gcc/java/parse.y index c251f2f12b7..fdff7467649 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -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; } diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 28973292b36..81922f2655c 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,7 @@ +2004-08-02 Bryce McKinlay + + * testsuite/libjava.compile/PR16701.java: New test. + 2004-08-01 Andrew John Hughes * java/util/Collection.java, java/util/List.java, diff --git a/libjava/testsuite/libjava.compile/PR16701.java b/libjava/testsuite/libjava.compile/PR16701.java new file mode 100644 index 00000000000..60d459a69c7 --- /dev/null +++ b/libjava/testsuite/libjava.compile/PR16701.java @@ -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; +} -- 2.30.2