2012-12-20 10:09:13 +08:00
|
|
|
// RUN: %clang_cc1 -Wno-unused -fblocks -ast-dump -ast-dump-filter Test %s | FileCheck -strict-whitespace %s
|
|
|
|
|
|
|
|
@interface A
|
|
|
|
@end
|
|
|
|
|
|
|
|
@interface TestObjCImplementation : A
|
|
|
|
@end
|
|
|
|
|
|
|
|
@implementation TestObjCImplementation : A {
|
|
|
|
struct X {
|
|
|
|
int i;
|
|
|
|
} X;
|
|
|
|
}
|
|
|
|
- (void) foo {
|
|
|
|
}
|
|
|
|
@end
|
|
|
|
// CHECK: ObjCImplementationDecl{{.*}} TestObjCImplementation
|
|
|
|
// CHECK-NEXT: super ObjCInterface{{.*}} 'A'
|
|
|
|
// CHECK-NEXT: ObjCInterface{{.*}} 'TestObjCImplementation'
|
|
|
|
// CHECK-NEXT: CXXCtorInitializer{{.*}} 'X'
|
|
|
|
// CHECK-NEXT: CXXConstructExpr
|
|
|
|
// CHECK-NEXT: ObjCIvarDecl{{.*}} X
|
|
|
|
// CHECK-NEXT: ObjCMethodDecl{{.*}} foo
|
2016-06-10 06:03:04 +08:00
|
|
|
|
|
|
|
// @() boxing expressions.
|
|
|
|
template <typename T>
|
|
|
|
struct BoxingTest {
|
|
|
|
static id box(T value) {
|
|
|
|
return @(value);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
// CHECK: ObjCBoxedExpr{{.*}} '<dependent type>'{{$}}
|