1*67e74705SXin Li// RUN: %clang_cc1 -Wno-unused -fblocks -ast-dump -ast-dump-filter Test %s | FileCheck -strict-whitespace %s 2*67e74705SXin Li 3*67e74705SXin Li@interface A 4*67e74705SXin Li@end 5*67e74705SXin Li 6*67e74705SXin Li@interface TestObjCImplementation : A 7*67e74705SXin Li@end 8*67e74705SXin Li 9*67e74705SXin Li@implementation TestObjCImplementation : A { 10*67e74705SXin Li struct X { 11*67e74705SXin Li int i; 12*67e74705SXin Li } X; 13*67e74705SXin Li} 14*67e74705SXin Li- (void) foo { 15*67e74705SXin Li} 16*67e74705SXin Li@end 17*67e74705SXin Li// CHECK: ObjCImplementationDecl{{.*}} TestObjCImplementation 18*67e74705SXin Li// CHECK-NEXT: super ObjCInterface{{.*}} 'A' 19*67e74705SXin Li// CHECK-NEXT: ObjCInterface{{.*}} 'TestObjCImplementation' 20*67e74705SXin Li// CHECK-NEXT: CXXCtorInitializer{{.*}} 'X' 21*67e74705SXin Li// CHECK-NEXT: CXXConstructExpr 22*67e74705SXin Li// CHECK-NEXT: ObjCIvarDecl{{.*}} X 23*67e74705SXin Li// CHECK-NEXT: ObjCMethodDecl{{.*}} foo 24*67e74705SXin Li 25*67e74705SXin Li// @() boxing expressions. 26*67e74705SXin Litemplate <typename T> 27*67e74705SXin Listruct BoxingTest { 28*67e74705SXin Li static id box(T value) { 29*67e74705SXin Li return @(value); 30*67e74705SXin Li } 31*67e74705SXin Li}; 32*67e74705SXin Li 33*67e74705SXin Li// CHECK: ObjCBoxedExpr{{.*}} '<dependent type>'{{$}} 34