diff options
Diffstat (limited to 'tests/cfg.rs')
-rw-r--r-- | tests/cfg.rs | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/tests/cfg.rs b/tests/cfg.rs index 4133517..9fde697 100644 --- a/tests/cfg.rs +++ b/tests/cfg.rs @@ -1,20 +1,20 @@ #![warn(rust_2018_idioms, single_use_lifetimes)] #![allow(dead_code)] -// Refs: https://doc.rust-lang.org/nightly/reference/attributes.html +// Refs: https://doc.rust-lang.org/reference/attributes.html + +#[macro_use] +mod auxiliary; use pin_project::pin_project; use std::{marker::PhantomPinned, pin::Pin}; -fn is_unpin<T: Unpin>() {} - #[cfg(target_os = "linux")] struct Linux; #[cfg(not(target_os = "linux"))] struct Other; // Use this type to check that `cfg(any())` is working properly. -// If `cfg(any())` is not working properly, `is_unpin` will fail. struct Any(PhantomPinned); #[test] @@ -34,7 +34,7 @@ fn cfg() { any: Any, } - is_unpin::<SameName>(); + assert_unpin!(SameName); #[cfg(target_os = "linux")] let _x = SameName { inner: Linux }; @@ -54,7 +54,7 @@ fn cfg() { a: Any, } - is_unpin::<DifferentName>(); + assert_unpin!(DifferentName); #[cfg(target_os = "linux")] let _x = DifferentName { l: Linux }; @@ -74,7 +74,7 @@ fn cfg() { Any, ); - is_unpin::<TupleStruct>(); + assert_unpin!(TupleStruct); #[cfg(target_os = "linux")] let _x = TupleStruct(Linux); @@ -83,7 +83,11 @@ fn cfg() { // enums - #[pin_project(project_replace)] + #[pin_project( + project = VariantProj, + project_ref = VariantProjRef, + project_replace = VariantProjOwn, + )] enum Variant { #[cfg(target_os = "linux")] Inner(#[pin] Linux), @@ -98,7 +102,7 @@ fn cfg() { Any(#[pin] Any), } - is_unpin::<Variant>(); + assert_unpin!(Variant); #[cfg(target_os = "linux")] let _x = Variant::Inner(Linux); @@ -110,7 +114,11 @@ fn cfg() { #[cfg(not(target_os = "linux"))] let _x = Variant::Other(Other); - #[pin_project(project_replace)] + #[pin_project( + project = FieldProj, + project_ref = FieldProjRef, + project_replace = FieldProjOwn, + )] enum Field { SameName { #[cfg(target_os = "linux")] @@ -147,7 +155,7 @@ fn cfg() { ), } - is_unpin::<Field>(); + assert_unpin!(Field); #[cfg(target_os = "linux")] let _x = Field::SameName { inner: Linux }; @@ -180,7 +188,7 @@ fn cfg_attr() { any: Any, } - is_unpin::<SameCfg>(); + assert_unpin!(SameCfg); #[cfg(target_os = "linux")] let mut x = SameCfg { inner: Linux }; @@ -206,7 +214,7 @@ fn cfg_attr() { any: Any, } - is_unpin::<DifferentCfg>(); + assert_unpin!(DifferentCfg); #[cfg(target_os = "linux")] let mut x = DifferentCfg { inner: Linux }; @@ -225,6 +233,9 @@ fn cfg_attr() { inner: T, } + assert_unpin!(Foo<()>); + assert_not_unpin!(Foo<PhantomPinned>); + let mut x = Foo { inner: 0_u8 }; let x = Pin::new(&mut x).project(); let _: Pin<&mut u8> = x.inner; @@ -237,6 +248,6 @@ fn cfg_attr_any_packed() { #[cfg_attr(any(), repr(packed))] struct Struct { #[pin] - field: u32, + f: u32, } } |