aboutsummaryrefslogtreecommitdiff
path: root/gcc/java
diff options
context:
space:
mode:
authorAlexandre Petit-Bianco <apbianco@redhat.com>2001-04-04 10:56:25 -0700
committerAlexandre Petit-Bianco <apbianco@gcc.gnu.org>2001-04-04 10:56:25 -0700
commitde307574bfcdeaf87a7114481d7e1ff4b5ef0dcd (patch)
tree46add0978bcd240d9c609861d2cde22aecf52c3c /gcc/java
parentdd7fc59c3605672536f627d4089baedef8af1aed (diff)
downloadgcc-de307574bfcdeaf87a7114481d7e1ff4b5ef0dcd.zip
gcc-de307574bfcdeaf87a7114481d7e1ff4b5ef0dcd.tar.gz
gcc-de307574bfcdeaf87a7114481d7e1ff4b5ef0dcd.tar.bz2
re PR java/1074 (jv-scan fails on ArrayClass.java)
2001-03-30 Alexandre Petit-Bianco <apbianco@redhat.com> * parse-scan.y (array_type:): Rewritten. (type_declaration:): `empty_statement' replaces `SC_TK.' (class_member_declaration:): `empty statement' added. (method_body:): Simplified. (static_initializer:): Likewise. (primary_no_new_array:): Use `type_literals.' (type_literals:): New rule. (dims:): Set and update `bracket_count.' Fixes PR java/1074. Fixes PR java/2412. (http://gcc.gnu.org/ml/gcc-bugs/2001-03/msg00835.html, http://gcc.gnu.org/ml/gcc-bugs/2000-12/msg00384.html, http://gcc.gnu.org/ml/gcc-patches/2001-04/msg00258.html) From-SVN: r41089
Diffstat (limited to 'gcc/java')
-rw-r--r--gcc/java/ChangeLog12
-rw-r--r--gcc/java/parse-scan.y40
2 files changed, 35 insertions, 17 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 4ae779c..b50e456 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -10,6 +10,18 @@
lang_printable_name call in a scratch buffer, so it
won't be clobbered by the second call.
+2001-03-30 Alexandre Petit-Bianco <apbianco@redhat.com>
+
+ * parse-scan.y (array_type:): Rewritten.
+ (type_declaration:): `empty_statement' replaces `SC_TK.'
+ (class_member_declaration:): `empty statement' added.
+ (method_body:): Simplified.
+ (static_initializer:): Likewise.
+ (primary_no_new_array:): Use `type_literals.'
+ (type_literals:): New rule.
+ (dims:): Set and update `bracket_count.'
+ Fixes PR java/1074. Fixes PR java/2412.
+
2001-03-28 Hans Boehm <boehm@acm.org>
* boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): Set to use `build_int_2.'
diff --git a/gcc/java/parse-scan.y b/gcc/java/parse-scan.y
index 20522da..28d7946 100644
--- a/gcc/java/parse-scan.y
+++ b/gcc/java/parse-scan.y
@@ -242,14 +242,15 @@ interface_type:
;
array_type:
- primitive_type OSB_TK CSB_TK
-| name OSB_TK CSB_TK
+ primitive_type dims
{
- $$ = concat ("[", $1, NULL);
+ while (bracket_count-- > 0)
+ $$ = concat ("[", $1, NULL);
}
-| array_type OSB_TK CSB_TK
- {
- $$ = concat ("[", $1, NULL);
+| name dims
+ {
+ while (bracket_count-- > 0)
+ $$ = concat ("[", $1, NULL);
}
;
@@ -316,7 +317,7 @@ type_import_on_demand_declaration:
type_declaration:
class_declaration
| interface_declaration
-| SC_TK
+| empty_statement
;
/* 19.7 Shortened from the original:
@@ -393,6 +394,7 @@ class_member_declaration:
| method_declaration
| class_declaration /* Added, JDK1.1 inner classes */
| interface_declaration /* Added, JDK1.1 inner classes */
+| empty_statement
;
/* 19.8.2 Productions from 8.3: Field Declarations */
@@ -513,14 +515,12 @@ class_type_list:
method_body:
block
-| block SC_TK
| SC_TK
;
/* 19.8.4 Productions from 8.5: Static Initializers */
static_initializer:
static block
-| static block SC_TK /* Shouldn't be here. FIXME */
;
static: /* Test lval.sub_token here */
@@ -892,14 +892,7 @@ primary_no_new_array:
| field_access
| method_invocation
| array_access
- /* type DOT_TK CLASS_TK doens't work. So we split the rule
- 'type' into its components. Missing is something for array,
- which will complete the reference_type part. FIXME */
-| name DOT_TK CLASS_TK /* Added, JDK1.1 class literals */
- { USE_ABSORBER; }
-| primitive_type DOT_TK CLASS_TK /* Added, JDK1.1 class literals */
- { USE_ABSORBER; }
-| VOID_TK DOT_TK CLASS_TK /* Added, JDK1.1 class literals */
+| type_literals
/* Added, JDK1.1 inner classes. Documentation is wrong
refering to a 'ClassName' (class_name) rule that doesn't
exist. Used name instead. */
@@ -907,6 +900,17 @@ primary_no_new_array:
{ USE_ABSORBER; }
;
+type_literals:
+ name DOT_TK CLASS_TK
+ { USE_ABSORBER; }
+| array_type DOT_TK CLASS_TK
+ { USE_ABSORBER; }
+| primitive_type DOT_TK CLASS_TK
+ { USE_ABSORBER; }
+| VOID_TK DOT_TK CLASS_TK
+ { USE_ABSORBER; }
+;
+
class_instance_creation_expression:
NEW_TK class_type OP_TK argument_list CP_TK
| NEW_TK class_type OP_TK CP_TK
@@ -960,7 +964,9 @@ dim_expr:
dims:
OSB_TK CSB_TK
+ { bracket_count = 1; }
| dims OSB_TK CSB_TK
+ { bracket_count++; }
;
field_access: