aboutsummaryrefslogtreecommitdiff
path: root/tests/cfg.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/cfg.rs')
-rw-r--r--tests/cfg.rs39
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,
}
}