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>
Fix for java/4269:
......
......@@ -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
anything, unless we're emitting xrefs or checking the syntax only
(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