50 lines
941 B
Mathematica
50 lines
941 B
Mathematica
|
// RUN: %clang_cc1 -fblocks -fsyntax-only -verify -Wno-objc-root-class %s
|
||
|
// expected-no-diagnostics
|
||
|
|
||
|
@interface NSObject
|
||
|
- (id)self;
|
||
|
- (id)copy;
|
||
|
@end
|
||
|
|
||
|
typedef struct _foo *__attribute__((NSObject)) Foo_ref;
|
||
|
|
||
|
@interface TestObject {
|
||
|
Foo_ref dict;
|
||
|
}
|
||
|
@property(retain) Foo_ref dict;
|
||
|
@end
|
||
|
|
||
|
@implementation TestObject
|
||
|
@synthesize dict;
|
||
|
@end
|
||
|
|
||
|
@interface NSDictionary
|
||
|
- (int)retainCount;
|
||
|
@end
|
||
|
|
||
|
int main(int argc, char *argv[]) {
|
||
|
NSDictionary *dictRef;
|
||
|
Foo_ref foo = (Foo_ref)dictRef;
|
||
|
|
||
|
// do Properties retain?
|
||
|
int before = [dictRef retainCount];
|
||
|
int after = [dictRef retainCount];
|
||
|
|
||
|
if ([foo retainCount] != [dictRef retainCount]) {
|
||
|
}
|
||
|
|
||
|
// do Blocks retain?
|
||
|
{
|
||
|
void (^block)(void) = ^{
|
||
|
[foo self];
|
||
|
};
|
||
|
before = [foo retainCount];
|
||
|
id save = [block copy];
|
||
|
after = [foo retainCount];
|
||
|
if (after <= before) {
|
||
|
;
|
||
|
}
|
||
|
}
|
||
|
return 0;
|
||
|
}
|