This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Patch: RFA: PR java/8473
- From: Tom Tromey <tromey at redhat dot com>
- To: Gcc Patch List <gcc-patches at gcc dot gnu dot org>
- Cc: Java Patch List <java-patches at gcc dot gnu dot org>
- Date: 13 Aug 2004 18:26:41 -0600
- Subject: Patch: RFA: PR java/8473
- Reply-to: tromey at redhat dot com
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