aboutsummaryrefslogtreecommitdiff
path: root/tests/ui/cfg/proper_unpin.rs
blob: b7bb04de802e51329bee639a3e3210f73cff52a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
use pin_project::pin_project;
use std::marker::PhantomPinned;

#[pin_project]
struct Foo<T> {
    #[cfg(any())]
    #[pin]
    inner: T,
    #[cfg(not(any()))]
    inner: T,
}

#[pin_project]
struct Bar<T> {
    #[cfg(any())]
    inner: T,
    #[cfg(not(any()))]
    #[pin]
    inner: T,
}

fn is_unpin<T: Unpin>() {}

fn main() {
    is_unpin::<Foo<PhantomPinned>>(); // Ok
    is_unpin::<Bar<()>>(); // Ok
    is_unpin::<Bar<PhantomPinned>>(); //~ ERROR E0277
}