// check-pass

#![feature(type_alias_impl_trait)]

struct Outer<T: ?Sized> {
    i: InnerSend<T>,
}

type InnerSend<T: ?Sized> = impl Send;

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() {}