]> git.lizzy.rs Git - rust.git/blob - src/test/compile-fail/issue-7013.rs
1bc4e0765532381e03c82576d76b7eb7f8f32b78
[rust.git] / src / test / compile-fail / issue-7013.rs
1 // Copyright 2013 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
4 //
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
10
11 use std::cell::RefCell;
12 use std::rc::Rc;
13
14 trait Foo {
15     fn set(&mut self, v: Rc<RefCell<A>>);
16 }
17
18 struct B {
19     v: Option<Rc<RefCell<A>>>
20 }
21
22 impl Foo for B {
23     fn set(&mut self, v: Rc<RefCell<A>>)
24     {
25         self.v = Some(v);
26     }
27 }
28
29 struct A {
30     v: Box<Foo:Send>,
31 }
32
33 fn main() {
34     let a = A {v: box B{v: None} as Box<Foo:Send>};
35     //~^ ERROR cannot pack type `~B`, which does not fulfill `Send`
36     let v = Rc::new(RefCell::new(a));
37     let w = v.clone();
38     let b = &*v;
39     let mut b = b.borrow_mut();
40     b.v.set(w.clone());
41 }