Skip to content

Commit 7299ac0

Browse files
committed
test darwin_objc inline cross-crate
1 parent c72abb7 commit 7299ac0

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#![crate_type = "lib"]
2+
#![feature(darwin_objc)]
3+
4+
use std::os::darwin::objc;
5+
6+
#[inline(always)]
7+
pub fn get_class() -> objc::Class {
8+
objc::class!("MyClass")
9+
}
10+
11+
#[inline(always)]
12+
pub fn get_selector() -> objc::SEL {
13+
objc::selector!("myMethod")
14+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// ignore-tidy-linelength
2+
//@ aux-build: darwin_objc_inline_aux.rs
3+
//@ revisions: x86_64_macos aarch64_macos
4+
//@ [x86_64_macos] only-x86_64-apple-darwin
5+
//@ [aarch64_macos] only-aarch64-apple-darwin
6+
7+
#![crate_type = "lib"]
8+
#![feature(darwin_objc)]
9+
10+
use std::os::darwin::objc;
11+
12+
extern crate darwin_objc_inline_aux as aux;
13+
14+
#[no_mangle]
15+
pub fn get_class() -> objc::Class {
16+
aux::get_class()
17+
}
18+
19+
#[no_mangle]
20+
pub fn get_selector() -> objc::SEL {
21+
aux::get_selector()
22+
}
23+
24+
// CHECK: %struct._class_t = type { ptr, ptr, ptr, ptr, ptr }
25+
26+
// CHECK: @"OBJC_CLASS_$_MyClass" = external global %struct._class_t
27+
// CHECK: @"OBJC_CLASSLIST_REFERENCES_$_.{{[0-9]+}}" = internal global ptr @"OBJC_CLASS_$_MyClass", section "__DATA,__objc_classrefs,regular,no_dead_strip", align 8
28+
29+
// CHECK: @OBJC_METH_VAR_NAME_.{{[0-9]+}} = private unnamed_addr constant [9 x i8] c"myMethod\00", section "__TEXT,__objc_methname,cstring_literals", align 1
30+
// CHECK: @OBJC_SELECTOR_REFERENCES_.{{[0-9]+}} = internal externally_initialized global ptr @OBJC_METH_VAR_NAME_.{{[0-9]+}}, section "__DATA,__objc_selrefs,literal_pointers,no_dead_strip", align 8
31+
32+
// CHECK: load ptr, ptr @"OBJC_CLASSLIST_REFERENCES_$_.{{[0-9]+}}", align 8
33+
// CHECK: load ptr, ptr @OBJC_SELECTOR_REFERENCES_.{{[0-9]+}}, align 8
34+
35+
// CHECK: !{{[0-9]+}} = !{i32 1, !"Objective-C Version", i32 2}
36+
// CHECK: !{{[0-9]+}} = !{i32 1, !"Objective-C Image Info Version", i32 0}
37+
// CHECK: !{{[0-9]+}} = !{i32 1, !"Objective-C Image Info Section", !"__DATA,__objc_imageinfo,regular,no_dead_strip"}
38+
// CHECK-NOT: !{{[0-9]+}} = !{i32 1, !"Objective-C Is Simulated", i32 32}
39+
// CHECK: !{{[0-9]+}} = !{i32 1, !"Objective-C Class Properties", i32 64}

0 commit comments

Comments
 (0)