diff options
author | Alexandre Petit-Bianco <apbianco@cygnus.com> | 1999-05-28 19:26:08 +0000 |
---|---|---|
committer | Alexandre Petit-Bianco <apbianco@gcc.gnu.org> | 1999-05-28 12:26:08 -0700 |
commit | 930248932e3864264cdfe7d40b00a0544f3d4de9 (patch) | |
tree | 6e83ec300251b7f8543755d3a5cf328700d28684 /gcc/java/parse.c | |
parent | 04b1e34d64fd6493fcec4ccb32345a8254f56f8d (diff) | |
download | gcc-930248932e3864264cdfe7d40b00a0544f3d4de9.zip gcc-930248932e3864264cdfe7d40b00a0544f3d4de9.tar.gz gcc-930248932e3864264cdfe7d40b00a0544f3d4de9.tar.bz2 |
[multiple changes]
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.
From-SVN: r27229
Diffstat (limited to 'gcc/java/parse.c')
-rw-r--r-- | gcc/java/parse.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/gcc/java/parse.c b/gcc/java/parse.c index ba6ccf4..1606859 100644 --- a/gcc/java/parse.c +++ b/gcc/java/parse.c @@ -5666,7 +5666,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 @@ -11682,7 +11682,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)) { @@ -14049,7 +14050,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)); } @@ -14106,8 +14107,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; @@ -14202,13 +14206,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; } } |