summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>2004-01-27 17:30:06 +0000
committeraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>2004-01-27 17:30:06 +0000
commit0b6bbaf125bde345724352f1d7d1aba8b47d0ee2 (patch)
treea322c1cab85416d0275cf53500e49752e214bcc5
parentef4fc2b2f48049f043b10229a700a24efa181b81 (diff)
downloadppe42-gcc-0b6bbaf125bde345724352f1d7d1aba8b47d0ee2.tar.gz
ppe42-gcc-0b6bbaf125bde345724352f1d7d1aba8b47d0ee2.zip
2004-01-27 Andrew Haley <aph@redhat.com>
java/13273 * parse.y (check_interface_throws_clauses): Make sure class_decl has been loaded. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@76732 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/java/ChangeLog6
-rw-r--r--gcc/java/parse.y14
2 files changed, 18 insertions, 2 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 5d9ae79d2e1..c048dfada2c 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -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
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index 507e9583e86..620973745b9 100644
--- a/gcc/java/parse.y
+++ b/gcc/java/parse.y
@@ -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));
OpenPOWER on IntegriCloud