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