forked from OSchip/llvm-project
176 lines
4.7 KiB
Objective-C
176 lines
4.7 KiB
Objective-C
// 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>
|