From af43fcd223b3629c489159d5b49dd3d72524611d Mon Sep 17 00:00:00 2001 From: shebs Date: Wed, 1 Aug 2001 08:15:11 +0000 Subject: [PATCH] 2001-08-01 Ziemowit Laski * 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 | 8 ++++++ gcc/testsuite/objc.dg/fwd-proto-1.m | 29 +++++++++++++++++++ gcc/testsuite/objc.dg/local-decl-1.m | 25 +++++++++++++++++ gcc/testsuite/objc.dg/naming-1.m | 21 ++++++++++++++ gcc/testsuite/objc.dg/naming-2.m | 12 ++++++++ gcc/testsuite/objc.dg/proto-hier-1.m | 54 ++++++++++++++++++++++++++++++++++++ 6 files changed, 149 insertions(+) create mode 100644 gcc/testsuite/objc.dg/fwd-proto-1.m create mode 100644 gcc/testsuite/objc.dg/local-decl-1.m create mode 100644 gcc/testsuite/objc.dg/naming-1.m create mode 100644 gcc/testsuite/objc.dg/naming-2.m create mode 100644 gcc/testsuite/objc.dg/proto-hier-1.m 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 + + * 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 * 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 . */ +/* { 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 )someMethod; +- (id )anotherMethod; /* { dg-error "Cannot find protocol declaration" } */ +@end + +@protocol Bar +- (id )someOtherMethod; +- (id )anotherMethod; /* { dg-error "Cannot find protocol declaration" } */ +- (id )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 /* { /*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 . */ +/* { 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 . */ +/* { 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 . */ +/* { 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 . */ +/* { 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 +- (void)someMethod; +@end + +@implementation NSObject +- (void)someMethod {} +@end + +@protocol Booing +- (void)boo; +@end + +@interface Boo: NSObject // protocol has only one parent +@end + +@implementation Boo +- (void)boo {} +@end + +@protocol Fooing // Fooing has two parent protocols +- (void)foo; +@end + +@interface Foo: NSObject +@end + +@implementation Foo +- (void)foo {} +- (void)someOtherMethod {} +@end + +int foo(void) { + id stupidVar; + [stupidVar boo]; + [stupidVar foo]; + [stupidVar anotherMsg]; /* { dg-warning "not implemented by protocol" } */ + /* { dg-warning "return type defaults to id" "" { target *-*-* } 51 } */ + return 0; +} -- 2.7.4