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
This commit is contained in:
Alexandre Petit-Bianco 2000-10-19 07:51:54 +00:00 committed by Alexandre Petit-Bianco
parent cc3f7b54c9
commit 02ae6e2e4b
2 changed files with 28 additions and 4 deletions

View File

@ -669,6 +669,11 @@ Sun Aug 6 00:47:24 2000 Ovidiu Predescu <ovidiu@cup.hp.com>
* parse.h (SET_TYPE_FOR_RESOLUTION): Use GET_CPC.
* parse.y (method_header): Likewise.
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

View File

@ -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),