1// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
2
3typedef struct MyWidget {
4  int a;
5} MyWidget;
6
7MyWidget gWidget = { 17 };
8
9@protocol MyProto
10- (MyWidget *)widget;
11@end
12
13@interface Foo
14@end
15
16@interface Bar: Foo <MyProto>
17@end
18
19@interface Container
20+ (MyWidget *)elementForView:(Foo *)view;
21@end
22
23@implementation Foo
24@end
25
26@implementation Bar
27- (MyWidget *)widget {
28  return &gWidget;
29}
30@end
31
32@implementation Container
33+ (MyWidget *)elementForView:(Foo *)view
34{
35  MyWidget *widget = (void*)0;
36  if (@protocol(MyProto)) {
37    widget = [(id <MyProto>)view widget];
38  }
39  return widget;
40}
41@end
42
43int main(void) {
44  id view;
45  MyWidget *w = [Container elementForView: view];
46
47  return 0;
48}
49