1 | // RUN: rm -rf %t |
2 | // RUN: mkdir %t |
3 | // RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng -target x86_64-apple-darwin10 %s > %t/out |
4 | // RUN: FileCheck %s < %t/out |
5 | |
6 | // Ensure that XML we generate is not invalid. |
7 | // RUN: FileCheck %s -check-prefix=WRONG < %t/out |
8 | // WRONG-NOT: CommentXMLInvalid |
9 | |
10 | // rdar://12378714 |
11 | |
12 | /** |
13 | * \brief This is a protocol definition |
14 | */ |
15 | @protocol MyProto |
16 | @optional |
17 | /** |
18 | * \brief MethodMyProto method |
19 | * \param[in] anObject input value |
20 | * \param[in] range output value is unsigned int |
21 | * \result return index |
22 | */ |
23 | - (unsigned int)MethodMyProto:(nullable id)anObject inRange:(unsigned int)range; |
24 | /** |
25 | * \brief PropertyMyProto - This is protocol's property. |
26 | */ |
27 | @property (copy, nonnull) id PropertyMyProto; |
28 | /** |
29 | * \brief ClassMethodMyProto |
30 | */ |
31 | + ClassMethodMyProto; |
32 | @end |
33 | // CHECK: <Declaration>@protocol MyProto\n@end</Declaration> |
34 | // CHECK: <Declaration>- (unsigned int)MethodMyProto:(nullable id)anObject inRange:(unsigned int)range;</Declaration> |
35 | // CHECK: <Declaration>@optional\n@property(readwrite, copy, atomic, nonnull) id PropertyMyProto;</Declaration> |
36 | // CHECK: <Declaration>+ (id)ClassMethodMyProto;</Declaration> |
37 | |
38 | /** |
39 | * \brief NSObject is the root class. |
40 | */ |
41 | @interface NSObject { |
42 | /** |
43 | * \brief IvarNSObject |
44 | */ |
45 | id IvarNSObject; |
46 | } |
47 | @end |
48 | // CHECK: Declaration>@interface NSObject {\n id IvarNSObject;\n}\n@end</Declaration> |
49 | // CHECK: <Declaration>id IvarNSObject</Declaration> |
50 | |
51 | /** |
52 | * \brief MyClass - primary class. |
53 | */ |
54 | @interface MyClass : NSObject<MyProto> |
55 | { |
56 | /** |
57 | * \brief IvarMyClass - IvarMyClass of values. |
58 | */ |
59 | id IvarMyClass; |
60 | } |
61 | /** |
62 | * \brief MethodMyClass is instance method. |
63 | */ |
64 | - MethodMyClass; |
65 | |
66 | /** |
67 | * \brief ClassMethodMyClass is class method. |
68 | */ |
69 | + ClassMethodMyClass; |
70 | |
71 | /** |
72 | * \brief PropertyMyClass - This is class's property. |
73 | */ |
74 | @property (copy) id PropertyMyClass; |
75 | @end |
76 | // CHECK: <Declaration>@interface MyClass : NSObject <MyProto> {\n id IvarMyClass;\n}\n@end</Declaration> |
77 | // CHECK: <Declaration>id IvarMyClass</Declaration> |
78 | // CHECK: <Declaration>- (id)MethodMyClass;</Declaration> |
79 | // CHECK: <Declaration>+ (id)ClassMethodMyClass;</Declaration> |
80 | // CHECK: <Declaration>@property(readwrite, copy, atomic) id PropertyMyClass;</Declaration |
81 | |
82 | /** |
83 | * \brief - This is class extension of MyClass |
84 | */ |
85 | @interface MyClass() |
86 | { |
87 | /** |
88 | * \brief IvarMyClassExtension - IvarMyClassExtension private to class extension |
89 | */ |
90 | id IvarMyClassExtension; |
91 | } |
92 | @end |
93 | // CHECK: <Declaration>@interface MyClass () {\n id IvarMyClassExtension;\n}\n@end</Declaration> |
94 | // CHECK: <Declaration>id IvarMyClassExtension</Declaration> |
95 | |
96 | |
97 | /** |
98 | * \brief MyClass (Category) is private to MyClass. |
99 | */ |
100 | @interface MyClass (Category) |
101 | /** |
102 | * \brief This is private to MyClass |
103 | */ |
104 | - (void)MethodMyClassCategory; |
105 | |
106 | /** |
107 | * \brief PropertyMyClassCategory - This is class's private property. |
108 | */ |
109 | @property (copy) id PropertyMyClassCategory; |
110 | @end |
111 | // CHECK: <Declaration>@interface MyClass (Category)\n@end</Declaration> |
112 | // CHECK: <Declaration>- (void)MethodMyClassCategory;</Declaration> |
113 | // CHECK: <Declaration>@property(readwrite, copy, atomic) id PropertyMyClassCategory;</Declaration> |
114 | // CHECK: <Declaration>- (id)PropertyMyClassCategory;</Declaration> |
115 | // CHECK: <Declaration>- (void)setPropertyMyClassCategory:(id)arg;</Declaration> |
116 | |
117 | /// @implementation's |
118 | |
119 | /** |
120 | * \brief implementation of MyClass class. |
121 | */ |
122 | @implementation MyClass { |
123 | /** |
124 | * \brief IvarPrivateToMyClassImpl. |
125 | */ |
126 | id IvarPrivateToMyClassImpl; |
127 | } |
128 | /** |
129 | * \brief MethodMyClass is instance method implementation. |
130 | */ |
131 | - MethodMyClass { |
132 | return 0; |
133 | } |
134 | |
135 | /** |
136 | * \brief ClassMethodMyClass is class method implementation. |
137 | */ |
138 | + ClassMethodMyClass { |
139 | return 0; |
140 | } |
141 | @end |
142 | // CHECK: <Declaration>@implementation MyClass {\n id IvarPrivateToMyClassImpl;\n id _PropertyMyClass;\n}\n@end</Declaration> |
143 | // CHECK: <Declaration>id IvarPrivateToMyClassImpl</Declaration> |
144 | // CHECK: <Declaration>- (id)MethodMyClass;</Declaration> |
145 | // CHECK: <Declaration>+ (id)ClassMethodMyClass;</Declaration> |
146 | |
147 | /** |
148 | * \brief MyClass (Category) is implementation of private to MyClass. |
149 | */ |
150 | @implementation MyClass (Category) |
151 | /** |
152 | * \brief This is private to MyClass |
153 | */ |
154 | - (void)MethodMyClassCategory {} |
155 | /** |
156 | * \brief property getter |
157 | */ |
158 | - (id) PropertyMyClassCategory { return 0; } |
159 | |
160 | /** |
161 | * \brief property setter |
162 | */ |
163 | - (void) setPropertyMyClassCategory : (id) arg {} |
164 | @end |
165 | // CHECK: <Declaration>@implementation MyClass (Category)\n@end</Declaration> |
166 | // CHECK: <Declaration>- (void)MethodMyClassCategory;</Declaration> |
167 | // CHECK: <Declaration>- (id)PropertyMyClassCategory;</Declaration> |
168 | // CHECK: <Declaration>- (void)setPropertyMyClassCategory:(id)arg;</Declaration> |
169 | |
170 | /** |
171 | * \brief NSObject implementation |
172 | */ |
173 | @implementation NSObject |
174 | @end |
175 | // CHECK: <Declaration>@implementation NSObject\n@end</Declaration> |
176 | |