diff options
author | neil <neil@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-05-16 06:34:34 +0000 |
---|---|---|
committer | neil <neil@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-05-16 06:34:34 +0000 |
commit | a1f4c3f0721504499a74e44daa2b55d17d8d673d (patch) | |
tree | 7460d879c8e10f3aaf4d73f4fe217dc1499cf88b /gcc/c-parse.in | |
parent | 1e5bfc6668d375cd86d7346cc5ae2c13ab8bb9f4 (diff) | |
download | ppe42-gcc-a1f4c3f0721504499a74e44daa2b55d17d8d673d.tar.gz ppe42-gcc-a1f4c3f0721504499a74e44daa2b55d17d8d673d.zip |
* c-parse.in (methodtype): New production.
(methoddef, methodproto): Collapse separate '-' and '+'
handlers into 1.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42133 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/c-parse.in')
-rw-r--r-- | gcc/c-parse.in | 63 |
1 files changed, 17 insertions, 46 deletions
diff --git a/gcc/c-parse.in b/gcc/c-parse.in index cee2637e89f..3eda45c25de 100644 --- a/gcc/c-parse.in +++ b/gcc/c-parse.in @@ -2947,44 +2947,27 @@ ivar_declarator: } ; -methoddef: +methodtype: '+' - { - objc_pq_context = 1; - if (objc_implementation_context) - objc_inherit_code = CLASS_METHOD_DECL; - else - fatal_error ("method definition not in class context"); - } - methoddecl - { - objc_pq_context = 0; - add_class_method (objc_implementation_context, $3); - start_method_def ($3); - objc_method_context = $3; - } - optarglist - { - continue_method_def (); - } - compstmt_or_error - { - finish_method_def (); - objc_method_context = NULL_TREE; - } - + { objc_inherit_code = CLASS_METHOD_DECL; } | '-' + { objc_inherit_code = INSTANCE_METHOD_DECL; } + ; + +methoddef: + methodtype { objc_pq_context = 1; - if (objc_implementation_context) - objc_inherit_code = INSTANCE_METHOD_DECL; - else + if (!objc_implementation_context) fatal_error ("method definition not in class context"); } methoddecl { objc_pq_context = 0; - add_instance_method (objc_implementation_context, $3); + if (objc_inherit_code == CLASS_METHOD_DECL) + add_class_method (objc_implementation_context, $3); + else + add_instance_method (objc_implementation_context, $3); start_method_def ($3); objc_method_context = $3; } @@ -3021,31 +3004,19 @@ semi_or_error: ; methodproto: - '+' + methodtype { /* Remember protocol qualifiers in prototypes. */ objc_pq_context = 1; - objc_inherit_code = CLASS_METHOD_DECL; } methoddecl { /* Forget protocol qualifiers here. */ objc_pq_context = 0; - add_class_method (objc_interface_context, $3); - } - semi_or_error - - | '-' - { - /* Remember protocol qualifiers in prototypes. */ - objc_pq_context = 1; - objc_inherit_code = INSTANCE_METHOD_DECL; - } - methoddecl - { - /* Forget protocol qualifiers here. */ - objc_pq_context = 0; - add_instance_method (objc_interface_context, $3); + if (objc_inherit_code == CLASS_METHOD_DECL) + add_class_method (objc_interface_context, $3); + else + add_instance_method (objc_interface_context, $3); } semi_or_error ; |