[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / clang / test / Rewriter / protocol-rewrite-1.m
blob867f4a6b28cbbfa55ef4754385c32982b0db802d
1 // RUN: %clang_cc1 -x objective-c -Wno-objc-root-class -fms-extensions -rewrite-objc %s -o %t-rw.cpp
2 // RUN: FileCheck  --input-file=%t-rw.cpp %s
4 typedef struct MyWidget {
5   int a;
6 } MyWidget;
8 MyWidget gWidget = { 17 };
10 @protocol MyProto
11 - (MyWidget *)widget;
12 @end
14 @interface Foo 
15 @end
17 @interface Bar: Foo <MyProto>
18 @end
20 @interface Container 
21 + (MyWidget *)elementForView:(Foo *)view;
22 @end
24 @implementation Foo
25 @end
27 @implementation Bar
28 - (MyWidget *)widget {
29   return &gWidget;
31 @end
33 @implementation Container
34 + (MyWidget *)elementForView:(Foo *)view
36   MyWidget *widget = (void*)0;
37   if (@protocol(MyProto)) {
38     widget = [(id <MyProto>)view widget];
39   }
40   return widget;
42 @end
44 int main(void) {
45   id view;
46   MyWidget *w = [Container elementForView: view];
48   return 0;
51 @class NSObject;
53 @interface NSProtocolChecker
54 + (id)protocolCheckerWithTarget:(NSObject *)anObject protocol:(Protocol *)aProtocol;
55 @end
57 @protocol NSConnectionVersionedProtocol
58 @end
61 @interface NSConnection @end
63 @implementation NSConnection
64 - (void) Meth {
65   [NSProtocolChecker protocolCheckerWithTarget:0 protocol:@protocol(NSConnectionVersionedProtocol)];
67 @end
69 // CHECK: static struct _protocol_t *_OBJC_PROTOCOL_REFERENCE_$_NSConnectionVersionedProtocol = &_OBJC_PROTOCOL_NSConnectionVersionedProtocol
70 // CHECK: sel_registerName("protocolCheckerWithTarget:protocol:"), (NSObject *)0, (Protocol *)_OBJC_PROTOCOL_REFERENCE_$_NSConnectionVersionedProtocol