| // RUN: %clang_cc1 -x objective-c -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp | 
 | // RUN: %clang_cc1 -fsyntax-only -fcxx-exceptions -fexceptions  -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp | 
 |  | 
 | typedef struct objc_class *Class; | 
 | typedef struct objc_object { | 
 |     Class isa; | 
 | } *id; | 
 |  | 
 | extern int printf(const char *, ...); | 
 |  | 
 | int main() { | 
 |   @try { | 
 |   }  | 
 |   @finally { | 
 |   } | 
 |   while (1) { | 
 |     @try { | 
 |       printf("executing try"); | 
 |       break; | 
 |     } @finally { | 
 |       printf("executing finally"); | 
 |     } | 
 |     printf("executing after finally block"); | 
 |   } | 
 |   @try { | 
 |     printf("executing try"); | 
 |   } @finally { | 
 |     printf("executing finally"); | 
 |   } | 
 |   return 0; | 
 | } | 
 |  | 
 | void test2_try_with_implicit_finally() { | 
 |     @try { | 
 |         return; | 
 |     } @catch (id e) { | 
 |          | 
 |     } | 
 | } | 
 |  | 
 | void FINALLY(); | 
 | void TRY(); | 
 | void CATCH(); | 
 |  | 
 | @interface NSException | 
 | @end | 
 |  | 
 | @interface Foo | 
 | @end | 
 |  | 
 | @implementation Foo | 
 | - (void)bar { | 
 |     @try { | 
 | 	TRY(); | 
 |     }  | 
 |     @catch (NSException *e) { | 
 | 	CATCH(); | 
 |     } | 
 |     @finally { | 
 | 	FINALLY(); | 
 |     } | 
 | } | 
 | @end |