| // RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin %s -o - | FileCheck %s |
| // rdar://16462586 |
| |
| __attribute__((objc_runtime_name("MySecretNamespace.Protocol"))) |
| @protocol Protocol |
| - (void) MethodP; |
| + (void) ClsMethodP; |
| @end |
| |
| __attribute__((objc_runtime_name("MySecretNamespace.Protocol2"))) |
| @protocol Protocol2 |
| - (void) MethodP2; |
| + (void) ClsMethodP2; |
| @end |
| |
| __attribute__((objc_runtime_name("MySecretNamespace.Message"))) |
| @interface Message <Protocol, Protocol2> { |
| id MyIVAR; |
| } |
| @end |
| |
| @implementation Message |
| - (id) MyMethod { |
| return MyIVAR; |
| } |
| |
| + (id) MyClsMethod { |
| return 0; |
| } |
| |
| - (void) MethodP{} |
| - (void) MethodP2{} |
| |
| + (void) ClsMethodP {} |
| + (void) ClsMethodP2 {} |
| @end |
| |
| // rdar://16877359 |
| __attribute__((objc_runtime_name("foo"))) |
| @interface SLREarth |
| - (instancetype)init; |
| + (instancetype)alloc; |
| @end |
| |
| id Test16877359() { |
| return [SLREarth alloc]; |
| } |
| |
| // CHECK: @"OBJC_IVAR_$_MySecretNamespace.Message.MyIVAR" = global i64 |
| // CHECK: @"OBJC_CLASS_$_MySecretNamespace.Message" = global %struct._class_t |
| // CHECK: @"OBJC_METACLASS_$_MySecretNamespace.Message" = global %struct._class_t |
| // CHECK: @"OBJC_CLASS_$_foo" = external global %struct._class_t |
| // CHECK: define internal i8* @"\01-[Message MyMethod]" |
| // CHECK: [[IVAR:%.*]] = load i64, i64* @"OBJC_IVAR_$_MySecretNamespace.Message.MyIVAR" |