/* Contributed by Nicola Pero , December 2010. */ /* { dg-do compile } */ /* Test that all protocols appearing in @interface declarations are real (ie, we saw a full @protocol definition with list of methods), and not just forward-references (ie, "@protocol NSObject;"). This test checks protocols implemented by other protocols. */ #include @protocol MyProtocol; @interface MyClass /* { dg-warning "definition of protocol .MyProtocol. not found" } */ @end @protocol MyProtocol2 - (int)method2; @end @interface MyClass2 /* { dg-warning "definition of protocol .MyProtocol. not found" } */ - (int)method2; @end @protocol MyProtocol3 - (int)method3; @end @interface MyClass3 /* { dg-warning "definition of protocol .MyProtocol. not found" } */ - (int)method2; - (int)method3; @end @protocol MyProtocol4 - (int)method4; @end @interface MyClass4 /* { dg-warning "definition of protocol .MyProtocol. not found" } */ - (int)method2; - (int)method3; - (int)method4; @end @protocol MyProtocol5 - (int)method5; @end @interface MyClass5 /* Ok */ - (int)method5; @end @protocol MyProtocol6 - (int)method6; @end @interface MyClass6 /* Ok */ - (int)method5; - (int)method6; @end @protocol MyProtocol7 - (int)method7; @end @interface MyClass7 /* { dg-warning "definition of protocol .MyProtocol. not found" } */ - (int)method2; - (int)method3; - (int)method4; - (int)method5; - (int)method7; @end /* Now test that if we finally define MyProtocol, the warnings go away. */ @protocol MyProtocol - (int)method; @end @protocol MyProtocol8 - (int)method8; @end @interface MyClass8 /* Ok */ - (int)method; - (int)method2; - (int)method3; - (int)method4; - (int)method5; - (int)method8; @end