Source code

Revision control

Copy as Markdown

Other Tools

use objc2::{extern_class, ClassType};
use objc2_foundation::NSObject;
use static_assertions::assert_impl_all;
#[test]
fn allow_deprecated() {
#![deny(deprecated)]
// Test allow propagates to impls
extern_class!(
#[unsafe(super(NSObject))]
#[deprecated]
#[allow(deprecated)]
struct AllowDeprecated;
);
}
#[test]
fn cfg() {
// Test `cfg`. We use `debug_assertions` here because it's something that we
// know our CI already tests.
extern_class!(
#[unsafe(super(NSObject))]
#[cfg(debug_assertions)]
#[name = "NSObject"]
struct OnlyOnDebugAssertions;
);
#[cfg(debug_assertions)]
let _ = OnlyOnDebugAssertions::class();
extern_class!(
#[unsafe(super(NSObject))]
#[cfg(not(debug_assertions))]
#[name = "NSObject"]
struct NeverOnDebugAssertions;
);
#[cfg(not(debug_assertions))]
let _ = NeverOnDebugAssertions::class();
}
#[test]
fn derive() {
extern_class!(
#[rustfmt::skip]
#[unsafe(super(NSObject))]
#[derive(PartialEq)]
#[derive()]
#[derive(Eq,)]
#[derive()]
#[derive(Debug, Hash,)]
struct Derive;
);
assert_impl_all!(Derive: PartialEq, Eq, core::hash::Hash, core::fmt::Debug);
}