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 | |
| 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')
| -rw-r--r-- | gcc/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/c-parse.in | 63 | 
2 files changed, 23 insertions, 46 deletions
| diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b44b60af130..70561097d88 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2001-05-16  Neil Booth  <neil@daikokuya.demon.co.uk> + +	* c-parse.in (methodtype): New production. +	(methoddef, methodproto): Collapse separate '-' and '+' +	handlers into 1. +  2001-05-16  Neil Booth  <neil@cat.daikokuya.demon.co.uk>  	* c-common.h (RID_FIRST_PQ): New. 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  	; | 

