// 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: @protocol MyProto\n@end
// CHECK: - (unsigned int)MethodMyProto:(nullable id)anObject inRange:(unsigned int)range;
// CHECK: @optional\n@property(readwrite, copy, atomic, nonnull) id PropertyMyProto;
// CHECK: + (id)ClassMethodMyProto;
/**
* \brief NSObject is the root class.
*/
@interface NSObject {
/**
* \brief IvarNSObject
*/
id IvarNSObject;
}
@end
// CHECK: Declaration>@interface NSObject {\n id IvarNSObject;\n}\n@end
// CHECK: id IvarNSObject
/**
* \brief MyClass - primary class.
*/
@interface MyClass : NSObject
{
/**
* \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: @interface MyClass : NSObject <MyProto> {\n id IvarMyClass;\n}\n@end
// CHECK: id IvarMyClass
// CHECK: - (id)MethodMyClass;
// CHECK: + (id)ClassMethodMyClass;
// CHECK: @property(readwrite, copy, atomic) id PropertyMyClass;@interface MyClass () {\n id IvarMyClassExtension;\n}\n@end
// CHECK: id IvarMyClassExtension
/**
* \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: @interface MyClass (Category)\n@end
// CHECK: - (void)MethodMyClassCategory;
// CHECK: @property(readwrite, copy, atomic) id PropertyMyClassCategory;
// CHECK: - (id)PropertyMyClassCategory;
// CHECK: - (void)setPropertyMyClassCategory:(id)arg;
/// @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: @implementation MyClass {\n id IvarPrivateToMyClassImpl;\n id _PropertyMyClass;\n}\n@end
// CHECK: id IvarPrivateToMyClassImpl
// CHECK: - (id)MethodMyClass;
// CHECK: + (id)ClassMethodMyClass;
/**
* \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: @implementation MyClass (Category)\n@end
// CHECK: - (void)MethodMyClassCategory;
// CHECK: - (id)PropertyMyClassCategory;
// CHECK: - (void)setPropertyMyClassCategory:(id)arg;
/**
* \brief NSObject implementation
*/
@implementation NSObject
@end
// CHECK: @implementation NSObject\n@end