diff --git a/clang/test/AST/ast-dump-recovery.m b/clang/test/AST/ast-dump-recovery.m new file mode 100644 --- /dev/null +++ b/clang/test/AST/ast-dump-recovery.m @@ -0,0 +1,18 @@ +// RUN: not %clang_cc1 -triple x86_64-unknown-unknown -frecovery-ast -frecovery-ast-type -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 *' + // CHECK-CHECK: | `-DeclRefExpr {{.*}} 'foo' + // CHECK-CHECK: `-RecoveryExpr {{.*}} + [foo method:undef]; + + // CHECK: ImplicitCastExpr {{.*}} '' contains-errors + // CHECK-NEXT: `-RecoveryExpr {{.*}} '' contains-errors + // CHECK-NEXT: `-DeclRefExpr {{.*}} 'foo' + foo.undef; +}