parse.y (check_inner_circular_reference): Ignore incomplete types.
authorTom Tromey <tromey@redhat.com>
Fri, 29 Mar 2002 21:58:49 +0000 (21:58 +0000)
committerAlexandre Petit-Bianco <apbianco@gcc.gnu.org>
Fri, 29 Mar 2002 21:58:49 +0000 (13:58 -0800)
2002-03-29  Tom Tromey  <tromey@redhat.com>

* parse.y (check_inner_circular_reference): Ignore incomplete
types.

(http://gcc.gnu.org/ml/gcc-patches/2002-03/msg01987.html)

From-SVN: r51573

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

index b4ffd19..5adea4c 100644 (file)
@@ -1,3 +1,8 @@
+2002-03-29  Tom Tromey  <tromey@redhat.com>
+
+       * parse.y (check_inner_circular_reference): Ignore incomplete
+       types.
+
 2002-03-29  Neil Booth  <neil@daikokuya.demon.co.uk>
 
        * Make-lang.in (builtins.o): Update.
index 5bfcbd0..6dccb3b 100644 (file)
@@ -5245,14 +5245,23 @@ check_inner_circular_reference (source, target)
 
   if (!basetype_vec)
     return NULL_TREE;
-  
+
   for (i = 0; i < TREE_VEC_LENGTH (basetype_vec); i++)
     {
-      tree su = BINFO_TYPE (TREE_VEC_ELT (basetype_vec, i));
+      tree su;
+
+      /* We can end up with a NULL_TREE or an incomplete type here if
+        we encountered previous type resolution errors. It's safe to
+        simply ignore these cases.  */
+      if (TREE_VEC_ELT (basetype_vec, i) == NULL_TREE)
+       continue;
+      su = BINFO_TYPE (TREE_VEC_ELT (basetype_vec, i));
+      if (INCOMPLETE_TYPE_P (su))
+       continue;
 
       if (inherits_from_p (su, target))
        return lookup_cl (TYPE_NAME (su));
-      
+
       for (ctx = DECL_CONTEXT (TYPE_NAME (su)); ctx; ctx = DECL_CONTEXT (ctx))
        {
          /* An enclosing context shouldn't be TARGET */