OSDN Git Service

2001-08-01 Ziemowit Laski <zlaski@apple.com>
authorshebs <shebs@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 1 Aug 2001 08:15:11 +0000 (08:15 +0000)
committershebs <shebs@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 1 Aug 2001 08:15:11 +0000 (08:15 +0000)
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44537 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/objc.dg/fwd-proto-1.m [new file with mode: 0644]
gcc/testsuite/objc.dg/local-decl-1.m [new file with mode: 0644]
gcc/testsuite/objc.dg/naming-1.m [new file with mode: 0644]
gcc/testsuite/objc.dg/naming-2.m [new file with mode: 0644]
gcc/testsuite/objc.dg/proto-hier-1.m [new file with mode: 0644]

index 0122028..3123415 100644 (file)
@@ -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 (file)
index 0000000..fd88780
--- /dev/null
@@ -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 (file)
index 0000000..4a4bfdf
--- /dev/null
@@ -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 (file)
index 0000000..f49c736
--- /dev/null
@@ -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 (file)
index 0000000..2d15ae6
--- /dev/null
@@ -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 (file)
index 0000000..17ea72e
--- /dev/null
@@ -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;
+}