about summary refs log tree commit diff
path: root/tests/ui/darwin-objc/darwin-objc-class.rs
diff options
context:
space:
mode:
authorJo Bates <29763794+jbatez@users.noreply.github.com>2025-06-04 19:49:13 -0700
committerJo Bates <29763794+jbatez@users.noreply.github.com>2025-09-13 16:06:22 -0700
commit1ebf69d1b1a94e99c01680514571c41d0b864c15 (patch)
treee2676d6c42b09f85f30f57f8447f0f862d1daa33 /tests/ui/darwin-objc/darwin-objc-class.rs
parent02c7b1a7ac1d739663878030510508372e46f254 (diff)
downloadrust-1ebf69d1b1a94e99c01680514571c41d0b864c15.tar.gz
rust-1ebf69d1b1a94e99c01680514571c41d0b864c15.zip
initial implementation of the darwin_objc unstable feature
Diffstat (limited to 'tests/ui/darwin-objc/darwin-objc-class.rs')
-rw-r--r--tests/ui/darwin-objc/darwin-objc-class.rs39
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/ui/darwin-objc/darwin-objc-class.rs b/tests/ui/darwin-objc/darwin-objc-class.rs
new file mode 100644
index 00000000000..851149d8726
--- /dev/null
+++ b/tests/ui/darwin-objc/darwin-objc-class.rs
@@ -0,0 +1,39 @@
+// Test that `objc::class!` returns the same thing as `objc_lookUpClass`.
+
+//@ edition: 2024
+//@ only-apple
+//@ run-pass
+
+#![feature(darwin_objc)]
+
+use std::ffi::c_char;
+use std::os::darwin::objc;
+
+#[link(name = "Foundation", kind = "framework")]
+unsafe extern "C" {}
+
+#[link(name = "objc")]
+unsafe extern "C" {
+    fn objc_lookUpClass(methname: *const c_char) -> objc::Class;
+}
+
+fn get_object_class() -> objc::Class {
+    objc::class!("NSObject")
+}
+
+fn lookup_object_class() -> objc::Class {
+    unsafe { objc_lookUpClass(c"NSObject".as_ptr()) }
+}
+
+fn get_string_class() -> objc::Class {
+    objc::class!("NSString")
+}
+
+fn lookup_string_class() -> objc::Class {
+    unsafe { objc_lookUpClass(c"NSString".as_ptr()) }
+}
+
+fn main() {
+    assert_eq!(get_object_class(), lookup_object_class());
+    assert_eq!(get_string_class(), lookup_string_class());
+}