/* Test for situations in which protocol conformance information may be lost, leading to superfluous warnings. */ /* Author: Ziemowit Laski . */ /* { dg-do compile } */ /* One-line substitute for objc/objc.h */ typedef struct objc_object { struct objc_class *class_pointer; } *id; @protocol NSObject - (int)someValue; @end @interface NSObject @end @protocol PlateMethods - (void)someMethod; @end @interface Foo { NSObject *plate; id plate1; NSObject *plate2; } - (id ) getPlate; - (id ) getPlate1; - (int) getValue; @end @implementation Foo - (id ) getPlate { return plate; /* { dg-bogus "does not implement" } */ } - (id ) getPlate1 { return (id )plate1; /* { dg-bogus "does not conform" } */ } - (int) getValue { int i = [plate1 someValue]; /* { dg-warning ".\\-someValue. not found in protocol\\(s\\)" } */ int j = [(id )plate1 someValue]; /* { dg-bogus "not found in protocol" } */ int k = [(id)plate1 someValue]; /* { dg-bogus "not found in protocol" } */ return i + j + k; } @end