]> git.lizzy.rs Git - rust.git/blob - src/test/compile-fail/issue-7013.rs
auto merge of #13049 : alexcrichton/rust/io-fill, r=huonw
[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::rc::Rc;
12 use std::cell::RefCell;
13
14 trait Foo
15 {
16     fn set(&mut self, v: Rc<RefCell<A>>);
17 }
18
19 struct B
20 {
21     v: Option<Rc<RefCell<A>>>
22 }
23
24 impl Foo for B
25 {
26     fn set(&mut self, v: Rc<RefCell<A>>)
27     {
28         self.v = Some(v);
29     }
30 }
31
32 struct A
33 {
34     v: ~Foo,
35 }
36
37 fn main()
38 {
39     let a = A {v: ~B{v: None} as ~Foo};
40     //~^ ERROR cannot pack type `~B`, which does not fulfill `Send`
41     let v = Rc::new(RefCell::new(a));
42     let w = v.clone();
43     let b = &*v;
44     let mut b = b.borrow_mut();
45     b.v.set(w.clone());
46 }