2022-07-24 10:34:35 +00:00
|
|
|
//@ check-pass
|
|
|
|
|
|
|
|
|
|
#![feature(type_alias_impl_trait)]
|
|
|
|
|
|
|
|
|
|
struct Outer<T: ?Sized> {
|
|
|
|
|
i: InnerSend<T>,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type InnerSend<T: ?Sized> = impl Send;
|
|
|
|
|
|
2024-07-26 10:04:02 +00:00
|
|
|
#[define_opaque(InnerSend)]
|
2022-07-24 10:34:35 +00:00
|
|
|
fn constrain<T: ?Sized>() -> InnerSend<T> {
|
|
|
|
|
()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
trait SendMustNotImplDrop {}
|
|
|
|
|
|
|
|
|
|
#[allow(drop_bounds)]
|
|
|
|
|
impl<T: ?Sized + Send + Drop> SendMustNotImplDrop for T {}
|
|
|
|
|
|
|
|
|
|
impl<T: ?Sized> SendMustNotImplDrop for Outer<T> {}
|
|
|
|
|
|
|
|
|
|
fn main() {}
|