diff options
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  	; | 

