76 lines · plain
1// RUN: %clang_cc1 -Wno-objc-root-class -emit-llvm -triple x86_64-apple-darwin %s -o - | FileCheck %s2 3__attribute__((objc_runtime_name("MySecretNamespace.Protocol")))4@protocol Protocol5- (void) MethodP;6+ (void) ClsMethodP;7@end8 9__attribute__((objc_runtime_name("MySecretNamespace.Protocol2")))10@protocol Protocol211- (void) MethodP2;12+ (void) ClsMethodP2;13 14@optional15@property(retain) id optionalProp;16 17@end18 19__attribute__((objc_runtime_name("MySecretNamespace.Protocol3")))20@protocol Protocol321@end22 23__attribute__((objc_runtime_name("MySecretNamespace.Message")))24@interface Message <Protocol, Protocol2> {25 id MyIVAR;26}27 28@property(retain) Message *msgProp;29@property(retain) Message<Protocol3> *msgProtoProp;30@property(retain) id<Protocol3> idProtoProp;31 32@end33 34@implementation Message35- (id) MyMethod {36 return MyIVAR;37}38 39+ (id) MyClsMethod {40 return 0;41}42 43- (void) MethodP{}44- (void) MethodP2{}45 46+ (void) ClsMethodP {}47+ (void) ClsMethodP2 {}48@end49 50__attribute__((objc_runtime_name("foo")))51@interface SLREarth52- (instancetype)init;53+ (instancetype)alloc;54@end55 56id Test16877359(void) {57 return [SLREarth alloc];58}59 60// CHECK: @"OBJC_CLASS_$_MySecretNamespace.Message" ={{.*}} global %struct._class_t61// CHECK: @"OBJC_METACLASS_$_MySecretNamespace.Message" ={{.*}} global %struct._class_t62 63// CHECK: @OBJC_PROP_NAME_ATTR_ = private unnamed_addr constant [13 x i8] c"optionalProp\00"64// CHECK-NEXT: @OBJC_PROP_NAME_ATTR_.11 = private unnamed_addr constant [7 x i8] c"T@,?,&\00"65// CHECK: @"_OBJC_$_PROP_LIST_MySecretNamespace.Protocol2" ={{.*}} [%struct._prop_t { ptr @OBJC_PROP_NAME_ATTR_, ptr @OBJC_PROP_NAME_ATTR_.11 }]66 67// CHECK: @"OBJC_IVAR_$_MySecretNamespace.Message.MyIVAR" ={{.*}} constant i64 068 69// CHECK: private unnamed_addr constant [42 x i8] c"T@\22MySecretNamespace.Message\22,&,V_msgProp\00"70// CHECK: private unnamed_addr constant [76 x i8] c"T@\22MySecretNamespace.Message<MySecretNamespace.Protocol3>\22,&,V_msgProtoProp\00"71// CHECK: private unnamed_addr constant [50 x i8] c"T@\22<MySecretNamespace.Protocol3>\22,&,V_idProtoProp\00"72 73// CHECK: @"OBJC_CLASS_$_foo" = external global %struct._class_t74// CHECK: define internal ptr @"\01-[Message MyMethod]"75// CHECK: [[IVAR:%.*]] = load ptr, ptr {{.*}}76