Commit c1c5187c by Ziemowit Laski Committed by Stan Shebs

c-parse.in (designator): Enable designated initializers if ObjC.

2002-07-02  Ziemowit Laski  <zlaski@apple.com>

	* c-parse.in (designator): Enable designated initializers if ObjC.
	(objcmessageexpr): Remove references to objc_receiver_context.
	* objc/objc-act.h (objc_receiver_context): Remove decl.
	* objc/objc-act.c (objc_receiver_context): Remove.
	(lookup_objc_ivar): Test objc_method_context instead of
	objc_receiver_context.

2002-07-02  Ziemowit Laski  <zlaski@apple.com>

	* objc.dg/desig-init-1.m: New test.

From-SVN: r55192
parent aa5661e6
2002-07-02 Ziemowit Laski <zlaski@apple.com>
* c-parse.in (designator): Enable designated initializers if ObjC.
(objcmessageexpr): Remove references to objc_receiver_context.
* objc/objc-act.h (objc_receiver_context): Remove decl.
* objc/objc-act.c (objc_receiver_context): Remove.
(lookup_objc_ivar): Test objc_method_context instead of
objc_receiver_context.
Tue Jul 2 18:45:45 2002 J"orn Rennecke <joern.rennecke@superh.com> Tue Jul 2 18:45:45 2002 J"orn Rennecke <joern.rennecke@superh.com>
* sh.c (print_operand, case 'N'): Allow zero vector. * sh.c (print_operand, case 'N'): Allow zero vector.
......
...@@ -29,7 +29,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ...@@ -29,7 +29,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
written by AT&T, but I have never seen it. */ written by AT&T, but I have never seen it. */
ifobjc ifobjc
%expect 31 /* shift/reduce conflicts, and 1 reduce/reduce conflict. */ %expect 32 /* shift/reduce conflicts, and 1 reduce/reduce conflict. */
end ifobjc end ifobjc
ifc ifc
%expect 10 /* shift/reduce conflicts, and no reduce/reduce conflicts. */ %expect 10 /* shift/reduce conflicts, and no reduce/reduce conflicts. */
...@@ -1566,17 +1566,12 @@ designator_list: ...@@ -1566,17 +1566,12 @@ designator_list:
designator: designator:
'.' identifier '.' identifier
{ set_init_label ($2); } { set_init_label ($2); }
/* These are for labeled elements. The syntax for an array element
initializer conflicts with the syntax for an Objective-C message,
so don't include these productions in the Objective-C grammar. */
ifc
| '[' expr_no_commas ELLIPSIS expr_no_commas ']' | '[' expr_no_commas ELLIPSIS expr_no_commas ']'
{ set_init_index ($2, $4); { set_init_index ($2, $4);
if (pedantic) if (pedantic)
pedwarn ("ISO C forbids specifying range of elements to initialize"); } pedwarn ("ISO C forbids specifying range of elements to initialize"); }
| '[' expr_no_commas ']' | '[' expr_no_commas ']'
{ set_init_index ($2, NULL_TREE); } { set_init_index ($2, NULL_TREE); }
end ifc
; ;
nested_function: nested_function:
...@@ -3223,14 +3218,8 @@ receiver: ...@@ -3223,14 +3218,8 @@ receiver:
; ;
objcmessageexpr: objcmessageexpr:
'[' '[' receiver messageargs ']'
{ objc_receiver_context = 1; } { $$ = build_tree_list ($2, $3); }
receiver
{ objc_receiver_context = 0; }
messageargs ']'
{
$$ = build_tree_list ($3, $5);
}
; ;
selectorarg: selectorarg:
......
...@@ -341,8 +341,6 @@ static const char *default_constant_string_class_name; ...@@ -341,8 +341,6 @@ static const char *default_constant_string_class_name;
/* The OCTI_... enumeration itself is in objc/objc-act.h. */ /* The OCTI_... enumeration itself is in objc/objc-act.h. */
tree objc_global_trees[OCTI_MAX]; tree objc_global_trees[OCTI_MAX];
int objc_receiver_context;
static void handle_impent PARAMS ((struct imp_entry *)); static void handle_impent PARAMS ((struct imp_entry *));
struct imp_entry *imp_list = 0; struct imp_entry *imp_list = 0;
...@@ -8311,8 +8309,8 @@ lookup_objc_ivar (id) ...@@ -8311,8 +8309,8 @@ lookup_objc_ivar (id)
{ {
tree decl; tree decl;
if (objc_receiver_context && !strcmp (IDENTIFIER_POINTER (id), "super")) if (objc_method_context && !strcmp (IDENTIFIER_POINTER (id), "super"))
/* we have a message to super */ /* We have a message to super. */
return get_super_receiver (); return get_super_receiver ();
else if (objc_method_context && (decl = is_ivar (objc_ivar_chain, id))) else if (objc_method_context && (decl = is_ivar (objc_ivar_chain, id)))
{ {
......
...@@ -64,8 +64,6 @@ void objc_declare_alias PARAMS ((tree, tree)); ...@@ -64,8 +64,6 @@ void objc_declare_alias PARAMS ((tree, tree));
void objc_declare_class PARAMS ((tree)); void objc_declare_class PARAMS ((tree));
void objc_declare_protocols PARAMS ((tree)); void objc_declare_protocols PARAMS ((tree));
extern int objc_receiver_context;
/* the following routines are used to implement statically typed objects */ /* the following routines are used to implement statically typed objects */
int objc_comptypes PARAMS ((tree, tree, int)); int objc_comptypes PARAMS ((tree, tree, int));
......
2002-07-02 Ziemowit Laski <zlaski@apple.com>
* objc.dg/desig-init-1.m: New test.
2002-07-02 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 2002-07-02 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
PR c++/6716 PR c++/6716
......
/* Test Objective-C capability for handling GNU/C99 designated
initializers, and distinguishing them from message sends. */
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
/* { dg-options "-std=gnu99" } */
/* { dg-do run } */
#include <stdio.h>
#include <objc/objc.h>
#include <objc/Object.h>
@interface Cls : Object
+ (int) meth1;
+ (int) meth2;
+ (void) doTests;
@end
@implementation Cls
+ (int) meth1 { return 45; }
+ (int) meth2 { return 21; }
+ (void) doTests {
int arr[6] = {
0,
[Cls meth1],
[2 + 1] = 3,
[2 * 2 ... 5] = [0 meth2], /* { dg-warning "invalid receiver type" } */
[2] [Cls meth2]
};
if (arr[0] != 0 || arr[1] != 45 || arr[2] != 21 || arr[3] != 3)
abort (); /* { dg-warning "implicit declaration" } */
printf ("%s\n", [super name]);
printf ("%d %d %d %d %d %d\n", arr[0], arr[1], arr[2], arr[3], arr[4], arr[5]);
}
@end
int main(void) {
[Cls doTests];
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment