diff options
author | nicola <nicola@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-09-21 18:51:34 +0000 |
---|---|---|
committer | nicola <nicola@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-09-21 18:51:34 +0000 |
commit | e93ea189f714f1c8399f57d96a79fe2672807954 (patch) | |
tree | 897f0bbb69ee50c5f581e4a8d83c36076bdc3738 /gcc/objc | |
parent | 2593b7b8135db4d43d62af403237e80b59ea9c9a (diff) | |
download | gcc-e93ea189f714f1c8399f57d96a79fe2672807954.tar.gz |
PR objc/25965
In gcc/objc/:
* objc-act.c (objc_get_interface_ivars): New function.
(objc_collecting_ivars): New variable.
(continue_class): Set and reset objc_collecting_ivars for context.
In gcc/:
* c-decl.c (detect_field_duplicates): If compiling Objective-C,
call objc_get_interface_ivars ().
* c-family/c-common.h (objc_get_interface_ivars): New declaration.
* c-family/stub-objc.c (objc_get_interface_ivars): New stub.
In gcc/objcp/:
* objcp-decl.c (objcp_finish_struct): Call
objc_get_interface_ivars() and check for duplicate ivars.
In gcc/testsuite/:
Merge from 'apple/trunk' branch on FSF servers.
2005-10-11 Fariborz Jahanian <fjahanian@apple.com>
Radar 4291785
objc.dg/naming-4.m: New
objc.dg/naming-5.m: New
obj-c++.dg/naming-1.mm: New
obj-c++.dg/naming-2.mm: New
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@164491 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/objc')
-rw-r--r-- | gcc/objc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/objc/objc-act.c | 19 |
2 files changed, 26 insertions, 0 deletions
diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog index 132679ba132..87dcec853bf 100644 --- a/gcc/objc/ChangeLog +++ b/gcc/objc/ChangeLog @@ -1,3 +1,10 @@ +2010-09-21 Nicola Pero <nicola.pero@meta-innovation.com> + + PR objc/25965 + * objc-act.c (objc_get_interface_ivars): New function. + (objc_collecting_ivars): New variable. + (continue_class): Set and reset objc_collecting_ivars for context. + 2010-09-15 Nicola Pero <nicola.pero@meta-innovation.com> Merge from 'apple/trunk' branch on FSF servers. diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c index d8fbe368a78..57942380934 100644 --- a/gcc/objc/objc-act.c +++ b/gcc/objc/objc-act.c @@ -371,6 +371,8 @@ int objc_public_flag; /* Use to generate method labels. */ static int method_slot = 0; +static int objc_collecting_ivars = 0; + #define BUFSIZE 1024 static char *errbuf; /* Buffer for error diagnostics */ @@ -3453,6 +3455,21 @@ objc_get_class_ivars (tree class_name) return error_mark_node; } +/* Called when checking the variables in a struct. If we are not + doing the ivars list inside an @interface context, then returns + fieldlist unchanged. Else, returns the list of class ivars. +*/ +tree +objc_get_interface_ivars (tree fieldlist) +{ + if (!objc_collecting_ivars || !objc_interface_context + || TREE_CODE (objc_interface_context) != CLASS_INTERFACE_TYPE + || CLASS_SUPER_NAME (objc_interface_context) == NULL_TREE) + return fieldlist; + + return get_class_ivars (objc_interface_context, true); +} + /* Used by: build_private_template, continue_class, and for @defs constructs. */ @@ -7714,7 +7731,9 @@ continue_class (tree klass) push_lang_context (lang_name_c); #endif /* OBJCPLUS */ + objc_collecting_ivars = 1; build_private_template (klass); + objc_collecting_ivars = 0; #ifdef OBJCPLUS pop_lang_context (); |