diff options
author | Alexandre Petit-Bianco <apbianco@cygnus.com> | 2000-07-27 11:13:51 +0000 |
---|---|---|
committer | Alexandre Petit-Bianco <apbianco@gcc.gnu.org> | 2000-07-27 04:13:51 -0700 |
commit | 1e12ab9b731406758cce12e897b7aa8cbc854e78 (patch) | |
tree | 678d65d867747419c99f55f70ac58873882c5de3 /gcc/java | |
parent | b8e42be70d61c89e216a15e5711a9adafdada5d9 (diff) | |
download | gcc-1e12ab9b731406758cce12e897b7aa8cbc854e78.zip gcc-1e12ab9b731406758cce12e897b7aa8cbc854e78.tar.gz gcc-1e12ab9b731406758cce12e897b7aa8cbc854e78.tar.bz2 |
[multiple changes]
2000-07-25 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (jdep_resolve_class): Don't bother checking potential
innerclass access if `decl' is NULL.
(find_in_imports_on_demand): TREE_PURPOSE of `import' contains the
WFL.
2000-07-24 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (find_as_inner_class): Removed 2000-07-19 patches.
* jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Local `decl' moved
outside the `if' statement, alias to innerclass removed, `decl'
used to mark the class complete.
From-SVN: r35287
Diffstat (limited to 'gcc/java')
-rw-r--r-- | gcc/java/ChangeLog | 14 | ||||
-rw-r--r-- | gcc/java/jcf-parse.c | 9 | ||||
-rw-r--r-- | gcc/java/parse.y | 24 |
3 files changed, 22 insertions, 25 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 3e51555..4193b38 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,7 +1,21 @@ 2000-07-25 Alexandre Petit-Bianco <apbianco@cygnus.com> + * parse.y (jdep_resolve_class): Don't bother checking potential + innerclass access if `decl' is NULL. + (find_in_imports_on_demand): TREE_PURPOSE of `import' contains the + WFL. + +2000-07-25 Alexandre Petit-Bianco <apbianco@cygnus.com> + * parse.c: Remove (again.) +2000-07-24 Alexandre Petit-Bianco <apbianco@cygnus.com> + + * parse.y (find_as_inner_class): Removed 2000-07-19 patches. + * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Local `decl' moved + outside the `if' statement, alias to innerclass removed, `decl' + used to mark the class complete. + 2000-07-21 Alexandre Petit-Bianco <apbianco@cygnus.com> * parse.y (simple_name:): Fixed typo in error message. diff --git a/gcc/java/jcf-parse.c b/gcc/java/jcf-parse.c index bd41b8b..78bf521 100644 --- a/gcc/java/jcf-parse.c +++ b/gcc/java/jcf-parse.c @@ -192,19 +192,18 @@ set_source_filename (jcf, index) int c = (count); \ while (c--) \ { \ - tree class = get_class_constant (jcf, JCF_readu2 (jcf)); \ - if (DECL_P (class) && !CLASS_COMPLETE_P (class)) \ + tree class = get_class_constant (jcf, JCF_readu2 (jcf)); \ + tree decl = TYPE_NAME (class); \ + if (DECL_P (decl) && !CLASS_COMPLETE_P (decl)) \ { \ tree outer = TYPE_NAME (get_class_constant (jcf, \ JCF_readu2 (jcf))); \ tree alias = get_name_constant (jcf, JCF_readu2 (jcf)); \ - tree decl = TYPE_NAME (class); \ JCF_SKIP (jcf, 2); \ - IDENTIFIER_GLOBAL_VALUE (alias) = decl; \ DECL_CONTEXT (decl) = outer; \ DECL_INNER_CLASS_LIST (outer) = \ tree_cons (decl, alias, DECL_INNER_CLASS_LIST (outer)); \ - CLASS_COMPLETE_P (class) = 1; \ + CLASS_COMPLETE_P (decl) = 1; \ } \ else \ JCF_SKIP (jcf, 6); \ diff --git a/gcc/java/parse.y b/gcc/java/parse.y index 0aded25..f2dac88 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -642,11 +642,6 @@ name: simple_name: identifier /* Default rule */ - { - if (strchr (IDENTIFIER_POINTER (EXPR_WFL_NODE ($$)), '$')) - parse_error_context ($$, "Invalid type name `%s'", - IDENTIFIER_POINTER (EXPR_WFL_NODE ($$))); - } ; qualified_name: @@ -3497,18 +3492,7 @@ find_as_inner_class (enclosing, name, cl) else qual = build_tree_list (build_expr_wfl (name, NULL, 0, 0), NULL_TREE); - if (!(to_return = find_as_inner_class_do (qual, enclosing))) - { - /* It might be the case that the enclosing class was loaded as - bytecode, in which case it will be missing the - DECL_INNER_CLASS_LIST. We build a fully qualified internal - innerclass name and we try to load it. */ - tree fqin = identifier_subst (name, "", '.', '$', ""); - tree ptr; - BUILD_PTR_FROM_NAME (ptr, fqin); - to_return = resolve_class (NULL_TREE, ptr, NULL_TREE, cl); - } - return to_return; + return find_as_inner_class_do (qual, enclosing); } /* We go inside the list of sub classes and try to find a way @@ -5214,8 +5198,7 @@ jdep_resolve_class (dep) if (!decl) complete_class_report_errors (dep); - - if (PURE_INNER_CLASS_DECL_P (decl)) + else if (PURE_INNER_CLASS_DECL_P (decl)) check_inner_class_access (decl, JDEP_ENCLOSING (dep), JDEP_WFL (dep)); return decl; } @@ -6630,7 +6613,8 @@ find_in_imports_on_demand (class_type) { seen_once++; parse_error_context - (import, "Type `%s' also potentially defined in package `%s'", + (TREE_PURPOSE (import), + "Type `%s' also potentially defined in package `%s'", IDENTIFIER_POINTER (TYPE_NAME (class_type)), IDENTIFIER_POINTER (EXPR_WFL_NODE (TREE_PURPOSE (import)))); } |