aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2002-07-02 16:06:04 -0700
committerDevang Patel <dpatel@gcc.gnu.org>2002-07-02 16:06:04 -0700
commitc40da518998023c0190b1667bce7aab3c6099f66 (patch)
tree406a58c721188fa853910f08a5a933fc5259625b
parent0879540b3daea61f92dfc224046f36fbe837785c (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/objc/objc-act.c4
-rw-r--r--gcc/testsuite/ChangeLog3
-rw-r--r--gcc/testsuite/objc.dg/param-1.m20
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
+