diff options
author | Devang Patel <dpatel@apple.com> | 2002-07-02 16:06:04 -0700 |
---|---|---|
committer | Devang Patel <dpatel@gcc.gnu.org> | 2002-07-02 16:06:04 -0700 |
commit | c40da518998023c0190b1667bce7aab3c6099f66 (patch) | |
tree | 406a58c721188fa853910f08a5a933fc5259625b | |
parent | 0879540b3daea61f92dfc224046f36fbe837785c (diff) | |
download | gcc-c40da518998023c0190b1667bce7aab3c6099f66.zip gcc-c40da518998023c0190b1667bce7aab3c6099f66.tar.gz gcc-c40da518998023c0190b1667bce7aab3c6099f66.tar.bz2 |
objc-act.c (adjust_type_for_id_default): Do not allow an object as parameter.
* objc/objc-act.c (adjust_type_for_id_default): Do not allow an
object as parameter. Prevent something like 'NSObject' to be
used as the type for a method argument.
testsuite:
* objc.dg/param-1.m: New test.
From-SVN: r55197
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/objc/objc-act.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/objc.dg/param-1.m | 20 |
4 files changed, 33 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8dae99b..ef5cd4b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ + +2002-07-02 Devang Patel <dpatel@apple.com + * objc/objc-act.c (adjust_type_for_id_default): Do not allow an + object as parameter. Prevent something like 'NSObject' to be + used as the type for a method argument. + 2002-07-03 Neil Booth <neil@daikokuya.co.uk> * cpptrad.c: Update comment. diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c index c0db599..e8f97ac 100644 --- a/gcc/objc/objc-act.c +++ b/gcc/objc/objc-act.c @@ -4465,6 +4465,10 @@ adjust_type_for_id_default (type) chain; chain = TREE_CHAIN (chain)) { + if (TREE_CODE (TREE_VALUE (chain)) == RECORD_TYPE + && !(TREE_VALUE (type) + && TREE_CODE (TREE_VALUE (type)) == INDIRECT_REF)) + error ("can not use an object as parameter to a method\n"); if (!is_objc_type_qualifier (TREE_VALUE (chain))) return type; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 62ce01d..16cc479 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,6 @@ +2002-07-02 Devang Patel <dpatel@apple.com> + * objc.dg/param-1.m: New test. + 2002-07-03 Neil Booth <neil@daikokuya.co.uk> * gcc.dg/cpp/trad/directive.c: Add test. diff --git a/gcc/testsuite/objc.dg/param-1.m b/gcc/testsuite/objc.dg/param-1.m new file mode 100644 index 0000000..e796a3b --- /dev/null +++ b/gcc/testsuite/objc.dg/param-1.m @@ -0,0 +1,20 @@ +/* Test if compiler detects object as an parameter to a method + or not. It is not valid. */ +/* { dg-do compile } */ + +@interface foo +@end + +@implementation foo +@end + +@interface bar +-(void) my_method:(foo) my_param; /* { dg-error "can not use an object as parameter to a method" } */ +@end + +@implementation bar +-(void) my_method:(foo) my_param /* { dg-error "can not use an object as parameter to a method" } */ +{ +} +@end + |