// RUN: %clang_cc1 -x objective-c -Wno-objc-root-class -fms-extensions -rewrite-objc %s -o %t-rw.cpp
// RUN: FileCheck  --input-file=%t-rw.cpp %s
// rdar://9846759
// rdar://15517895

typedef struct MyWidget {
  int a;
} MyWidget;

MyWidget gWidget = { 17 };

@protocol MyProto
- (MyWidget *)widget;
@end

@interface Foo 
@end

@interface Bar: Foo <MyProto>
@end

@interface Container 
+ (MyWidget *)elementForView:(Foo *)view;
@end

@implementation Foo
@end

@implementation Bar
- (MyWidget *)widget {
  return &gWidget;
}
@end

@implementation Container
+ (MyWidget *)elementForView:(Foo *)view
{
  MyWidget *widget = (void*)0;
  if (@protocol(MyProto)) {
    widget = [(id <MyProto>)view widget];
  }
  return widget;
}
@end

int main(void) {
  id view;
  MyWidget *w = [Container elementForView: view];

  return 0;
}

// rdar://15517895
@class NSObject;

@interface NSProtocolChecker
+ (id)protocolCheckerWithTarget:(NSObject *)anObject protocol:(Protocol *)aProtocol;
@end

@protocol NSConnectionVersionedProtocol
@end


@interface NSConnection @end

@implementation NSConnection
- (void) Meth {
  [NSProtocolChecker protocolCheckerWithTarget:0 protocol:@protocol(NSConnectionVersionedProtocol)];
}
@end

// CHECK: static struct _protocol_t *_OBJC_PROTOCOL_REFERENCE_$_NSConnectionVersionedProtocol = &_OBJC_PROTOCOL_NSConnectionVersionedProtocol
// CHECK: sel_registerName("protocolCheckerWithTarget:protocol:"), (NSObject *)0, (Protocol *)_OBJC_PROTOCOL_REFERENCE_$_NSConnectionVersionedProtocol
