re GNATS gcj/260 ("Klass.class" expression should cause Klass to be initialized)
authorTom Tromey <tromey@cygnus.com>
Sun, 25 Jun 2000 17:25:31 +0000 (17:25 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Sun, 25 Jun 2000 17:25:31 +0000 (17:25 +0000)
* parse.y (patch_incomplete_class_ref): Initialize the returned
class.  For PR gcj/260.

From-SVN: r34695

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

index 70b26f0..5b0e1a6 100644 (file)
@@ -1,3 +1,8 @@
+2000-06-23  Tom Tromey  <tromey@cygnus.com>
+
+       * parse.y (patch_incomplete_class_ref): Initialize the returned
+       class.  For PR gcj/260.
+
 2000-06-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
 
        * except.c (prepare_eh_table_type): Use `CATCH_ALL_TYPE'.
index 415d877..d6ece50 100644 (file)
@@ -211,7 +211,7 @@ static tree lookup_method_invoke PARAMS ((int, tree, tree, tree, tree));
 static tree register_incomplete_type PARAMS ((int, tree, tree, tree));
 static tree obtain_incomplete_type PARAMS ((tree));
 static tree java_complete_lhs PARAMS ((tree));
-tree java_complete_tree PARAMS ((tree));
+static tree java_complete_tree PARAMS ((tree));
 static tree maybe_generate_pre_expand_clinit PARAMS ((tree));
 static int maybe_yank_clinit PARAMS ((tree));
 static void java_complete_expand_method PARAMS ((tree));
@@ -13280,7 +13280,7 @@ breakdown_qualified (left, right, source)
    local variable decls if present.
    Same as java_complete_lhs, but does resolve static finals to values. */
 
-tree
+static tree
 java_complete_tree (node)
      tree node;
 {
@@ -15690,7 +15690,10 @@ patch_incomplete_class_ref (node)
     return error_mark_node;
 
   if (!flag_emit_class_files || JPRIMITIVE_TYPE_P (ref_type))
-    return build_class_ref (ref_type);
+    {
+      /* A class referenced by `foo.class' is initialized.  */
+      return build_class_init (ref_type, build_class_ref (ref_type));
+    }
 
   /* If we're emitting class files and we have to deal with non
      primitive types, we invoke (and consider generating) the
index 3cf2df4..3e0f83e 100644 (file)
@@ -12992,7 +12992,10 @@ patch_incomplete_class_ref (node)
     return error_mark_node;
 
   if (!flag_emit_class_files || JPRIMITIVE_TYPE_P (ref_type))
-    return build_class_ref (ref_type);
+    {
+      /* A class referenced by `foo.class' is initialized.  */
+      return build_class_init (ref_type, build_class_ref (ref_type));
+    }
 
   /* If we're emitting class files and we have to deal with non
      primitive types, we invoke (and consider generating) the