174 lines · plain
1// RUN: rm -rf %t2// RUN: mkdir %t3// 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/out4// RUN: FileCheck %s < %t/out5 6// Ensure that XML we generate is not invalid.7// RUN: FileCheck %s -check-prefix=WRONG < %t/out8// WRONG-NOT: CommentXMLInvalid9 10/**11 * \brief This is a protocol definition12*/13@protocol MyProto14@optional15/**16 * \brief MethodMyProto method17 * \param[in] anObject input value18 * \param[in] range output value is unsigned int19 * \result return index20 */21- (unsigned int)MethodMyProto:(nullable id)anObject inRange:(unsigned int)range;22/**23 * \brief PropertyMyProto - This is protocol's property.24*/25@property (copy, nonnull) id PropertyMyProto;26/**27 * \brief ClassMethodMyProto28*/29+ ClassMethodMyProto;30@end31// CHECK: <Declaration>@protocol MyProto\n@end</Declaration>32// CHECK: <Declaration>- (unsigned int)MethodMyProto:(nullable id)anObject inRange:(unsigned int)range;</Declaration>33// CHECK: <Declaration>@optional\n@property(atomic, copy, readwrite, nonnull) id PropertyMyProto;</Declaration>34// CHECK: <Declaration>+ (id)ClassMethodMyProto;</Declaration>35 36/**37 * \brief NSObject is the root class.38*/39@interface NSObject {40/**41 * \brief IvarNSObject42*/43 id IvarNSObject;44}45@end46// CHECK: Declaration>@interface NSObject {\n id IvarNSObject;\n}\n@end</Declaration>47// CHECK: <Declaration>id IvarNSObject</Declaration>48 49/**50 * \brief MyClass - primary class.51*/52@interface MyClass : NSObject<MyProto>53{54/**55 * \brief IvarMyClass - IvarMyClass of values.56*/57 id IvarMyClass;58}59/**60 * \brief MethodMyClass is instance method.61*/62- MethodMyClass;63 64/**65 * \brief ClassMethodMyClass is class method.66*/67+ ClassMethodMyClass;68 69/**70 * \brief PropertyMyClass - This is class's property.71*/72@property (copy) id PropertyMyClass;73@end74// CHECK: <Declaration>@interface MyClass : NSObject <MyProto> {\n id IvarMyClass;\n}\n@end</Declaration>75// CHECK: <Declaration>id IvarMyClass</Declaration>76// CHECK: <Declaration>- (id)MethodMyClass;</Declaration>77// CHECK: <Declaration>+ (id)ClassMethodMyClass;</Declaration>78// CHECK: <Declaration>@property(atomic, copy, readwrite) id PropertyMyClass;</Declaration79 80/**81 * \brief - This is class extension of MyClass82*/83@interface MyClass()84{85/**86 * \brief IvarMyClassExtension - IvarMyClassExtension private to class extension87*/88 id IvarMyClassExtension;89}90@end91// CHECK: <Declaration>@interface MyClass () {\n id IvarMyClassExtension;\n}\n@end</Declaration>92// CHECK: <Declaration>id IvarMyClassExtension</Declaration>93 94 95/**96 * \brief MyClass (Category) is private to MyClass.97*/98@interface MyClass (Category)99/**100 * \brief This is private to MyClass101 */102- (void)MethodMyClassCategory;103 104/**105 * \brief PropertyMyClassCategory - This is class's private property.106*/107@property (copy) id PropertyMyClassCategory;108@end109// CHECK: <Declaration>@interface MyClass (Category)\n@end</Declaration>110// CHECK: <Declaration>- (void)MethodMyClassCategory;</Declaration>111// CHECK: <Declaration>@property(atomic, copy, readwrite) id PropertyMyClassCategory;</Declaration>112// CHECK: <Declaration>- (id)PropertyMyClassCategory;</Declaration>113// CHECK: <Declaration>- (void)setPropertyMyClassCategory:(id)arg;</Declaration>114 115/// @implementation's116 117/**118 * \brief implementation of MyClass class.119*/120@implementation MyClass {121/**122 * \brief IvarPrivateToMyClassImpl.123*/124 id IvarPrivateToMyClassImpl;125}126/**127 * \brief MethodMyClass is instance method implementation.128*/129- MethodMyClass {130 return 0;131}132 133/**134 * \brief ClassMethodMyClass is class method implementation.135*/136+ ClassMethodMyClass {137 return 0;138}139@end140// CHECK: <Declaration>@implementation MyClass {\n id IvarPrivateToMyClassImpl;\n id _PropertyMyClass;\n}\n@end</Declaration>141// CHECK: <Declaration>id IvarPrivateToMyClassImpl</Declaration>142// CHECK: <Declaration>- (id)MethodMyClass;</Declaration>143// CHECK: <Declaration>+ (id)ClassMethodMyClass;</Declaration>144 145/**146 * \brief MyClass (Category) is implementation of private to MyClass.147*/148@implementation MyClass (Category)149/**150 * \brief This is private to MyClass151 */152- (void)MethodMyClassCategory {}153/**154 * \brief property getter155*/156- (id) PropertyMyClassCategory { return 0; }157 158/**159 * \brief property setter160*/161- (void) setPropertyMyClassCategory : (id) arg {}162@end163// CHECK: <Declaration>@implementation MyClass (Category)\n@end</Declaration>164// CHECK: <Declaration>- (void)MethodMyClassCategory;</Declaration>165// CHECK: <Declaration>- (id)PropertyMyClassCategory;</Declaration>166// CHECK: <Declaration>- (void)setPropertyMyClassCategory:(id)arg;</Declaration>167 168/**169 * \brief NSObject implementation170*/171@implementation NSObject172@end173// CHECK: <Declaration>@implementation NSObject\n@end</Declaration>174