1*67e74705SXin Li// RUN: %clang_cc1 -Wno-unused -fblocks -fobjc-exceptions -ast-dump -ast-dump-filter Test %s | FileCheck -strict-whitespace %s 2*67e74705SXin Li 3*67e74705SXin Livoid TestBlockExpr(int x) { 4*67e74705SXin Li ^{ x; }; 5*67e74705SXin Li} 6*67e74705SXin Li// CHECK: FunctionDecl{{.*}}TestBlockExpr 7*67e74705SXin Li// CHECK: BlockExpr{{.*}} 'void (^)(void)' 8*67e74705SXin Li// CHECK-NEXT: BlockDecl 9*67e74705SXin Li 10*67e74705SXin Livoid TestExprWithCleanup(int x) { 11*67e74705SXin Li ^{ x; }; 12*67e74705SXin Li} 13*67e74705SXin Li// CHECK: FunctionDecl{{.*}}TestExprWithCleanup 14*67e74705SXin Li// CHECK: ExprWithCleanups 15*67e74705SXin Li// CHECK-NEXT: cleanup Block 16*67e74705SXin Li// CHECK-NEXT: BlockExpr 17*67e74705SXin Li 18*67e74705SXin Li@interface A 19*67e74705SXin Li@end 20*67e74705SXin Li 21*67e74705SXin Livoid TestObjCAtCatchStmt() { 22*67e74705SXin Li @try { 23*67e74705SXin Li } @catch(A *a) { 24*67e74705SXin Li } @catch(...) { 25*67e74705SXin Li } @finally { 26*67e74705SXin Li } 27*67e74705SXin Li} 28*67e74705SXin Li// CHECK: FunctionDecl{{.*}}TestObjCAtCatchStmt 29*67e74705SXin Li// CHECK: ObjCAtTryStmt 30*67e74705SXin Li// CHECK-NEXT: CompoundStmt 31*67e74705SXin Li// CHECK-NEXT: ObjCAtCatchStmt{{.*}} 32*67e74705SXin Li// CHECK-NEXT: VarDecl{{.*}}a 33*67e74705SXin Li// CHECK-NEXT: CompoundStmt 34*67e74705SXin Li// CHECK-NEXT: ObjCAtCatchStmt{{.*}} catch all 35*67e74705SXin Li// CHECK-NEXT: CompoundStmt 36*67e74705SXin Li// CHECK-NEXT: ObjCAtFinallyStmt 37