//@ run-pass

#![allow(unused_assignments)]

// Test that duplicate auto trait bounds in trait objects don't create new types.
#[allow(unused_assignments)]
use std::marker::Send as SendAlias;

// A dummy trait for the non-auto trait.
trait Trait {}

// A dummy struct to implement `Trait` and `Send`.
struct Struct;

impl Trait for Struct {}

// These three functions should be equivalent.
fn takes_dyn_trait_send(_: Box<dyn Trait + Send>) {}
fn takes_dyn_trait_send_send(_: Box<dyn Trait + Send + Send>) {}
fn takes_dyn_trait_send_sendalias(_: Box<dyn Trait + Send + SendAlias>) {}

impl dyn Trait + Send + Send {
    fn do_nothing(&self) {}
}

fn main() {
    // 1. Moving into a variable with more `Send`s and back.
    let mut dyn_trait_send = Box::new(Struct) as Box<dyn Trait + Send>;
    let dyn_trait_send_send: Box<dyn Trait + Send + Send> = dyn_trait_send;
    dyn_trait_send = dyn_trait_send_send;

    // 2. Calling methods with different number of `Send`s.
    let dyn_trait_send = Box::new(Struct) as Box<dyn Trait + Send>;
    takes_dyn_trait_send_send(dyn_trait_send);

    let dyn_trait_send_send = Box::new(Struct) as Box<dyn Trait + Send + Send>;
    takes_dyn_trait_send(dyn_trait_send_send);

    // 3. Aliases to the trait are transparent.
    let dyn_trait_send = Box::new(Struct) as Box<dyn Trait + Send>;
    takes_dyn_trait_send_sendalias(dyn_trait_send);

    // 4. Calling an impl that duplicates an auto trait.
    let dyn_trait_send = Box::new(Struct) as Box<dyn Trait + Send>;
    dyn_trait_send.do_nothing();
}
