// RUN: %clang_cc1 -fsyntax-only -verify %s

@class Protocol;

@protocol fproto; // expected-note {{'fproto' declared here}}

@protocol p1 
@end

@class cl;

int main()
{
	Protocol *proto = @protocol(p1);
        Protocol *fproto = @protocol(fproto); // expected-warning {{@protocol is using a forward protocol declaration of fproto}}
	Protocol *pp = @protocol(i); // expected-error {{cannot find protocol declaration for 'i'}}
	Protocol *p1p = @protocol(cl); // expected-error {{cannot find protocol declaration for 'cl'}}
}

// rdar://17768630
@protocol SuperProtocol; // expected-note {{'SuperProtocol' declared here}}
@protocol TestProtocol; // expected-note {{'TestProtocol' declared here}}

@interface I
- (int) conformsToProtocol : (Protocol *)protocl;
@end

int doesConform(id foo) {
  return [foo conformsToProtocol:@protocol(TestProtocol)]; // expected-warning {{@protocol is using a forward protocol declaration of TestProtocol}}
}

int doesConformSuper(id foo) {
  return [foo conformsToProtocol:@protocol(SuperProtocol)]; // expected-warning {{@protocol is using a forward protocol declaration of SuperProtocol}}
}
