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