OSDN Git Service

Fri May 28 18:22:45 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
authorapbianco <apbianco@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 28 May 1999 19:26:08 +0000 (19:26 +0000)
committerapbianco <apbianco@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 28 May 1999 19:26:08 +0000 (19:26 +0000)
        * 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

gcc/java/ChangeLog
gcc/java/expr.c
gcc/java/parse.c
gcc/java/parse.y

index 72e8d18..35e7d99 100644 (file)
@@ -1,3 +1,27 @@
+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.
+
 Wed May 26 15:33:06 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
 
        * parse.y (qualify_ambiguous_name): Take into account that a
index 79d0b7b..64651f5 100644 (file)
@@ -1162,7 +1162,7 @@ lookup_field (typep, name)
   if (CLASS_P (*typep) && !CLASS_LOADED_P (*typep))
     {
       load_class (*typep, 1);
-      if (TREE_CODE (TYPE_SIZE (*typep)) == ERROR_MARK)
+      if (!TYPE_SIZE (*typep) || TREE_CODE (TYPE_SIZE (*typep)) == ERROR_MARK)
        return error_mark_node;
     }
   do
index ba6ccf4..1606859 100644 (file)
@@ -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;
            }
        }
index 1f9e995..5a5c674 100644 (file)
@@ -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;
            }
        }