| // 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> |