// RUN: %clang_cc1 -fsyntax-only -Wno-deprecated-declarations -verify %s
@interfaceINTF1@required // expected-error {{directive may only be specified in protocols only}}
- (int)FooBar;- (int)FooBar1;- (int)FooBar2;
@optional // expected-error {{directive may only be specified in protocols only}}
+ (int)C;- (int)I;@end@protocol p1,p2,p3;@protocol p1;@protocolPROTO1@required
- (int)FooBar;
@optional
- (void)MyMethod1;+ (int)S;@end@protocolPROTO2<p1>@end@protocolp1@end@protocolPROTO<p1>// expected-note {{previous definition is here}}
@end@protocolPROTO<p1>// expected-warning {{duplicate protocol definition of 'PROTO'}}
@end@protocolPROTO3<p1, p1>@end@protocolp2<p1>@end@protocolPROTO4<p1, p2, PROTO, PROTO3, p3>@end// rdar://6771034
@protocol XX;@protocolYY<XX>// Use of declaration of XX here should not cause a warning.
- zz;@end// Detect circular dependencies.
@protocol B;@protocolC< B >// expected-note{{previous definition is here}}
@end@protocolA< C >@end@protocolB< A >// expected-error{{protocol has circular dependency}}
@end@protocolP- (int)test:(int)param, ..;// expected-warning{{type specifier missing}} \
// expected-error{{expected ';' after method prototype}}
@end