summaryrefslogtreecommitdiff
path: root/gcc/java/parse.y
diff options
context:
space:
mode:
authorapbianco <apbianco@138bc75d-0d04-0410-961f-82ee72b054a4>1999-05-28 19:26:08 +0000
committerapbianco <apbianco@138bc75d-0d04-0410-961f-82ee72b054a4>1999-05-28 19:26:08 +0000
commit2d3ec8b22cb3e578896b9cc5819da87180d1ad0f (patch)
tree6e83ec300251b7f8543755d3a5cf328700d28684 /gcc/java/parse.y
parent7e08f4b2bcd144fc77ffc4d997480ecf26f06736 (diff)
downloadgcc-2d3ec8b22cb3e578896b9cc5819da87180d1ad0f.tar.gz
Fri May 28 18:22:45 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (lookup_field_wrapper): Unified returned value to NULL or the searched field decl. Fri May 28 11:34:05 1999 Alexandre Petit-Bianco <apbianco@cygnus.com> * parse.y (fold_constant_for_init): Convert numerical constant values to the type of the assigned field. Thu May 27 19:57:40 1999 Alexandre Petit-Bianco <apbianco@cygnus.com> * expr.c (lookup_field): Relaxed the test on class loading error detection. * parse.y (fold_constant_for_init): Enabeled old code. Wed May 26 18:06:02 1999 Alexandre Petit-Bianco <apbianco@cygnus.com> * parse.y (valid_ref_assignconv_cast_p): Let `_Jv_CheckCast' decide the validity of the cast of a java.lang.Cloneable reference to an array. (patch_conditional_expr): Fixed first argument passed to binary_numeric_promotion. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27229 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/java/parse.y')
-rw-r--r--gcc/java/parse.y14
1 files changed, 8 insertions, 6 deletions
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index 1f9e9957756..5a5c6744bd1 100644
--- a/gcc/java/parse.y
+++ b/gcc/java/parse.y
@@ -3081,7 +3081,7 @@ lookup_field_wrapper (class, name)
java_parser_context_save_global ();
decl = lookup_field (&type, name);
java_parser_context_restore_global ();
- return decl;
+ return decl == error_mark_node ? NULL : decl;
}
/* Find duplicate field within the same class declarations and report
@@ -9097,7 +9097,8 @@ valid_ref_assignconv_cast_p (source, dest, cast)
return source == dest || interface_of_p (dest, source);
}
else /* Array */
- return 0;
+ return (cast ?
+ (DECL_NAME (TYPE_NAME (source)) == java_lang_cloneable) : 0);
}
if (TYPE_ARRAY_P (source))
{
@@ -11464,7 +11465,7 @@ patch_conditional_expr (node, wfl_cond, wfl_op1)
/* Otherwise, binary numeric promotion is applied and the
resulting type is the promoted type of operand 1 and 2 */
else
- resulting_type = binary_numeric_promotion (t2, t2,
+ resulting_type = binary_numeric_promotion (t1, t2,
&TREE_OPERAND (node, 1),
&TREE_OPERAND (node, 2));
}
@@ -11521,8 +11522,11 @@ fold_constant_for_init (node, context)
tree op0, op1, val;
enum tree_code code = TREE_CODE (node);
- if (code == INTEGER_CST || code == REAL_CST || code == STRING_CST)
+ if (code == STRING_CST)
return node;
+
+ if (code == INTEGER_CST || code == REAL_CST)
+ return convert (TREE_TYPE (context), node);
if (TREE_TYPE (node) != NULL_TREE && code != VAR_DECL)
return NULL_TREE;
@@ -11617,13 +11621,11 @@ fold_constant_for_init (node, context)
}
else
{
-#if 0
/* Wait until the USE_COMPONENT_REF re-write. FIXME. */
qualify_ambiguous_name (node);
if (resolve_field_access (node, &decl, NULL)
&& decl != NULL_TREE)
return fold_constant_for_init (decl, decl);
-#endif
return NULL_TREE;
}
}