blob: b9a2fc3634f46efb987126cd572c3939a9ba866b [file] [log] [blame]
// Call `[NSObject class]` using `objc::class!` and `objc::selector!`.
//@ edition: 2024
//@ only-apple
//@ run-pass
#![feature(darwin_objc)]
use std::mem::transmute;
use std::os::darwin::objc;
#[link(name = "Foundation", kind = "framework")]
unsafe extern "C" {}
#[link(name = "objc", kind = "dylib")]
unsafe extern "C" {
unsafe fn objc_msgSend();
}
fn main() {
let msg_send_fn = unsafe {
transmute::<
unsafe extern "C" fn(),
unsafe extern "C" fn(objc::Class, objc::SEL) -> objc::Class,
>(objc_msgSend)
};
let static_sel = objc::selector!("class");
let static_class = objc::class!("NSObject");
let runtime_class = unsafe { msg_send_fn(static_class, static_sel) };
assert_eq!(static_class, runtime_class);
}