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 4 5 #include "Common.h" 6 7 @interface NSString : NSObject 8 +(id)string; 9 @end 10 11 struct foo { 12 NSString *s; 13 foo(NSString *s): s([s retain]){ 14 NSAutoreleasePool *pool = [NSAutoreleasePool new]; 15 [[[NSString string] retain] release]; 16 [pool drain]; 17 if (s) 18 [s release]; 19 } 20 ~foo(){ [s release]; } 21 private: 22 foo(foo const &); 23 foo &operator=(foo const &); 24 }; 25 26 int main(){ 27 NSAutoreleasePool *pool = [NSAutoreleasePool new]; 28 29 foo f([[NSString string] autorelease]); 30 31 [pool drain]; 32 return 0; 33 } 34