use std::marker::PhantomPinned;
use impls::impls;
use name_it::name_it;
struct NotSend(*const ());
unsafe impl Sync for NotSend {}
struct NotSync(*const ());
unsafe impl Send for NotSync {}
#[name_it(OnlySend)]
async fn only_send(x: NotSync, y: PhantomPinned) -> (NotSync, PhantomPinned) {
(x, y)
}
#[name_it(OnlySync)]
async fn only_sync(x: NotSend, y: PhantomPinned) -> (NotSend, PhantomPinned) {
(x, y)
}
#[name_it(Simple)]
async fn simple() {}
#[test]
fn impls_are_correct() {
assert!(impls!(OnlySend: Send & !Sync & !Unpin));
assert!(impls!(OnlySync: !Send & Sync & !Unpin));
assert!(impls!(Simple: Send & Sync & !Unpin));
}