1/* Test warnings when using -fobjc-std=objc1. */ 2/* { dg-do compile } */ 3/* { dg-options "-fobjc-std=objc1" } */ 4 5#include <objc/objc.h> 6 7@interface MyRootClass 8{ 9 Class isa; /* { dg-error ".@package. is not available in Objective.C 1.0" } */ 10@package 11 int a; 12 int b; 13} 14+ (id) alloc __attribute__ ((deprecated)); /* { dg-error "not available in Objective.C 1.0" } */ 15+ (id) name; 16- (id) init; 17- (id) testMe: (id) __attribute__((unused)) argument; /* { dg-error "not available in Objective.C 1.0" } */ 18@property (nonatomic) int a; /* { dg-error "not available in Objective.C 1.0" } */ 19@property (nonatomic) int b; /* { dg-error "not available in Objective.C 1.0" } */ 20@end 21 22@implementation MyRootClass 23+ (id) alloc { return self; } 24+ (id) name { return self; } 25- (id) init { return self; } 26- (id) testMe: (id) __attribute__((unused)) argument { return self; } /* { dg-error "not available in Objective.C 1.0" } */ 27/* There is a problem with the testsuite on the following line; the compiler seems Ok, but the testsuite still barfs. */ 28/*@synthesize a;*/ /* dg-error "not available in Objective.C 1.0" */ 29/* The following lines replace the synthesize to prevent warnings. */ 30- (int) a { return a; } 31- (void) setA: (int)value { a = value; } 32@dynamic b; /* { dg-error "not available in Objective.C 1.0" } */ 33@end 34 35__attribute__ ((deprecated)) 36@interface MyRootClass2 /* { dg-error "class attributes are not available in Objective.C 1.0" } */ 37{ 38 Class isa; 39} 40@end 41 42__attribute__ ((deprecated)) 43@protocol MyProtocol /* { dg-error "protocol attributes are not available in Objective.C 1.0" } */ 44- (id) test; 45@required /* { dg-error "not available in Objective.C 1.0" } */ 46- (id) variable __attribute__ ((deprecated)); /* { dg-error "not available in Objective.C 1.0" } */ 47@optional /* { dg-error "not available in Objective.C 1.0" } */ 48@end 49#if 0 /* fast enumeration is not implemented even in Objective-C 2.0 */ 50@interface MyRootClass (NSFastEnumeration) 51- (unsigned long)countByEnumeratingWithState: (struct __objcFastEnumerationState *)state 52 objects:(id *)stackbuf 53 count:(unsigned int)len; 54@end 55 56@class NSArray; 57 58int array_length (NSArray *array) 59{ 60 int i = 0; 61 62 for (id object in array) /* dg-error "not available in Objective.C 1.0" */ 63 i++; 64 65 return i; 66} 67#endif 68 69id test (void) 70{ 71 return MyRootClass.name; /* { dg-error "not available in Objective.C 1.0" } */ 72} 73 74@interface MyRootClass3 75{ 76 Class isa; 77} 78@end 79 80/* There is a problem with the testsuite on the following line; the compiler seems Ok, but the testsuite still barfs. */ 81/* @interface MyRootClass3 () */ /* dg-error "not available in Objective.C 1.0" */ 82/* @end */ 83