| // RUN: not %clang_cc1 -triple x86_64-unknown-unknown -frecovery-ast -frecovery-ast-type -fblocks -ast-dump %s | FileCheck -strict-whitespace %s |
| |
| @interface Foo |
| - (void)method:(int)n; |
| @end |
| |
| void k(Foo *foo) { |
| // CHECK: ObjCMessageExpr {{.*}} 'void' contains-errors |
| // CHECK-CHECK: |-ImplicitCastExpr {{.*}} 'Foo *' <LValueToRValue> |
| // CHECK-CHECK: | `-DeclRefExpr {{.*}} 'foo' |
| // CHECK-CHECK: `-RecoveryExpr {{.*}} |
| [foo method:undef]; |
| |
| // CHECK: ImplicitCastExpr {{.*}} '<dependent type>' contains-errors |
| // CHECK-NEXT: `-RecoveryExpr {{.*}} '<dependent type>' contains-errors |
| // CHECK-NEXT: `-DeclRefExpr {{.*}} 'foo' |
| foo.undef; |
| } |
| |
| // CHECK: |-VarDecl {{.*}} 'int (^)()' cinit |
| // CHECK-NEXT: | `-RecoveryExpr {{.*}} '<dependent type> (^)(void)' contains-errors lvalue |
| // CHECK-NEXT: | `-BlockExpr {{.*}} '<dependent type> (^)(void)' |
| // CHECK-NEXT: | `-BlockDecl {{.*}} invalid |
| int (^gh63863)() = ^() { |
| return undef; |
| }; |
| |
| // CHECK: `-BlockExpr {{.*}} 'int (^)(int, int)' |
| // CHECK-NEXT: `-BlockDecl {{.*}} invalid |
| int (^gh64005)(int, int) = ^(int, undefined b) { |
| return 1; |
| }; |