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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Patch: RFA: PR java/8473


This fixes PR 8473.  There is some information in the PR, but
basically this implements the syntax as proposed by the Java Spec
Report; one part of the JLS incorrectly indicates that this is
invalid, which is probably why we didn't implement it before.

This fixes one Jacks failure, patch for jacks.xfail included.

Ok for trunk?

Tom

Index: gcc/java/ChangeLog
from  Tom Tromey  <tromey@redhat.com>

	PR java/8473:
	* parse.y (primary): Changed for initialized and uninitialized
	array creations.
	(array_access): Handle array_creation_initialized.
	(array_creation_expression): Split into
	array_creation_initialized and array_creation_uninitialized.

Index: gcc/java/parse.y
===================================================================
RCS file: /cvs/gcc/gcc/gcc/java/parse.y,v
retrieving revision 1.499
diff -u -r1.499 parse.y
--- gcc/java/parse.y 10 Aug 2004 04:29:16 -0000 1.499
+++ gcc/java/parse.y 14 Aug 2004 00:19:38 -0000
@@ -543,8 +543,8 @@
 			if_then_else_statement_nsi while_statement_nsi
 			for_statement_nsi statement_expression_list for_init
 			for_update statement_expression expression_statement
-			primary_no_new_array expression primary
-			array_creation_expression array_type
+			primary_no_new_array expression primary array_type
+			array_creation_initialized array_creation_uninitialized
 			class_instance_creation_expression field_access
 			method_invocation array_access something_dot_new
 			argument_list postfix_expression while_expression
@@ -1945,7 +1945,8 @@
 /* 19.12 Production from 15: Expressions  */
 primary:
 	primary_no_new_array
-|	array_creation_expression
+|	array_creation_uninitialized
+|	array_creation_initialized
 ;
 
 primary_no_new_array:
@@ -2106,7 +2107,7 @@
 		{yyerror ("Missing term"); RECOVER;}
 ;
 
-array_creation_expression:
+array_creation_uninitialized:
 	NEW_TK primitive_type dim_exprs
 		{ $$ = build_newarray_node ($2, $3, 0); }
 |	NEW_TK class_or_interface_type dim_exprs
@@ -2115,9 +2116,16 @@
 		{ $$ = build_newarray_node ($2, $3, pop_current_osb (ctxp));}
 |	NEW_TK class_or_interface_type dim_exprs dims
 		{ $$ = build_newarray_node ($2, $3, pop_current_osb (ctxp));}
+|	NEW_TK error CSB_TK
+		{yyerror ("'[' expected"); DRECOVER ("]");}
+|	NEW_TK error OSB_TK
+		{yyerror ("']' expected"); RECOVER;}
+;
+
+array_creation_initialized:
         /* Added, JDK1.1 anonymous array. Initial documentation rule
            modified */
-|	NEW_TK class_or_interface_type dims array_initializer
+	NEW_TK class_or_interface_type dims array_initializer
 		{
 		  char *sig;
 		  int osb = pop_current_osb (ctxp);
@@ -2271,6 +2279,8 @@
 		{ $$ = build_array_ref ($2.location, $1, $3); }
 |	primary_no_new_array OSB_TK expression CSB_TK
 		{ $$ = build_array_ref ($2.location, $1, $3); }
+|	array_creation_initialized OSB_TK expression CSB_TK
+		{ $$ = build_array_ref ($2.location, $1, $3); }
 |	name OSB_TK error
 		{
 		  yyerror ("Missing term and ']' expected");
@@ -2291,6 +2301,16 @@
 		  yyerror ("']' expected");
 		  DRECOVER(array_access);
 		}
+|	array_creation_initialized OSB_TK error
+		{
+		  yyerror ("Missing term and ']' expected");
+		  DRECOVER(array_access);
+		}
+|	array_creation_initialized OSB_TK expression error
+		{
+		  yyerror ("']' expected");
+		  DRECOVER(array_access);
+		}
 ;
 
 postfix_expression:
Index: libjava/ChangeLog
from  Tom Tromey  <tromey@redhat.com>

	PR java/8473:
	* testsuite/libjava.jacks/jacks.xfail: Removed passing test.

Index: libjava/testsuite/libjava.jacks/jacks.xfail
===================================================================
RCS file: /cvs/gcc/gcc/libjava/testsuite/libjava.jacks/jacks.xfail,v
retrieving revision 1.16
diff -u -r1.16 jacks.xfail
--- libjava/testsuite/libjava.jacks/jacks.xfail 14 Jul 2004 20:45:55 -0000 1.16
+++ libjava/testsuite/libjava.jacks/jacks.xfail 14 Aug 2004 00:19:44 -0000
@@ -183,7 +183,6 @@
 15.12.4.1-runtime-static-2
 15.12.4.1-runtime-super-1
 15.12.4.1-runtime-super-2
-15.13-anon-1
 15.14-runtime-3
 15.14-runtime-4
 15.15-precedence-5


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