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