This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

[Patch] Java: fix to java/1392



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)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]