diff options
Diffstat (limited to 'clang/test/Coverage/objc-language-features.inc')
-rw-r--r-- | clang/test/Coverage/objc-language-features.inc | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/clang/test/Coverage/objc-language-features.inc b/clang/test/Coverage/objc-language-features.inc new file mode 100644 index 0000000..dbbf205 --- /dev/null +++ b/clang/test/Coverage/objc-language-features.inc @@ -0,0 +1,87 @@ +//-*- ObjC -*- + +@protocol P0; + +@protocol P1 +-(void) fm0; +@end + +@class B; + +@interface Root +@end + +@interface A : Root <P1> { + int iv0; + B *iv1; + B<P1> *iv2; +} + +@property(readonly) int p0; +@property(assign,nonatomic,readwrite) int p1; +@property(copy) id p2; +@property(retain) id p3; +@property(assign, getter=getme, setter=setme:) id p4; +@property(assign, readwrite) id p5; +@end + +@implementation A +@dynamic p0; +@synthesize p1 = iv0; + +// Property type can differ from ivar type. +@synthesize p5 = iv2; + ++(void) fm0 { + [super fm0]; +} +-(void) im0 { + const char *s0 = __func__; + const char *s1 = __FUNCTION__; + const char *s2 = __PRETTY_FUNCTION__; + [super im0]; + int x = super.p0; +} +-(void) im1: (int) x, ... { +} +@end + +@implementation C : A +@end + +@interface A (Cat) +@end + +@implementation A (Cat) +@end + +@interface B +@end + +int f0(id x) { + @synchronized(x) { + } + + @try { + @throw x; + + } @catch(A *e) { + @throw; + + // @catch param doesn't require name. + } @catch(B *) { + + } @finally { + ; + } + + for (id y in x) { + break; + } +} + +#ifndef __OBJC2__ +struct s0 { + @defs(A); +}; +#endif |