1/* Test to warn on protocol mismatch in a variety of initializations. */ 2 3/* { dg-do compile } */ 4 5typedef struct objc_class *Class; 6 7typedef struct objc_object { 8 Class isa; 9} *id; 10 11@protocol NSObject 12@end 13 14@interface NSObject <NSObject> 15@end 16 17@protocol NSCopying 18- (void)copyWithZone; 19@end 20 21@interface Foo:NSObject <NSCopying> 22@end 23 24 25extern id <NSObject> NSCopyObject(); 26 27@implementation Foo 28- (void)copyWithZone { 29 Foo *copy = NSCopyObject(); /* { dg-warning "type \\'id <NSObject>\\' does not conform to the \\'NSCopying\\' protocol" } */ 30 31 Foo<NSObject,NSCopying> *g = NSCopyObject(); /* { dg-warning "type \\'id <NSObject>\\' does not conform to the \\'NSCopying\\' protocol" } */ 32 33 id<NSObject,NSCopying> h = NSCopyObject(); /* { dg-warning "type \\'id <NSObject>\\' does not conform to the \\'NSCopying\\' protocol" } */ 34} 35@end 36