diff options
Diffstat (limited to 'test/Index/comment-objc-decls.m')
-rw-r--r-- | test/Index/comment-objc-decls.m | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/test/Index/comment-objc-decls.m b/test/Index/comment-objc-decls.m new file mode 100644 index 0000000..ae3b0bb --- /dev/null +++ b/test/Index/comment-objc-decls.m @@ -0,0 +1,175 @@ +// 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:(id)anObject inRange:(unsigned int)range; +/** + * \brief PropertyMyProto - This is protocol's property. +*/ +@property (copy) id PropertyMyProto; +/** + * \brief ClassMethodMyProto +*/ ++ ClassMethodMyProto; +@end +// CHECK: <Declaration>@protocol MyProto\n@end</Declaration> +// CHECK: <Declaration>- (unsigned int)MethodMyProto:(id)anObject inRange:(unsigned int)range;</Declaration> +// CHECK: <Declaration>@optional\n@property(readwrite, copy, atomic) 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> |