// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c++ %s.result // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c++ %s > %t // RUN: diff %t %s.result #include "Common.h" @interface NSString : NSObject +(id)string; @end struct foo { NSString *s; foo(NSString *s): s([s retain]){ NSAutoreleasePool *pool = [NSAutoreleasePool new]; [[[NSString string] retain] release]; [pool drain]; if (s) [s release]; } ~foo(){ [s release]; } private: foo(foo const &); foo &operator=(foo const &); }; int main(){ NSAutoreleasePool *pool = [NSAutoreleasePool new]; foo f([[NSString string] autorelease]); [pool drain]; return 0; }