Commit 2d7b3505 by Andrew Haley Committed by Andrew Haley

parse.y (java_expand_classes): Scan the whole class list looking for access…

parse.y (java_expand_classes): Scan the whole class list looking for access methods that haven't yet been expanded.

2003-01-31  Andrew Haley  <aph@redhat.com>

        * parse.y (java_expand_classes): Scan the whole class list looking
        for access methods that haven't yet been expanded.

From-SVN: r62329
parent cea9c57b
2003-01-31 Andrew Haley <aph@redhat.com>
* parse.y (java_expand_classes): Scan the whole class list looking
for access methods that haven't yet been expanded.
2003-01-31 Adrian Bunk <bunk@fs.tum.de> 2003-01-31 Adrian Bunk <bunk@fs.tum.de>
Fix for java/4269: Fix for java/4269:
......
...@@ -8888,6 +8888,65 @@ java_expand_classes (void) ...@@ -8888,6 +8888,65 @@ java_expand_classes (void)
} }
} }
/* Expanding the constructors of anonymous classes generates access
methods. Scan all the methods looking for null DECL_RESULTs --
this will be the case if a method hasn't been expanded. */
for (cur_ctxp = ctxp_for_generation; cur_ctxp; cur_ctxp = cur_ctxp->next)
{
tree current;
ctxp = cur_ctxp;
for (current = ctxp->class_list; current; current = TREE_CHAIN (current))
{
tree d;
current_class = TREE_TYPE (current);
for (d = TYPE_METHODS (current_class); d; d = TREE_CHAIN (d))
{
if (DECL_RESULT (d) == NULL_TREE)
{
restore_line_number_status (1);
java_complete_expand_method (d);
restore_line_number_status (0);
}
}
}
}
/* ??? Instead of all this we could iterate around the list of
classes until there were no more un-expanded methods. It would
take a little longer -- one pass over the whole list of methods
-- but it would be simpler. Like this: */
#if 0
{
int something_changed;
do
{
something_changed = 0;
for (cur_ctxp = ctxp_for_generation; cur_ctxp; cur_ctxp = cur_ctxp->next)
{
tree current;
ctxp = cur_ctxp;
for (current = ctxp->class_list; current; current = TREE_CHAIN (current))
{
tree d;
current_class = TREE_TYPE (current);
for (d = TYPE_METHODS (current_class); d; d = TREE_CHAIN (d))
{
if (DECL_RESULT (d) == NULL_TREE)
{
something_changed = 1;
restore_line_number_status (1);
java_complete_expand_method (d);
restore_line_number_status (0);
}
}
}
}
}
while (something_changed);
}
#endif
/* If we've found error at that stage, don't try to generate /* If we've found error at that stage, don't try to generate
anything, unless we're emitting xrefs or checking the syntax only anything, unless we're emitting xrefs or checking the syntax only
(but not using -fsyntax-only for the purpose of generating (but not using -fsyntax-only for the purpose of generating
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment