Manuel Klimek | 874030e | 2012-11-07 00:33:12 +0000 | [diff] [blame] | 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 | } |
Alexander Kornienko | 90ff607 | 2012-12-20 02:09:13 +0000 | [diff] [blame] | 6 | // CHECK: FunctionDecl{{.*}}TestBlockExpr |
| 7 | // CHECK: BlockExpr{{.*}} 'void (^)(void)' |
| 8 | // CHECK-NEXT: BlockDecl |
Manuel Klimek | 874030e | 2012-11-07 00:33:12 +0000 | [diff] [blame] | 9 | |
| 10 | void TestExprWithCleanup(int x) { |
| 11 | ^{ x; }; |
| 12 | } |
Alexander Kornienko | 90ff607 | 2012-12-20 02:09:13 +0000 | [diff] [blame] | 13 | // CHECK: FunctionDecl{{.*}}TestExprWithCleanup |
Manuel Klimek | 874030e | 2012-11-07 00:33:12 +0000 | [diff] [blame] | 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 | } |
Alexander Kornienko | 90ff607 | 2012-12-20 02:09:13 +0000 | [diff] [blame] | 28 | // CHECK: FunctionDecl{{.*}}TestObjCAtCatchStmt |
Manuel Klimek | 874030e | 2012-11-07 00:33:12 +0000 | [diff] [blame] | 29 | // CHECK: ObjCAtTryStmt |
| 30 | // CHECK-NEXT: CompoundStmt |
Alexander Kornienko | 90ff607 | 2012-12-20 02:09:13 +0000 | [diff] [blame] | 31 | // CHECK-NEXT: ObjCAtCatchStmt{{.*}} |
| 32 | // CHECK-NEXT: VarDecl{{.*}}a |
Manuel Klimek | 874030e | 2012-11-07 00:33:12 +0000 | [diff] [blame] | 33 | // CHECK-NEXT: CompoundStmt |
| 34 | // CHECK-NEXT: ObjCAtCatchStmt{{.*}} catch all |
| 35 | // CHECK-NEXT: CompoundStmt |
| 36 | // CHECK-NEXT: ObjCAtFinallyStmt |