This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
[Patch] Java: fix to java/1392
- To: gcc-patches at gcc dot gnu dot org, java-patches at gcc dot gnu dot org
- Subject: [Patch] Java: fix to java/1392
- From: Alexandre Petit-Bianco <apbianco at cygnus dot com>
- Date: Tue, 13 Feb 2001 15:58:32 -0800
- Reply-to: apbianco at cygnus dot com
This fixes java/1392:
http://gcc.gnu.org/ml/java-prs/2000-q4/msg00075.html
I'm checking this in the trunk and the 3.0 branch.
./A
2001-02-07 Alexandre Petit-Bianco <apbianco@cygnus.com>
* decl.c (classdollar_identifier_node): Initialize.
* java-tree.h (enum java_tree_index): New entry
`JTI_CLASSDOLLAR_IDENTIFIER_NODE.'
(classdollar_identifier_node): New macro.
(ID_CLASSDOLLAR_P): Likewise.
* parse.y (build_dot_class_method): Use `classdollar_identifier_node.'
(build_dot_class_method_invocation): Likewise.
(find_applicable_accessible_methods_list): `class$' can't be
inherited.
Index: decl.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/java/decl.c,v
retrieving revision 1.87
diff -u -p -r1.87 decl.c
--- decl.c 2001/02/04 22:44:02 1.87
+++ decl.c 2001/02/11 02:48:59
@@ -602,6 +602,7 @@ init_decl_processing ()
super_identifier_node = get_identifier ("super");
continue_identifier_node = get_identifier ("continue");
access0_identifier_node = get_identifier ("access$0");
+ classdollar_identifier_node = get_identifier ("class$");
/* for lack of a better place to put this stub call */
init_expr_processing();
Index: java-tree.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/java/java-tree.h,v
retrieving revision 1.97
diff -u -p -r1.97 java-tree.h
--- java-tree.h 2001/02/09 00:32:11 1.97
+++ java-tree.h 2001/02/11 02:49:04
@@ -270,6 +279,7 @@ enum java_tree_index
JTI_SUPER_IDENTIFIER_NODE,
JTI_CONTINUE_IDENTIFIER_NODE,
JTI_ACCESS0_IDENTIFIER_NODE,
+ JTI_CLASSDOLLAR_IDENTIFIER_NODE,
JTI_ONE_ELT_ARRAY_DOMAIN_TYPE,
JTI_RETURN_ADDRESS_TYPE_NODE,
@@ -460,6 +473,8 @@ extern tree java_global_trees[JTI_MAX];
java_global_trees[JTI_CONTINUE_IDENTIFIER_NODE] /* "continue" */
#define access0_identifier_node \
java_global_trees[JTI_ACCESS0_IDENTIFIER_NODE] /* "access$0" */
+#define classdollar_identifier_node \
+ java_global_trees[JTI_CLASSDOLLAR_IDENTIFIER_NODE] /* "class$" */
#define one_elt_array_domain_type \
java_global_trees[JTI_ONE_ELT_ARRAY_DOMAIN_TYPE]
/* The type of the return address of a subroutine. */
@@ -1154,6 +1178,7 @@ struct rtx_def * java_lang_expand_expr P
#define ID_FINIT_P(ID) ((ID) == finit_identifier_node \
|| (ID) == finit_leg_identifier_node)
#define ID_CLINIT_P(ID) ((ID) == clinit_identifier_node)
+#define ID_CLASSDOLLAR_P(ID) ((ID) == classdollar_identifier_node)
/* Access flags etc for a variable/field (a FIELD_DECL): */
Index: parse.y
===================================================================
RCS file: /cvs/gcc/gcc/gcc/java/parse.y,v
retrieving revision 1.251
diff -u -p -r1.251 parse.y
--- parse.y 2001/02/05 18:09:45 1.251
+++ parse.y 2001/02/11 02:49:49
@@ -8327,7 +8330,7 @@ build_dot_class_method (class)
/* Create the "class$" function */
mdecl = create_artificial_method (class, ACC_STATIC,
build_pointer_type (class_type_node),
- get_identifier ("class$"), args);
+ classdollar_identifier_node, args);
DECL_FUNCTION_THROWS (mdecl) = build_tree_list (NULL_TREE,
no_class_def_found_error);
@@ -8401,7 +8404,7 @@ build_dot_class_method_invocation (type)
s = build_string (IDENTIFIER_LENGTH (sig_id),
IDENTIFIER_POINTER (sig_id));
- return build_method_invocation (build_wfl_node (get_identifier ("class$")),
+ return build_method_invocation (build_wfl_node (classdollar_identifier_node),
build_tree_list (NULL_TREE, s));
}
@@ -10427,10 +10430,10 @@ find_applicable_accessible_methods_list
search_applicable_methods_list (lc, TYPE_METHODS (class),
name, arglist, &list, &all_list);
- /* When looking finit$, we turn LC to 1 so that we only search
- in class. Note that we should have found something at
- this point. */
- if (ID_FINIT_P (name))
+ /* When looking finit$ or class$, we turn LC to 1 so that we
+ only search in class. Note that we should have found
+ something at this point. */
+ if (ID_FINIT_P (name) || ID_CLASSDOLLAR_P (name))
{
lc = 1;
if (!list)