[clang] Implement lifetime analysis for lifetime_capture_by(X) (#115921)
[llvm-project.git] / clang / test / ARCMT / atautorelease.m
bloba6aed146497b437b944324910a9a4d65ff9007e3
1 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
2 // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
3 // RUN: diff %t %s.result
5 #include "Common.h"
7 void NSLog(id, ...);
9 int main (int argc, const char * argv[]) {
11     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
13     if (argc) {
14         NSAutoreleasePool * pool = [NSAutoreleasePool  new];
15         NSLog(@"%s", "YES");
16         [pool drain];
17     }
18     [pool drain];
20     NSAutoreleasePool * pool1 = [[NSAutoreleasePool alloc] init];
21     NSLog(@"%s", "YES");
22     [pool1 release];
24     return 0;
27 void f(void) {
28   NSAutoreleasePool *pool1;
30   pool1 = [NSAutoreleasePool new];
31   int x = 4;
33   NSAutoreleasePool *pool2 = [[NSAutoreleasePool alloc] init];
34   ++x;
35   [pool2 drain];
37   [pool1 release];
40 int UIApplicationMain(int argc, char *argv[]);
42 int main2(int argc, char *argv[]) {
43     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
44     int result = UIApplicationMain(argc, argv);
45     [pool release];
46     return result;
49 @interface Foo : NSObject
50 @property (assign) id myProp;
51 @end
53 @implementation Foo
54 @synthesize myProp;
56 -(void)test:(id)p {
57   NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
58   [pool drain];
59   self.myProp = p;
61 @end