summaryrefslogtreecommitdiffstats
path: root/tests/ui-fulldeps/deriving-encodable-decodable-cell-refcell.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui-fulldeps/deriving-encodable-decodable-cell-refcell.rs')
-rw-r--r--tests/ui-fulldeps/deriving-encodable-decodable-cell-refcell.rs44
1 files changed, 0 insertions, 44 deletions
diff --git a/tests/ui-fulldeps/deriving-encodable-decodable-cell-refcell.rs b/tests/ui-fulldeps/deriving-encodable-decodable-cell-refcell.rs
deleted file mode 100644
index 844d40f2e..000000000
--- a/tests/ui-fulldeps/deriving-encodable-decodable-cell-refcell.rs
+++ /dev/null
@@ -1,44 +0,0 @@
-// run-pass
-
-#![allow(unused_imports)]
-// This briefly tests the capability of `Cell` and `RefCell` to implement the
-// `Encodable` and `Decodable` traits via `#[derive(Encodable, Decodable)]`
-#![feature(rustc_private)]
-
-extern crate rustc_macros;
-extern crate rustc_serialize;
-
-// Necessary to pull in object code as the rest of the rustc crates are shipped only as rmeta
-// files.
-#[allow(unused_extern_crates)]
-extern crate rustc_driver;
-
-use rustc_macros::{Decodable, Encodable};
-use rustc_serialize::opaque::{MemDecoder, MemEncoder};
-use rustc_serialize::{Decodable, Encodable, Encoder};
-use std::cell::{Cell, RefCell};
-
-#[derive(Encodable, Decodable)]
-struct A {
- baz: isize,
-}
-
-#[derive(Encodable, Decodable)]
-struct B {
- foo: Cell<bool>,
- bar: RefCell<A>,
-}
-
-fn main() {
- let obj = B { foo: Cell::new(true), bar: RefCell::new(A { baz: 2 }) };
-
- let mut encoder = MemEncoder::new();
- obj.encode(&mut encoder);
- let data = encoder.finish();
-
- let mut decoder = MemDecoder::new(&data, 0);
- let obj2 = B::decode(&mut decoder);
-
- assert_eq!(obj.foo.get(), obj2.foo.get());
- assert_eq!(obj.bar.borrow().baz, obj2.bar.borrow().baz);
-}