aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlexandre Petit-Bianco <apbianco@cygnus.com>2000-07-27 11:13:51 +0000
committerAlexandre Petit-Bianco <apbianco@gcc.gnu.org>2000-07-27 04:13:51 -0700
commit1e12ab9b731406758cce12e897b7aa8cbc854e78 (patch)
tree678d65d867747419c99f55f70ac58873882c5de3 /gcc
parentb8e42be70d61c89e216a15e5711a9adafdada5d9 (diff)
downloadgcc-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')
-rw-r--r--gcc/java/ChangeLog14
-rw-r--r--gcc/java/jcf-parse.c9
-rw-r--r--gcc/java/parse.y24
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))));
}