//@ run-pass
#![allow(unused_must_use)]
#![allow(dead_code)]
#![allow(non_camel_case_types)]

//@ pretty-expanded FIXME #23616
//@ needs-threads

use std::sync::mpsc::channel;
use std::thread;

struct test {
    f: isize,
}

impl Drop for test {
    fn drop(&mut self) {}
}

fn test(f: isize) -> test {
    test { f: f }
}

pub fn main() {
    let (tx, rx) = channel();

    let t = thread::spawn(move || {
        let (tx2, rx2) = channel();
        tx.send(tx2).unwrap();

        let _r = rx2.recv().unwrap();
    });

    rx.recv().unwrap().send(test(42)).unwrap();

    t.join();
}
