parse.y (check_interface_throws_clauses): Make sure class_decl has been loaded.
authorAndrew Haley <aph@redhat.com>
Tue, 27 Jan 2004 17:30:06 +0000 (17:30 +0000)
committerAndrew Haley <aph@gcc.gnu.org>
Tue, 27 Jan 2004 17:30:06 +0000 (17:30 +0000)
2004-01-27  Andrew Haley  <aph@redhat.com>

        java/13273
        * parse.y (check_interface_throws_clauses): Make sure class_decl
        has been loaded.

From-SVN: r76732

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

index 5d9ae79d2e1b260f4db29f8f9dae92f00dec8e69..c048dfada2ceb3201db8c191abd0dbbfa52f0eb2 100644 (file)
@@ -1,3 +1,9 @@
+2004-01-27  Andrew Haley  <aph@redhat.com>
+
+       java/13273
+       * parse.y (check_interface_throws_clauses): Make sure class_decl
+       has been loaded.
+
 2004-01-22  Jeff Sturm  <jsturm@one-point.com>
 
        PR java/13733
index 507e9583e86ff90f4415a1eaddc49ab0de1cac62..620973745b973d4d38333e3fa89ee58e0c41ada1 100644 (file)
@@ -6485,10 +6485,20 @@ check_interface_throws_clauses (tree check_class_decl, tree class_decl)
 {
   for (; class_decl != NULL_TREE; class_decl = CLASSTYPE_SUPER (class_decl))
     {
-      tree bases = TYPE_BINFO_BASETYPES (class_decl);
-      int iface_len = TREE_VEC_LENGTH (bases) - 1;
+      tree bases;
+      int iface_len;
       int i;
 
+      if (! CLASS_LOADED_P (class_decl))
+       {
+         if (CLASS_FROM_SOURCE_P (class_decl))
+           safe_layout_class (class_decl);
+         else
+           load_class (class_decl, 1);
+       }
+
+      bases = TYPE_BINFO_BASETYPES (class_decl);
+      iface_len = TREE_VEC_LENGTH (bases) - 1;
       for (i = iface_len; i > 0; --i)
        {
          tree interface = BINFO_TYPE (TREE_VEC_ELT (bases, i));