diff options
author | Ziemowit Laski <zlaski@apple.com> | 2002-07-02 21:59:34 +0000 |
---|---|---|
committer | Stan Shebs <shebs@gcc.gnu.org> | 2002-07-02 21:59:34 +0000 |
commit | c1c5187c9ee27bbf60a5c237ecbd3667b35bf544 (patch) | |
tree | 4490d49b0ca7ef976a719a92a9be675a3a160306 /gcc | |
parent | aa5661e6b41e781f2e7b6b3e3fc163174f0687a8 (diff) | |
download | gcc-c1c5187c9ee27bbf60a5c237ecbd3667b35bf544.zip gcc-c1c5187c9ee27bbf60a5c237ecbd3667b35bf544.tar.gz gcc-c1c5187c9ee27bbf60a5c237ecbd3667b35bf544.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/c-parse.in | 17 | ||||
-rw-r--r-- | gcc/objc/objc-act.c | 6 | ||||
-rw-r--r-- | gcc/objc/objc-act.h | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/objc.dg/desig-init-1.m | 40 |
6 files changed, 58 insertions, 20 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e7a81de..18bbcdb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +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> * sh.c (print_operand, case 'N'): Allow zero vector. diff --git a/gcc/c-parse.in b/gcc/c-parse.in index 2a58668..6ce9a2e 100644 --- a/gcc/c-parse.in +++ b/gcc/c-parse.in @@ -29,7 +29,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA written by AT&T, but I have never seen it. */ ifobjc -%expect 31 /* shift/reduce conflicts, and 1 reduce/reduce conflict. */ +%expect 32 /* shift/reduce conflicts, and 1 reduce/reduce conflict. */ end ifobjc ifc %expect 10 /* shift/reduce conflicts, and no reduce/reduce conflicts. */ @@ -1566,17 +1566,12 @@ designator_list: designator: '.' identifier { 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 ']' { set_init_index ($2, $4); if (pedantic) pedwarn ("ISO C forbids specifying range of elements to initialize"); } | '[' expr_no_commas ']' { set_init_index ($2, NULL_TREE); } -end ifc ; nested_function: @@ -3223,14 +3218,8 @@ receiver: ; objcmessageexpr: - '[' - { objc_receiver_context = 1; } - receiver - { objc_receiver_context = 0; } - messageargs ']' - { - $$ = build_tree_list ($3, $5); - } + '[' receiver messageargs ']' + { $$ = build_tree_list ($2, $3); } ; selectorarg: diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c index 3909e0c..c0db599 100644 --- a/gcc/objc/objc-act.c +++ b/gcc/objc/objc-act.c @@ -341,8 +341,6 @@ static const char *default_constant_string_class_name; /* The OCTI_... enumeration itself is in objc/objc-act.h. */ tree objc_global_trees[OCTI_MAX]; -int objc_receiver_context; - static void handle_impent PARAMS ((struct imp_entry *)); struct imp_entry *imp_list = 0; @@ -8311,8 +8309,8 @@ lookup_objc_ivar (id) { tree decl; - if (objc_receiver_context && !strcmp (IDENTIFIER_POINTER (id), "super")) - /* we have a message to super */ + if (objc_method_context && !strcmp (IDENTIFIER_POINTER (id), "super")) + /* We have a message to super. */ return get_super_receiver (); else if (objc_method_context && (decl = is_ivar (objc_ivar_chain, id))) { diff --git a/gcc/objc/objc-act.h b/gcc/objc/objc-act.h index 17e5bd5..13b3e63 100644 --- a/gcc/objc/objc-act.h +++ b/gcc/objc/objc-act.h @@ -64,8 +64,6 @@ void objc_declare_alias PARAMS ((tree, tree)); void objc_declare_class PARAMS ((tree)); void objc_declare_protocols PARAMS ((tree)); -extern int objc_receiver_context; - /* the following routines are used to implement statically typed objects */ int objc_comptypes PARAMS ((tree, tree, int)); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b25b0ef..014eacb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +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> PR c++/6716 diff --git a/gcc/testsuite/objc.dg/desig-init-1.m b/gcc/testsuite/objc.dg/desig-init-1.m new file mode 100644 index 0000000..72fe833 --- /dev/null +++ b/gcc/testsuite/objc.dg/desig-init-1.m @@ -0,0 +1,40 @@ +/* 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; +} |