| // Test that `objc::selector!` returns the same thing as `sel_registerName`. |
| |
| //@ edition: 2024 |
| //@ only-apple |
| //@ run-pass |
| |
| #![feature(darwin_objc)] |
| |
| use std::ffi::c_char; |
| use std::os::darwin::objc; |
| |
| #[link(name = "objc")] |
| unsafe extern "C" { |
| fn sel_registerName(methname: *const c_char) -> objc::SEL; |
| } |
| |
| fn get_alloc_selector() -> objc::SEL { |
| objc::selector!("alloc") |
| } |
| |
| fn register_alloc_selector() -> objc::SEL { |
| unsafe { sel_registerName(c"alloc".as_ptr()) } |
| } |
| |
| fn get_init_selector() -> objc::SEL { |
| objc::selector!("initWithCString:encoding:") |
| } |
| |
| fn register_init_selector() -> objc::SEL { |
| unsafe { sel_registerName(c"initWithCString:encoding:".as_ptr()) } |
| } |
| |
| fn main() { |
| assert_eq!(get_alloc_selector(), register_alloc_selector()); |
| assert_eq!(get_init_selector(), register_init_selector()); |
| } |