aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZiemowit Laski <zlaski@apple.com>2001-08-01 08:15:11 +0000
committerStan Shebs <shebs@gcc.gnu.org>2001-08-01 08:15:11 +0000
commit3fecf49c1adc604cfa0e4d7fa0ca738bbdcecc06 (patch)
tree7ad9d90cb75c991b4d326396418343acc8f611b2
parentf2e6e5307bece75988f49a2d69d56f2e83c35dda (diff)
downloadgcc-3fecf49c1adc604cfa0e4d7fa0ca738bbdcecc06.zip
gcc-3fecf49c1adc604cfa0e4d7fa0ca738bbdcecc06.tar.gz
gcc-3fecf49c1adc604cfa0e4d7fa0ca738bbdcecc06.tar.bz2
fwd-proto-1.m: New.
2001-08-01 Ziemowit Laski <zlaski@apple.com> * objc.dg/fwd-proto-1.m: New. * objc.dg/local-decl-1.m: New. * objc.dg/naming-1.m: New. * objc.dg/naming-2.m: New. * objc.dg/proto-hier-1.m: New. From-SVN: r44537
-rw-r--r--gcc/testsuite/ChangeLog8
-rw-r--r--gcc/testsuite/objc.dg/fwd-proto-1.m29
-rw-r--r--gcc/testsuite/objc.dg/local-decl-1.m25
-rw-r--r--gcc/testsuite/objc.dg/naming-1.m21
-rw-r--r--gcc/testsuite/objc.dg/naming-2.m12
-rw-r--r--gcc/testsuite/objc.dg/proto-hier-1.m54
6 files changed, 149 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 0122028..3123415 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2001-08-01 Ziemowit Laski <zlaski@apple.com>
+
+ * objc.dg/fwd-proto-1.m: New.
+ * objc.dg/local-decl-1.m: New.
+ * objc.dg/naming-1.m: New.
+ * objc.dg/naming-2.m: New.
+ * objc.dg/proto-hier-1.m: New.
+
2001-07-31 Hans-Peter Nilsson <hp@bitrange.com>
* gcc.dg/c99-scope-2.c: Don't generally assume adding more
diff --git a/gcc/testsuite/objc.dg/fwd-proto-1.m b/gcc/testsuite/objc.dg/fwd-proto-1.m
new file mode 100644
index 0000000..fd88780
--- /dev/null
+++ b/gcc/testsuite/objc.dg/fwd-proto-1.m
@@ -0,0 +1,29 @@
+/* Test forward-decls for @protocols. */
+/* Author: Ziemowit Laski <zlaski@apple.com>. */
+/* { dg-do compile } */
+
+/* One-line substitute for objc/objc.h */
+typedef struct objc_object { struct objc_class *class_pointer; } *id;
+
+@protocol Bar;
+@protocol Boo;
+
+@protocol Foo
+- (id <Bar>)someMethod;
+- (id <Baz>)anotherMethod; /* { dg-error "Cannot find protocol declaration" } */
+@end
+
+@protocol Bar <Boo>
+- (id <Foo>)someOtherMethod;
+- (id <Baz>)anotherMethod; /* { dg-error "Cannot find protocol declaration" } */
+- (id <Boo>)yetAnotherMethod;
+@end
+
+/* The following worthy test is stubbed out until we can get the
+ harness to match correctly on the "compilation terminated" message
+ when running on GNU/Linux. sts 2001-08-01 */
+#if 0
+@protocol Boo <Bar> /* { /*dg*/-error "has circular dependency" } */
+@end
+#endif
+
diff --git a/gcc/testsuite/objc.dg/local-decl-1.m b/gcc/testsuite/objc.dg/local-decl-1.m
new file mode 100644
index 0000000..4a4bfdf
--- /dev/null
+++ b/gcc/testsuite/objc.dg/local-decl-1.m
@@ -0,0 +1,25 @@
+/* Test for hiding of ivars by local variables. */
+/* Author: Ziemowit Laski <zlaski@apple.com>. */
+/* { dg-do compile } */
+
+@interface Sprite {
+ int a;
+}
+@end
+
+Sprite *glob;
+
+@interface blah
+{
+ Sprite* sprite;
+}
+@end
+
+@implementation blah
+- (Sprite *)load
+{
+ Sprite *sprite = 0;
+ Sprite *glob = 0; /* ok */
+ return sprite; /* { dg-warning "hides instance variable" } */
+}
+@end
diff --git a/gcc/testsuite/objc.dg/naming-1.m b/gcc/testsuite/objc.dg/naming-1.m
new file mode 100644
index 0000000..f49c736
--- /dev/null
+++ b/gcc/testsuite/objc.dg/naming-1.m
@@ -0,0 +1,21 @@
+/* Test for obscuring of @interfaces with local vars. */
+/* Author: Ziemowit Laski <zlaski@apple.com>. */
+/* { dg-do compile } */
+
+@interface View
+@end
+
+void foo(void)
+{
+ int View; /* ok */
+ View = 1; /* ok */
+ View *view; /* { dg-error "`view' undeclared" } */
+ /* { dg-error "is reported only once" "" { target *-*-* } 12 } */
+ /* { dg-error "function it appears in" "" { target *-*-* } 12 } */
+}
+
+void bar(void)
+{
+ View *view; /* ok */
+ View = 1; /* { dg-error "parse error" } */
+}
diff --git a/gcc/testsuite/objc.dg/naming-2.m b/gcc/testsuite/objc.dg/naming-2.m
new file mode 100644
index 0000000..2d15ae6
--- /dev/null
+++ b/gcc/testsuite/objc.dg/naming-2.m
@@ -0,0 +1,12 @@
+/* Test for collision of @interfaces with global vars. */
+/* Author: Ziemowit Laski <zlaski@apple.com>. */
+/* { dg-do compile } */
+
+@interface Foo
+@end
+float Foo; /* { dg-error "parse error before" } */
+
+double Bar;
+@interface Bar
+@end /* { dg-error "redeclared as different kind of symbol" } */
+/* { dg-error "previous declaration of" "" { target *-*-* } 9 } */
diff --git a/gcc/testsuite/objc.dg/proto-hier-1.m b/gcc/testsuite/objc.dg/proto-hier-1.m
new file mode 100644
index 0000000..17ea72e
--- /dev/null
+++ b/gcc/testsuite/objc.dg/proto-hier-1.m
@@ -0,0 +1,54 @@
+/* Test for handling of protocol hierarchies. */
+/* Author: Ziemowit Laski <zlaski@apple.com>. */
+/* { dg-do compile } */
+
+/* One-line substitute for objc/objc.h */
+typedef struct objc_object { struct objc_class *class_pointer; } *id;
+
+@protocol NSObj
+- (void)someMethod;
+@end
+
+@protocol NSCopying
+- (void)someOtherMethod;
+@end
+
+@interface NSObject <NSObj>
+- (void)someMethod;
+@end
+
+@implementation NSObject
+- (void)someMethod {}
+@end
+
+@protocol Booing <NSObj>
+- (void)boo;
+@end
+
+@interface Boo: NSObject <Booing> // protocol has only one parent
+@end
+
+@implementation Boo
+- (void)boo {}
+@end
+
+@protocol Fooing <NSCopying, NSObj> // Fooing has two parent protocols
+- (void)foo;
+@end
+
+@interface Foo: NSObject <Fooing>
+@end
+
+@implementation Foo
+- (void)foo {}
+- (void)someOtherMethod {}
+@end
+
+int foo(void) {
+ id<Booing, Fooing> stupidVar;
+ [stupidVar boo];
+ [stupidVar foo];
+ [stupidVar anotherMsg]; /* { dg-warning "not implemented by protocol" } */
+ /* { dg-warning "return type defaults to id" "" { target *-*-* } 51 } */
+ return 0;
+}