No empty .Rs/.Re
[netbsd-mini2440.git] / gnu / dist / gcc4 / gcc / testsuite / obj-c++.dg / lookup-2.mm
bloba14860af51cbb2db1834bdc8840850790c6b2647
1 /* { dg-do run } */
2 /* { dg-xfail-if "PR23614" { "*-*-*" } { "*" } { "" } } */
4 #include <objc/Object.h>
5 #include <stdlib.h>
7 class MyWidget {
8  public:
9   int a;
10   MyWidget(void) { a = 17; }
13 MyWidget gWidget;
15 @protocol MyProto
16 - (MyWidget *)widget;
17 @end
19 @interface Foo: Object
20 @end
22 @interface Bar: Foo <MyProto>
23 @end
25 @interface Container: Object
26 + (MyWidget *)elementForView:(Foo *)view;
27 @end
29 @implementation Foo
30 @end
32 @implementation Bar
33 - (MyWidget *)widget {
34   return &gWidget;
36 @end
38 @implementation Container
39 + (MyWidget *)elementForView:(Foo *)view
41     MyWidget *widget = nil;
42     if ([view conformsTo:@protocol(MyProto)]) {
43         widget = [(Foo <MyProto> *)view widget];
44     }
45     return widget;
47 @end
49 int main(void) {
50   id view = [Bar new];
51   MyWidget *w = [Container elementForView: view];
53   if (!w || w->a != 17)
54     abort ();
56   return 0;