forked from OSchip/llvm-project
				
			Re-land [ASTImporter] Add test for ObjCAtTryStmt/ObjCAtCatchStmt/ObjCAtThrowStmt
Lands r340468 again, but this time we mark the test as unsupported on Windows because it seems that try/catch crashes CodeGen at the moment. llvm-svn: 340541
This commit is contained in:
		
							parent
							
								
									40aa86751a
								
							
						
					
					
						commit
						121ecfd22c
					
				| 
						 | 
				
			
			@ -0,0 +1,28 @@
 | 
			
		|||
@interface Exception
 | 
			
		||||
@end
 | 
			
		||||
@interface OtherException
 | 
			
		||||
@end
 | 
			
		||||
 | 
			
		||||
void f() {
 | 
			
		||||
  @try {
 | 
			
		||||
    Exception *e;
 | 
			
		||||
    @throw e;
 | 
			
		||||
  }
 | 
			
		||||
  @catch (Exception *varname) {
 | 
			
		||||
  }
 | 
			
		||||
  @finally {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @try {
 | 
			
		||||
  }
 | 
			
		||||
  @catch (Exception *varname1) {
 | 
			
		||||
    @throw;
 | 
			
		||||
  }
 | 
			
		||||
  @catch (OtherException *varname2) {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @try {
 | 
			
		||||
  }
 | 
			
		||||
  @finally {
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,43 @@
 | 
			
		|||
// RUN: clang-import-test -x objective-c++ -Xcc -fobjc-exceptions -dump-ast -import %S/Inputs/F.m -expression %s | FileCheck %s
 | 
			
		||||
 | 
			
		||||
// FIXME: Seems that Objective-C try/catch crash codegen on Windows. Reenable once this is fixed.
 | 
			
		||||
// UNSUPPORTED: system-windows
 | 
			
		||||
 | 
			
		||||
// CHECK: ObjCAtTryStmt
 | 
			
		||||
// CHECK-NEXT: CompoundStmt
 | 
			
		||||
// CHECK-NEXT: DeclStmt
 | 
			
		||||
// CHECK-NEXT: VarDecl
 | 
			
		||||
// CHECK-NEXT: ObjCAtThrowStmt
 | 
			
		||||
// CHECK-NEXT: ImplicitCastExpr
 | 
			
		||||
// CHECK-NEXT: DeclRefExpr
 | 
			
		||||
// CHECK-NEXT: ObjCAtCatchStmt
 | 
			
		||||
// CHECK-NEXT: VarDecl
 | 
			
		||||
// CHECK-SAME: varname
 | 
			
		||||
// CHECK-SAME: 'Exception *'
 | 
			
		||||
// CHECK-NEXT: CompoundStmt
 | 
			
		||||
// CHECK-NEXT: ObjCAtFinallyStmt
 | 
			
		||||
// CHECK-NEXT: CompoundStmt
 | 
			
		||||
 | 
			
		||||
// CHECK-NEXT: ObjCAtTryStmt
 | 
			
		||||
// CHECK-NEXT: CompoundStmt
 | 
			
		||||
// CHECK-NEXT: ObjCAtCatchStmt
 | 
			
		||||
// CHECK-NEXT: VarDecl
 | 
			
		||||
// CHECK-SAME: varname1
 | 
			
		||||
// CHECK-SAME: 'Exception *'
 | 
			
		||||
// CHECK-NEXT: CompoundStmt
 | 
			
		||||
// CHECK-NEXT: ObjCAtThrowStmt
 | 
			
		||||
// CHECK-NEXT: <<NULL>>
 | 
			
		||||
// CHECK-NEXT: ObjCAtCatchStmt
 | 
			
		||||
// CHECK-NEXT: VarDecl
 | 
			
		||||
// CHECK-SAME: varname2
 | 
			
		||||
// CHECK-SAME: 'OtherException *'
 | 
			
		||||
// CHECK-NEXT: CompoundStmt
 | 
			
		||||
 | 
			
		||||
// CHECK-NEXT: ObjCAtTryStmt
 | 
			
		||||
// CHECK-NEXT: CompoundStmt
 | 
			
		||||
// CHECK-NEXT: ObjCAtFinallyStmt
 | 
			
		||||
// CHECK-NEXT: CompoundStmt
 | 
			
		||||
 | 
			
		||||
void expr() {
 | 
			
		||||
  f();
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue