64 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
// 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
 |