aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/parse.y
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2002-11-18 18:13:36 +0000
committerTom Tromey <tromey@gcc.gnu.org>2002-11-18 18:13:36 +0000
commit5602b49d692730366a6e554b52fefa604459d136 (patch)
treeb4871257f616f991308049a0a275320ae8f40138 /gcc/java/parse.y
parent441c77991340c51604639124d611a38fed1c5292 (diff)
downloadgcc-5602b49d692730366a6e554b52fefa604459d136.zip
gcc-5602b49d692730366a6e554b52fefa604459d136.tar.gz
gcc-5602b49d692730366a6e554b52fefa604459d136.tar.bz2
re PR java/7912 (invalid verification error for arrays)
Fix for PR java/7912: * expr.c (can_widen_reference_to): Allow cast of array to Cloneable or Serializable. * java-tree.h (java_lang_cloneable_identifier_node): Declare. (java_io_serializable_identifier_node): Likewise. * parse.y (java_lang_cloneable, java_io_serializable): Removed. (valid_ref_assignconv_cast_p): Use new identifier nodes. * lex.c (java_init_lex): Don't initialize java_lang_cloneable and java_io_serializable. * decl.c (java_init_decl_processing): Initialize java_lang_cloneable_identifier_node and java_io_serializable_identifier_node. (java_lang_cloneable_identifier_node): New global. (java_io_serializable_identifier_node): Likewise. From-SVN: r59227
Diffstat (limited to 'gcc/java/parse.y')
-rw-r--r--gcc/java/parse.y17
1 files changed, 7 insertions, 10 deletions
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index 61595b8..2a77235 100644
--- a/gcc/java/parse.y
+++ b/gcc/java/parse.y
@@ -391,12 +391,6 @@ static GTY(()) tree java_lang_id;
instance/field access functions. */
static GTY(()) tree inst_id;
-/* The "java.lang.Cloneable" qualified name. */
-static GTY(()) tree java_lang_cloneable;
-
-/* The "java.io.Serializable" qualified name. */
-static GTY(()) tree java_io_serializable;
-
/* Context and flag for static blocks */
static GTY(()) tree current_static_block;
@@ -13071,9 +13065,10 @@ valid_ref_assignconv_cast_p (source, dest, cast)
{
/* Array */
return (cast
- && (DECL_NAME (TYPE_NAME (source)) == java_lang_cloneable
+ && (DECL_NAME (TYPE_NAME (source))
+ == java_lang_cloneable_identifier_node
|| (DECL_NAME (TYPE_NAME (source))
- == java_io_serializable)));
+ == java_io_serializable_identifier_node)));
}
}
if (TYPE_ARRAY_P (source))
@@ -13083,8 +13078,10 @@ valid_ref_assignconv_cast_p (source, dest, cast)
/* Can't cast an array to an interface unless the interface is
java.lang.Cloneable or java.io.Serializable. */
if (TYPE_INTERFACE_P (dest))
- return (DECL_NAME (TYPE_NAME (dest)) == java_lang_cloneable
- || DECL_NAME (TYPE_NAME (dest)) == java_io_serializable);
+ return (DECL_NAME (TYPE_NAME (dest))
+ == java_lang_cloneable_identifier_node
+ || (DECL_NAME (TYPE_NAME (dest))
+ == java_io_serializable_identifier_node));
else /* Arrays */
{
tree source_element_type = TYPE_ARRAY_ELEMENT (source);