// RUN: rm -rf %t // RUN: mkdir %t // 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 // RUN: FileCheck %s < %t/out // Ensure that XML we generate is not invalid. // RUN: FileCheck %s -check-prefix=WRONG < %t/out // WRONG-NOT: CommentXMLInvalid // rdar://12378714 /** * \brief This is a protocol definition */ @protocol MyProto @optional /** * \brief MethodMyProto method * \param[in] anObject input value * \param[in] range output value is unsigned int * \result return index */ - (unsigned int)MethodMyProto:(nullable id)anObject inRange:(unsigned int)range; /** * \brief PropertyMyProto - This is protocol's property. */ @property (copy, nonnull) id PropertyMyProto; /** * \brief ClassMethodMyProto */ + ClassMethodMyProto; @end // CHECK: <Declaration>@protocol MyProto\n@end</Declaration> // CHECK: <Declaration>- (unsigned int)MethodMyProto:(nullable id)anObject inRange:(unsigned int)range;</Declaration> // CHECK: <Declaration>@optional\n@property(readwrite, copy, atomic, nonnull) id PropertyMyProto;</Declaration> // CHECK: <Declaration>+ (id)ClassMethodMyProto;</Declaration> /** * \brief NSObject is the root class. */ @interface NSObject { /** * \brief IvarNSObject */ id IvarNSObject; } @end // CHECK: Declaration>@interface NSObject {\n id IvarNSObject;\n}\n@end</Declaration> // CHECK: <Declaration>id IvarNSObject</Declaration> /** * \brief MyClass - primary class. */ @interface MyClass : NSObject<MyProto> { /** * \brief IvarMyClass - IvarMyClass of values. */ id IvarMyClass; } /** * \brief MethodMyClass is instance method. */ - MethodMyClass; /** * \brief ClassMethodMyClass is class method. */ + ClassMethodMyClass; /** * \brief PropertyMyClass - This is class's property. */ @property (copy) id PropertyMyClass; @end // CHECK: <Declaration>@interface MyClass : NSObject <MyProto> {\n id IvarMyClass;\n}\n@end</Declaration> // CHECK: <Declaration>id IvarMyClass</Declaration> // CHECK: <Declaration>- (id)MethodMyClass;</Declaration> // CHECK: <Declaration>+ (id)ClassMethodMyClass;</Declaration> // CHECK: <Declaration>@property(readwrite, copy, atomic) id PropertyMyClass;</Declaration /** * \brief - This is class extension of MyClass */ @interface MyClass() { /** * \brief IvarMyClassExtension - IvarMyClassExtension private to class extension */ id IvarMyClassExtension; } @end // CHECK: <Declaration>@interface MyClass () {\n id IvarMyClassExtension;\n}\n@end</Declaration> // CHECK: <Declaration>id IvarMyClassExtension</Declaration> /** * \brief MyClass (Category) is private to MyClass. */ @interface MyClass (Category) /** * \brief This is private to MyClass */ - (void)MethodMyClassCategory; /** * \brief PropertyMyClassCategory - This is class's private property. */ @property (copy) id PropertyMyClassCategory; @end // CHECK: <Declaration>@interface MyClass (Category)\n@end</Declaration> // CHECK: <Declaration>- (void)MethodMyClassCategory;</Declaration> // CHECK: <Declaration>@property(readwrite, copy, atomic) id PropertyMyClassCategory;</Declaration> // CHECK: <Declaration>- (id)PropertyMyClassCategory;</Declaration> // CHECK: <Declaration>- (void)setPropertyMyClassCategory:(id)arg;</Declaration> /// @implementation's /** * \brief implementation of MyClass class. */ @implementation MyClass { /** * \brief IvarPrivateToMyClassImpl. */ id IvarPrivateToMyClassImpl; } /** * \brief MethodMyClass is instance method implementation. */ - MethodMyClass { return 0; } /** * \brief ClassMethodMyClass is class method implementation. */ + ClassMethodMyClass { return 0; } @end // CHECK: <Declaration>@implementation MyClass {\n id IvarPrivateToMyClassImpl;\n id _PropertyMyClass;\n}\n@end</Declaration> // CHECK: <Declaration>id IvarPrivateToMyClassImpl</Declaration> // CHECK: <Declaration>- (id)MethodMyClass;</Declaration> // CHECK: <Declaration>+ (id)ClassMethodMyClass;</Declaration> /** * \brief MyClass (Category) is implementation of private to MyClass. */ @implementation MyClass (Category) /** * \brief This is private to MyClass */ - (void)MethodMyClassCategory {} /** * \brief property getter */ - (id) PropertyMyClassCategory { return 0; } /** * \brief property setter */ - (void) setPropertyMyClassCategory : (id) arg {} @end // CHECK: <Declaration>@implementation MyClass (Category)\n@end</Declaration> // CHECK: <Declaration>- (void)MethodMyClassCategory;</Declaration> // CHECK: <Declaration>- (id)PropertyMyClassCategory;</Declaration> // CHECK: <Declaration>- (void)setPropertyMyClassCategory:(id)arg;</Declaration> /** * \brief NSObject implementation */ @implementation NSObject @end // CHECK: <Declaration>@implementation NSObject\n@end</Declaration>