diff options
author | Alexandre Petit-Bianco <apbianco@redhat.com> | 2001-04-04 10:56:25 -0700 |
---|---|---|
committer | Alexandre Petit-Bianco <apbianco@gcc.gnu.org> | 2001-04-04 10:56:25 -0700 |
commit | de307574bfcdeaf87a7114481d7e1ff4b5ef0dcd (patch) | |
tree | 46add0978bcd240d9c609861d2cde22aecf52c3c /gcc/java/parse-scan.y | |
parent | dd7fc59c3605672536f627d4089baedef8af1aed (diff) | |
download | gcc-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/parse-scan.y')
-rw-r--r-- | gcc/java/parse-scan.y | 40 |
1 files changed, 23 insertions, 17 deletions
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: |