parse.y (obtain_incomplete_type): Don't wrap unknown types in TREE_LIST - just chain...
authorPer Bothner <bothner@gcc.gnu.org>
Fri, 19 Feb 1999 14:55:24 +0000 (06:55 -0800)
committerPer Bothner <bothner@gcc.gnu.org>
Fri, 19 Feb 1999 14:55:24 +0000 (06:55 -0800)
a
* parse.y (obtain_incomplete_type):  Don't wrap unknown types
in TREE_LIST - just chain the POINTER_TYPEs together.
(resolve_class):  If type already resolved, return decl.
After resolving, update TREE_TYPE(class_type), and name (if array).
* parse.h (do_resolve_class), parse.y:  Make non-static.
* class.c (maybe_layout_super_class):  Take this_class argument.
Do do_resolve_class if necessary.
(layout_class, layout_class_methods): Adjust calls appropriately.
* parse.h (JDEP_TO_RESOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED,
JDEP_RESOLVED_P):  Redefined for new TREE_LIST-less convention.
* typeck.c (build_java_array_type):  Don't call layout_class.

From-SVN: r25325

gcc/java/typeck.c

index 7dab3f251cea598470c1678a6c1211feaf425bd4..8d99fd822500626a48bde838dd5601e1d4ebd13a 100644 (file)
@@ -404,7 +404,12 @@ build_java_array_type (element_type, length)
     TYPE_ALIGN (t) = TYPE_ALIGN (element_type);
   pop_obstacks ();
 
-  layout_class (t);
+  /* We could layout_class, but that loads java.lang.Object prematurely.
+   * This is called by the parser, and it is a bad idea to do load_class
+   * in the middle of parsing, because of possible circularity problems. */
+  push_super_field (t, object_type_node);
+  layout_type (t);
+
   return t;
 }