Commit 02ae6e2e by Alexandre Petit-Bianco Committed by Alexandre Petit-Bianco

parse.y (process_imports): Consider that one might be trying to import an innerclass.

2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>

        * parse.y (process_imports): Consider that one might be trying to
        import an innerclass. Fixes gcj/254

(http://gcc.gnu.org/ml/gcc-patches/2000-10/msg00631.html)

From-SVN: r36948
parent cc3f7b54
......@@ -671,6 +671,11 @@ Sun Aug 6 00:47:24 2000 Ovidiu Predescu <ovidiu@cup.hp.com>
2000-07-19 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (process_imports): Consider that one might be trying to
import an innerclass. Fixes gcj/254
2000-07-19 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (find_as_inner_class): Handle the case where the
enclosing context of an innerclass has been loaded as bytecode.
......
......@@ -6492,10 +6492,29 @@ process_imports ()
/* Don't load twice something already defined. */
if (IDENTIFIER_CLASS_VALUE (to_be_found))
continue;
QUALIFIED_P (to_be_found) = 1;
load_class (to_be_found, 0);
error_found =
check_pkg_class_access (to_be_found, TREE_PURPOSE (import));
while (1)
{
tree left;
QUALIFIED_P (to_be_found) = 1;
load_class (to_be_found, 0);
error_found =
check_pkg_class_access (to_be_found, TREE_PURPOSE (import));
/* We found it, we can bail out */
if (IDENTIFIER_CLASS_VALUE (to_be_found))
break;
/* We haven't found it. Maybe we're trying to access an
inner class. The only way for us to know is to try again
after having dropped a qualifier. If we can't break it further,
we have an error. */
if (breakdown_qualified (&left, NULL, to_be_found))
break;
to_be_found = left;
}
if (!IDENTIFIER_CLASS_VALUE (to_be_found))
{
parse_error_context (TREE_PURPOSE (import),
......
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