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