From 438893b36fe241b37eb76250f7c38ac8832f5706 Mon Sep 17 00:00:00 2001 From: Michael Darakananda Date: Wed, 5 Mar 2014 01:19:14 -0500 Subject: [PATCH] Removed DeepClone. Issue #12698. --- src/libstd/cell.rs | 9 +- src/libstd/clone.rs | 100 ------------------ src/libstd/gc.rs | 23 +--- src/libstd/iter.rs | 12 +-- src/libstd/num/mod.rs | 3 +- src/libstd/option.rs | 7 +- src/libstd/path/posix.rs | 2 +- src/libstd/path/windows.rs | 4 +- src/libstd/prelude.rs | 2 +- src/libstd/rc.rs | 19 +--- src/libstd/result.rs | 2 +- src/libstd/str.rs | 26 +---- src/libstd/vec.rs | 20 +--- src/libsyntax/ext/deriving/clone.rs | 30 ------ src/libsyntax/ext/deriving/mod.rs | 1 - src/libtime/lib.rs | 4 +- ...ving-span-DeepClone-enum-struct-variant.rs | 26 ----- .../deriving-span-DeepClone-enum.rs | 26 ----- .../deriving-span-DeepClone-struct.rs | 24 ----- .../deriving-span-DeepClone-tuple-struct.rs | 24 ----- src/test/run-pass/deriving-clone-enum.rs | 3 +- .../run-pass/deriving-clone-generic-enum.rs | 3 +- .../run-pass/deriving-clone-generic-struct.rs | 4 +- .../deriving-clone-generic-tuple-struct.rs | 4 +- src/test/run-pass/deriving-clone-struct.rs | 2 +- src/test/run-pass/deriving-global.rs | 6 +- src/test/run-pass/send_str_hashmap.rs | 9 +- src/test/run-pass/send_str_treemap.rs | 8 +- 28 files changed, 36 insertions(+), 367 deletions(-) delete mode 100644 src/test/compile-fail/deriving-span-DeepClone-enum-struct-variant.rs delete mode 100644 src/test/compile-fail/deriving-span-DeepClone-enum.rs delete mode 100644 src/test/compile-fail/deriving-span-DeepClone-struct.rs delete mode 100644 src/test/compile-fail/deriving-span-DeepClone-tuple-struct.rs diff --git a/src/libstd/cell.rs b/src/libstd/cell.rs index f4b530644a757..398091b60cae3 100644 --- a/src/libstd/cell.rs +++ b/src/libstd/cell.rs @@ -11,7 +11,7 @@ //! Types dealing with dynamic mutability use cast; -use clone::{Clone, DeepClone}; +use clone::Clone; use cmp::Eq; use fmt; use kinds::{marker, Pod}; @@ -222,13 +222,6 @@ impl Clone for RefCell { } } -impl DeepClone for RefCell { - fn deep_clone(&self) -> RefCell { - let x = self.borrow(); - RefCell::new(x.get().deep_clone()) - } -} - impl Eq for RefCell { fn eq(&self, other: &RefCell) -> bool { let a = self.borrow(); diff --git a/src/libstd/clone.rs b/src/libstd/clone.rs index e5e79b4386a56..ce5f056622f36 100644 --- a/src/libstd/clone.rs +++ b/src/libstd/clone.rs @@ -21,8 +21,6 @@ the `clone` method. */ -use std::kinds::Freeze; - /// A common trait for cloning an object. pub trait Clone { /// Returns a copy of the value. The contents of owned pointers @@ -125,92 +123,6 @@ extern_fn_clone!(A, B, C, D, E, F) extern_fn_clone!(A, B, C, D, E, F, G) extern_fn_clone!(A, B, C, D, E, F, G, H) -/// A trait distinct from `Clone` which represents "deep copies" of things like -/// managed boxes which would otherwise not be copied. -pub trait DeepClone: Clone { - /// Return a deep copy of the value. Unlike `Clone`, the contents of shared pointer types - /// *are* copied. - fn deep_clone(&self) -> Self; - - /// Perform deep copy-assignment from `source`. - /// - /// `a.deep_clone_from(&b)` is equivalent to `a = b.deep_clone()` in - /// functionality, but can be overridden to reuse the resources of `a` to - /// avoid unnecessary allocations. - #[inline(always)] - fn deep_clone_from(&mut self, source: &Self) { - *self = source.deep_clone() - } -} - -impl DeepClone for ~T { - /// Return a deep copy of the owned box. - #[inline] - fn deep_clone(&self) -> ~T { ~(**self).deep_clone() } - - /// Perform deep copy-assignment from `source` by reusing the existing allocation. - fn deep_clone_from(&mut self, source: &~T) { - **self = (**source).deep_clone() - } -} - -// FIXME: #6525: should also be implemented for `T: Send + DeepClone` -impl DeepClone for @T { - /// Return a deep copy of the managed box. The `Freeze` trait is required to prevent performing - /// a deep clone of a potentially cyclical type. - #[inline] - fn deep_clone(&self) -> @T { @(**self).deep_clone() } -} - -macro_rules! deep_clone_impl( - ($t:ty) => { - impl DeepClone for $t { - /// Return a deep copy of the value. - #[inline] - fn deep_clone(&self) -> $t { *self } - } - } -) - -deep_clone_impl!(int) -deep_clone_impl!(i8) -deep_clone_impl!(i16) -deep_clone_impl!(i32) -deep_clone_impl!(i64) - -deep_clone_impl!(uint) -deep_clone_impl!(u8) -deep_clone_impl!(u16) -deep_clone_impl!(u32) -deep_clone_impl!(u64) - -deep_clone_impl!(f32) -deep_clone_impl!(f64) - -deep_clone_impl!(()) -deep_clone_impl!(bool) -deep_clone_impl!(char) - -macro_rules! extern_fn_deep_clone( - ($($A:ident),*) => ( - impl<$($A,)* ReturnType> DeepClone for extern "Rust" fn($($A),*) -> ReturnType { - /// Return a copy of a function pointer - #[inline] - fn deep_clone(&self) -> extern "Rust" fn($($A),*) -> ReturnType { *self } - } - ) -) - -extern_fn_deep_clone!() -extern_fn_deep_clone!(A) -extern_fn_deep_clone!(A, B) -extern_fn_deep_clone!(A, B, C) -extern_fn_deep_clone!(A, B, C, D) -extern_fn_deep_clone!(A, B, C, D, E) -extern_fn_deep_clone!(A, B, C, D, E, F) -extern_fn_deep_clone!(A, B, C, D, E, F, G) -extern_fn_deep_clone!(A, B, C, D, E, F, G, H) - #[test] fn test_owned_clone() { let a = ~5i; @@ -241,14 +153,6 @@ fn test_clone_from() { assert_eq!(*b, 5); } -#[test] -fn test_deep_clone_from() { - let a = ~5; - let mut b = ~10; - b.deep_clone_from(&a); - assert_eq!(*b, 5); -} - #[test] fn test_extern_fn_clone() { trait Empty {} @@ -261,8 +165,4 @@ fn test_extern_fn_clone() { let _ = test_fn_a.clone(); let _ = test_fn_b::.clone(); let _ = test_fn_c.clone(); - - let _ = test_fn_a.deep_clone(); - let _ = test_fn_b::.deep_clone(); - let _ = test_fn_c.deep_clone(); } diff --git a/src/libstd/gc.rs b/src/libstd/gc.rs index fa7c94ac9948a..907a2d21b695d 100644 --- a/src/libstd/gc.rs +++ b/src/libstd/gc.rs @@ -19,8 +19,7 @@ collector is task-local so `Gc` is not sendable. #[allow(experimental)]; use kinds::marker; -use kinds::Send; -use clone::{Clone, DeepClone}; +use clone::Clone; use managed; /// Immutable garbage-collected pointer type @@ -78,16 +77,6 @@ pub static GC: () = (); #[cfg(test)] pub static GC: () = (); -/// The `Send` bound restricts this to acyclic graphs where it is well-defined. -/// -/// A `Freeze` bound would also work, but `Send` *or* `Freeze` cannot be expressed. -impl DeepClone for Gc { - #[inline] - fn deep_clone(&self) -> Gc { - Gc::new(self.borrow().deep_clone()) - } -} - #[cfg(test)] mod tests { use prelude::*; @@ -104,16 +93,6 @@ mod tests { assert_eq!(y.borrow().with(|x| *x), 20); } - #[test] - fn test_deep_clone() { - let x = Gc::new(RefCell::new(5)); - let y = x.deep_clone(); - x.borrow().with_mut(|inner| { - *inner = 20; - }); - assert_eq!(y.borrow().with(|x| *x), 5); - } - #[test] fn test_simple() { let x = Gc::new(5); diff --git a/src/libstd/iter.rs b/src/libstd/iter.rs index 6bf3cdf52abac..11d7bc6c1bf89 100644 --- a/src/libstd/iter.rs +++ b/src/libstd/iter.rs @@ -1757,7 +1757,7 @@ impl<'a, /// An iterator that yields `None` forever after the underlying iterator /// yields `None` once. -#[deriving(Clone, DeepClone)] +#[deriving(Clone)] pub struct Fuse { priv iter: T, priv done: bool @@ -1946,7 +1946,7 @@ impl + Clone> Iterator for Counter { } /// An iterator over the range [start, stop) -#[deriving(Clone, DeepClone)] +#[deriving(Clone)] pub struct Range { priv state: A, priv stop: A, @@ -2020,7 +2020,7 @@ impl DoubleEndedIterator for Range { } /// An iterator over the range [start, stop] -#[deriving(Clone, DeepClone)] +#[deriving(Clone)] pub struct RangeInclusive { priv range: Range, priv done: bool @@ -2083,7 +2083,7 @@ impl + Int + Ord + Clone + ToPrimitive> DoubleEndedIterator } /// An iterator over the range [start, stop) by `step`. It handles overflow by stopping. -#[deriving(Clone, DeepClone)] +#[deriving(Clone)] pub struct RangeStep { priv state: A, priv stop: A, @@ -2115,7 +2115,7 @@ impl Iterator for RangeStep { } /// An iterator over the range [start, stop] by `step`. It handles overflow by stopping. -#[deriving(Clone, DeepClone)] +#[deriving(Clone)] pub struct RangeStepInclusive { priv state: A, priv stop: A, @@ -2150,7 +2150,7 @@ impl Iterator for RangeStepInclusive { } /// An iterator that repeats an element endlessly -#[deriving(Clone, DeepClone)] +#[deriving(Clone)] pub struct Repeat { priv element: A } diff --git a/src/libstd/num/mod.rs b/src/libstd/num/mod.rs index 2f377a52ef82a..f53c95de414a2 100644 --- a/src/libstd/num/mod.rs +++ b/src/libstd/num/mod.rs @@ -15,7 +15,7 @@ #[allow(missing_doc)]; -use clone::{Clone, DeepClone}; +use clone::Clone; use cmp::{Eq, Ord}; use kinds::Pod; use mem::size_of; @@ -247,7 +247,6 @@ pub trait Bitwise: Bounded /// may be useful for systems programming. pub trait Primitive: Pod + Clone - + DeepClone + Num + NumCast + Ord diff --git a/src/libstd/option.rs b/src/libstd/option.rs index 7997c5747b40e..86f8c143a9e99 100644 --- a/src/libstd/option.rs +++ b/src/libstd/option.rs @@ -39,8 +39,7 @@ use any::Any; use clone::Clone; -use clone::DeepClone; -use cmp::{Eq, TotalOrd}; +use cmp::{Eq, TotalEq, TotalOrd}; use default::Default; use iter::{Iterator, DoubleEndedIterator, FromIterator, ExactSize}; use kinds::Send; @@ -48,7 +47,7 @@ use mem; use vec; /// The option type -#[deriving(Clone, DeepClone, Eq, Ord, TotalEq, TotalOrd, Show)] +#[deriving(Clone, Eq, Ord, TotalEq, TotalOrd, Show)] pub enum Option { /// No value None, @@ -387,7 +386,7 @@ impl Default for Option { ///////////////////////////////////////////////////////////////////////////// /// An iterator that yields either one or zero elements -#[deriving(Clone, DeepClone)] +#[deriving(Clone)] pub struct Item { priv opt: Option } diff --git a/src/libstd/path/posix.rs b/src/libstd/path/posix.rs index 321186e4808c0..a3380b5db1d2b 100644 --- a/src/libstd/path/posix.rs +++ b/src/libstd/path/posix.rs @@ -38,7 +38,7 @@ pub type RevStrComponents<'a> = Map<'a, &'a [u8], Option<&'a str>, RevComponents<'a>>; /// Represents a POSIX file path -#[deriving(Clone, DeepClone)] +#[deriving(Clone)] pub struct Path { priv repr: ~[u8], // assumed to never be empty or contain NULs priv sepidx: Option // index of the final separator in repr diff --git a/src/libstd/path/windows.rs b/src/libstd/path/windows.rs index 90f7890f9ea24..5b358819e4168 100644 --- a/src/libstd/path/windows.rs +++ b/src/libstd/path/windows.rs @@ -79,7 +79,7 @@ pub type RevComponents<'a> = Map<'a, Option<&'a str>, &'a [u8], // // The only error condition imposed here is valid utf-8. All other invalid paths are simply // preserved by the data structure; let the Windows API error out on them. -#[deriving(Clone, DeepClone)] +#[deriving(Clone)] pub struct Path { priv repr: ~str, // assumed to never be empty priv prefix: Option, @@ -942,7 +942,7 @@ pub fn is_sep_byte_verbatim(u: &u8) -> bool { } /// Prefix types for Path -#[deriving(Eq, Clone, DeepClone)] +#[deriving(Eq, Clone)] pub enum PathPrefix { /// Prefix `\\?\`, uint is the length of the following component VerbatimPrefix(uint), diff --git a/src/libstd/prelude.rs b/src/libstd/prelude.rs index c1cd3a6d79fc1..b30c78e7962b9 100644 --- a/src/libstd/prelude.rs +++ b/src/libstd/prelude.rs @@ -38,7 +38,7 @@ pub use mem::drop; pub use ascii::{Ascii, AsciiCast, OwnedAsciiCast, AsciiStr, IntoBytes}; pub use c_str::ToCStr; pub use char::Char; -pub use clone::{Clone, DeepClone}; +pub use clone::Clone; pub use cmp::{Eq, Ord, TotalEq, TotalOrd, Ordering, Less, Equal, Greater, Equiv}; pub use container::{Container, Mutable, Map, MutableMap, Set, MutableSet}; pub use iter::{FromIterator, Extendable}; diff --git a/src/libstd/rc.rs b/src/libstd/rc.rs index 5daf6e797beb0..8a7edc728c012 100644 --- a/src/libstd/rc.rs +++ b/src/libstd/rc.rs @@ -24,7 +24,7 @@ pointers, and then storing the parent pointers as `Weak` pointers. */ use cast::transmute; -use clone::{Clone, DeepClone}; +use clone::Clone; use cmp::{Eq, Ord}; use kinds::marker; use ops::{Deref, Drop}; @@ -118,13 +118,6 @@ impl Clone for Rc { } } -impl DeepClone for Rc { - #[inline] - fn deep_clone(&self) -> Rc { - Rc::new(self.borrow().deep_clone()) - } -} - impl Eq for Rc { #[inline(always)] fn eq(&self, other: &Rc) -> bool { *self.borrow() == *other.borrow() } @@ -210,16 +203,6 @@ mod tests { assert_eq!(y.borrow().with(|v| *v), 20); } - #[test] - fn test_deep_clone() { - let x = Rc::new(RefCell::new(5)); - let y = x.deep_clone(); - x.borrow().with_mut(|inner| { - *inner = 20; - }); - assert_eq!(y.borrow().with(|v| *v), 5); - } - #[test] fn test_simple() { let x = Rc::new(5); diff --git a/src/libstd/result.rs b/src/libstd/result.rs index 3f09351ead66c..5c3a587d98950 100644 --- a/src/libstd/result.rs +++ b/src/libstd/result.rs @@ -16,7 +16,7 @@ use iter::{Iterator, FromIterator}; use option::{None, Option, Some}; /// `Result` is a type that represents either success (`Ok`) or failure (`Err`). -#[deriving(Clone, DeepClone, Eq, Ord, TotalEq, TotalOrd, Show)] +#[deriving(Clone, Eq, Ord, TotalEq, TotalOrd, Show)] #[must_use] pub enum Result { /// Contains the success value diff --git a/src/libstd/str.rs b/src/libstd/str.rs index 20aaafbe677e5..3464c4a1128e3 100644 --- a/src/libstd/str.rs +++ b/src/libstd/str.rs @@ -85,7 +85,7 @@ use cast; use cast::transmute; use char; use char::Char; -use clone::{Clone, DeepClone}; +use clone::Clone; use cmp::{Eq, TotalEq, Ord, TotalOrd, Equiv, Ordering}; use container::{Container, Mutable}; use fmt; @@ -1326,16 +1326,6 @@ impl<'a> Clone for MaybeOwned<'a> { } } -impl<'a> DeepClone for MaybeOwned<'a> { - #[inline] - fn deep_clone(&self) -> MaybeOwned<'a> { - match *self { - Slice(s) => Slice(s), - Owned(ref s) => Owned(s.to_owned()) - } - } -} - impl<'a> Default for MaybeOwned<'a> { #[inline] fn default() -> MaybeOwned<'a> { Slice("") } @@ -3031,13 +3021,6 @@ impl Clone for ~str { } } -impl DeepClone for ~str { - #[inline] - fn deep_clone(&self) -> ~str { - self.to_owned() - } -} - impl FromIterator for ~str { #[inline] fn from_iterator>(iterator: &mut T) -> ~str { @@ -4465,16 +4448,9 @@ mod tests { #[test] fn test_maybe_owned_clone() { assert_eq!(Owned(~"abcde"), Slice("abcde").clone()); - assert_eq!(Owned(~"abcde"), Slice("abcde").deep_clone()); - assert_eq!(Owned(~"abcde"), Owned(~"abcde").clone()); - assert_eq!(Owned(~"abcde"), Owned(~"abcde").deep_clone()); - assert_eq!(Slice("abcde"), Slice("abcde").clone()); - assert_eq!(Slice("abcde"), Slice("abcde").deep_clone()); - assert_eq!(Slice("abcde"), Owned(~"abcde").clone()); - assert_eq!(Slice("abcde"), Owned(~"abcde").deep_clone()); } #[test] diff --git a/src/libstd/vec.rs b/src/libstd/vec.rs index 69bf5f5d0fcda..8080f57550b3d 100644 --- a/src/libstd/vec.rs +++ b/src/libstd/vec.rs @@ -104,7 +104,7 @@ There are a number of free functions that create or take vectors, for example: use cast; use cast::transmute; use ops::Drop; -use clone::{Clone, DeepClone}; +use clone::Clone; use container::{Container, Mutable}; use cmp::{Eq, TotalOrd, Ordering, Less, Equal, Greater}; use cmp; @@ -2635,24 +2635,6 @@ impl Clone for ~[A] { } } -impl DeepClone for ~[A] { - #[inline] - fn deep_clone(&self) -> ~[A] { - self.iter().map(|item| item.deep_clone()).collect() - } - - fn deep_clone_from(&mut self, source: &~[A]) { - if self.len() < source.len() { - *self = source.deep_clone() - } else { - self.truncate(source.len()); - for (x, y) in self.mut_iter().zip(source.iter()) { - x.deep_clone_from(y); - } - } - } -} - impl<'a, T: fmt::Show> fmt::Show for &'a [T] { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { try!(write!(f.buf, "[")); diff --git a/src/libsyntax/ext/deriving/clone.rs b/src/libsyntax/ext/deriving/clone.rs index feda1694ff193..e63363c608bee 100644 --- a/src/libsyntax/ext/deriving/clone.rs +++ b/src/libsyntax/ext/deriving/clone.rs @@ -44,36 +44,6 @@ pub fn expand_deriving_clone(cx: &mut ExtCtxt, trait_def.expand(cx, mitem, item, push) } -pub fn expand_deriving_deep_clone(cx: &mut ExtCtxt, - span: Span, - mitem: @MetaItem, - item: @Item, - push: |@Item|) { - let trait_def = TraitDef { - span: span, - attributes: Vec::new(), - path: Path::new(vec!("std", "clone", "DeepClone")), - additional_bounds: Vec::new(), - generics: LifetimeBounds::empty(), - methods: vec!( - MethodDef { - name: "deep_clone", - generics: LifetimeBounds::empty(), - explicit_self: borrowed_explicit_self(), - args: Vec::new(), - ret_ty: Self, - inline: true, - const_nonmatching: false, - // cs_clone uses the ident passed to it, i.e. it will - // call deep_clone (not clone) here. - combine_substructure: |c, s, sub| cs_clone("DeepClone", c, s, sub) - } - ) - }; - - trait_def.expand(cx, mitem, item, push) -} - fn cs_clone( name: &str, cx: &mut ExtCtxt, trait_span: Span, diff --git a/src/libsyntax/ext/deriving/mod.rs b/src/libsyntax/ext/deriving/mod.rs index 28f039f081812..890cc75bb9508 100644 --- a/src/libsyntax/ext/deriving/mod.rs +++ b/src/libsyntax/ext/deriving/mod.rs @@ -70,7 +70,6 @@ pub fn expand_meta_deriving(cx: &mut ExtCtxt, |i| push(i)))); match tname.get() { "Clone" => expand!(clone::expand_deriving_clone), - "DeepClone" => expand!(clone::expand_deriving_deep_clone), "Hash" => expand!(hash::expand_deriving_hash), diff --git a/src/libtime/lib.rs b/src/libtime/lib.rs index fb09ee0923a4c..7ac338a92a4c0 100644 --- a/src/libtime/lib.rs +++ b/src/libtime/lib.rs @@ -64,7 +64,7 @@ mod imp { /// A record specifying a time value in seconds and nanoseconds. -#[deriving(Clone, DeepClone, Eq, Encodable, Decodable, Show)] +#[deriving(Clone, Eq, Encodable, Decodable, Show)] pub struct Timespec { sec: i64, nsec: i32 } /* * Timespec assumes that pre-epoch Timespecs have negative sec and positive @@ -191,7 +191,7 @@ pub fn tzset() { } } -#[deriving(Clone, DeepClone, Eq, Encodable, Decodable, Show)] +#[deriving(Clone, Eq, Encodable, Decodable, Show)] pub struct Tm { tm_sec: i32, // seconds after the minute ~[0-60] tm_min: i32, // minutes after the hour ~[0-59] diff --git a/src/test/compile-fail/deriving-span-DeepClone-enum-struct-variant.rs b/src/test/compile-fail/deriving-span-DeepClone-enum-struct-variant.rs deleted file mode 100644 index 7cee7b8ee0d0a..0000000000000 --- a/src/test/compile-fail/deriving-span-DeepClone-enum-struct-variant.rs +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2014 The Rust Project Developers. See the COPYRIGHT -// file at the top-level directory of this distribution and at -// http://rust-lang.org/COPYRIGHT. -// -// Licensed under the Apache License, Version 2.0 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -// This file was auto-generated using 'src/etc/generate-keyword-span-tests.py' - -#[feature(struct_variant)]; -extern crate extra; - -#[deriving(Clone)] -struct Error; - -#[deriving(DeepClone,Clone)] -enum Enum { - A { - x: Error //~ ERROR - } -} - -fn main() {} diff --git a/src/test/compile-fail/deriving-span-DeepClone-enum.rs b/src/test/compile-fail/deriving-span-DeepClone-enum.rs deleted file mode 100644 index c18ebe1758d3e..0000000000000 --- a/src/test/compile-fail/deriving-span-DeepClone-enum.rs +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2014 The Rust Project Developers. See the COPYRIGHT -// file at the top-level directory of this distribution and at -// http://rust-lang.org/COPYRIGHT. -// -// Licensed under the Apache License, Version 2.0 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -// This file was auto-generated using 'src/etc/generate-keyword-span-tests.py' - -#[feature(struct_variant)]; -extern crate extra; - -#[deriving(Clone)] -struct Error; - -#[deriving(DeepClone,Clone)] -enum Enum { - A( - Error //~ ERROR - ) -} - -fn main() {} diff --git a/src/test/compile-fail/deriving-span-DeepClone-struct.rs b/src/test/compile-fail/deriving-span-DeepClone-struct.rs deleted file mode 100644 index 7d33cd1a28df1..0000000000000 --- a/src/test/compile-fail/deriving-span-DeepClone-struct.rs +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2014 The Rust Project Developers. See the COPYRIGHT -// file at the top-level directory of this distribution and at -// http://rust-lang.org/COPYRIGHT. -// -// Licensed under the Apache License, Version 2.0 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -// This file was auto-generated using 'src/etc/generate-keyword-span-tests.py' - -#[feature(struct_variant)]; -extern crate extra; - -#[deriving(Clone)] -struct Error; - -#[deriving(DeepClone,Clone)] -struct Struct { - x: Error //~ ERROR -} - -fn main() {} diff --git a/src/test/compile-fail/deriving-span-DeepClone-tuple-struct.rs b/src/test/compile-fail/deriving-span-DeepClone-tuple-struct.rs deleted file mode 100644 index 42dd608f61781..0000000000000 --- a/src/test/compile-fail/deriving-span-DeepClone-tuple-struct.rs +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2014 The Rust Project Developers. See the COPYRIGHT -// file at the top-level directory of this distribution and at -// http://rust-lang.org/COPYRIGHT. -// -// Licensed under the Apache License, Version 2.0 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -// This file was auto-generated using 'src/etc/generate-keyword-span-tests.py' - -#[feature(struct_variant)]; -extern crate extra; - -#[deriving(Clone)] -struct Error; - -#[deriving(DeepClone,Clone)] -struct Struct( - Error //~ ERROR -); - -fn main() {} diff --git a/src/test/run-pass/deriving-clone-enum.rs b/src/test/run-pass/deriving-clone-enum.rs index 9ce965aa49f26..1cc20f4e3da0b 100644 --- a/src/test/run-pass/deriving-clone-enum.rs +++ b/src/test/run-pass/deriving-clone-enum.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#[deriving(Clone, DeepClone)] +#[deriving(Clone)] enum E { A, B(()), @@ -17,5 +17,4 @@ enum E { pub fn main() { let _ = A.clone(); - let _ = B(()).deep_clone(); } diff --git a/src/test/run-pass/deriving-clone-generic-enum.rs b/src/test/run-pass/deriving-clone-generic-enum.rs index 61696c2eeac75..1f2e7711eb0ee 100644 --- a/src/test/run-pass/deriving-clone-generic-enum.rs +++ b/src/test/run-pass/deriving-clone-generic-enum.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#[deriving(Clone, DeepClone)] +#[deriving(Clone)] enum E { A(T), B(T,U), @@ -17,5 +17,4 @@ enum E { pub fn main() { let _ = A::(1i).clone(); - let _ = B(1i, 1.234).deep_clone(); } diff --git a/src/test/run-pass/deriving-clone-generic-struct.rs b/src/test/run-pass/deriving-clone-generic-struct.rs index fd300cbc8b74b..8b5da617e2819 100644 --- a/src/test/run-pass/deriving-clone-generic-struct.rs +++ b/src/test/run-pass/deriving-clone-generic-struct.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#[deriving(Clone, DeepClone)] +#[deriving(Clone)] struct S { foo: (), bar: (), @@ -16,5 +16,5 @@ struct S { } pub fn main() { - let _ = S { foo: (), bar: (), baz: 1i }.clone().deep_clone(); + let _ = S { foo: (), bar: (), baz: 1i }.clone(); } diff --git a/src/test/run-pass/deriving-clone-generic-tuple-struct.rs b/src/test/run-pass/deriving-clone-generic-tuple-struct.rs index 02043b524a9ce..3fbef5d5a7676 100644 --- a/src/test/run-pass/deriving-clone-generic-tuple-struct.rs +++ b/src/test/run-pass/deriving-clone-generic-tuple-struct.rs @@ -8,9 +8,9 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#[deriving(Clone, DeepClone)] +#[deriving(Clone)] struct S(T, ()); pub fn main() { - let _ = S(1i, ()).clone().deep_clone(); + let _ = S(1i, ()).clone(); } diff --git a/src/test/run-pass/deriving-clone-struct.rs b/src/test/run-pass/deriving-clone-struct.rs index 52858a46ba53d..8e0afad218936 100644 --- a/src/test/run-pass/deriving-clone-struct.rs +++ b/src/test/run-pass/deriving-clone-struct.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#[deriving(Clone, DeepClone)] +#[deriving(Clone)] struct S { _int: int, _i8: i8, diff --git a/src/test/run-pass/deriving-global.rs b/src/test/run-pass/deriving-global.rs index af60a35cbf80c..174081786a776 100644 --- a/src/test/run-pass/deriving-global.rs +++ b/src/test/run-pass/deriving-global.rs @@ -28,21 +28,21 @@ mod submod { // cause errors about unrecognised module `std` (or `extra`) #[deriving(Eq, Ord, TotalEq, TotalOrd, Hash, - Clone, DeepClone, + Clone, Show, Rand, Encodable, Decodable)] enum A { A1(uint), A2(int) } #[deriving(Eq, Ord, TotalEq, TotalOrd, Hash, - Clone, DeepClone, + Clone, Show, Rand, Encodable, Decodable)] struct B { x: uint, y: int } #[deriving(Eq, Ord, TotalEq, TotalOrd, Hash, - Clone, DeepClone, + Clone, Show, Rand, Encodable, Decodable)] struct C(uint, int); diff --git a/src/test/run-pass/send_str_hashmap.rs b/src/test/run-pass/send_str_hashmap.rs index 4fd7980e7955d..34a4c798882b4 100644 --- a/src/test/run-pass/send_str_hashmap.rs +++ b/src/test/run-pass/send_str_hashmap.rs @@ -10,13 +10,8 @@ extern crate collections; -use std::clone::{Clone, DeepClone}; -use std::cmp::{TotalEq, Ord, TotalOrd, Equiv}; -use std::cmp::Equal; -use std::container::{Container, Map, MutableMap}; -use std::default::Default; -use std::str::{Str, SendStr, Owned, Slice}; -use std::to_str::ToStr; +use std::container::{Map, MutableMap}; +use std::str::{SendStr, Owned, Slice}; use collections::HashMap; use std::option::Some; diff --git a/src/test/run-pass/send_str_treemap.rs b/src/test/run-pass/send_str_treemap.rs index 1543d34ae88b9..5583d584f4623 100644 --- a/src/test/run-pass/send_str_treemap.rs +++ b/src/test/run-pass/send_str_treemap.rs @@ -10,12 +10,8 @@ extern crate collections; -use std::clone::{Clone, DeepClone}; -use std::cmp::{TotalEq, Ord, TotalOrd, Equiv}; -use std::cmp::Equal; -use std::container::{Container, Map, MutableMap}; -use std::default::Default; -use std::str::{Str, SendStr, Owned, Slice}; +use std::container::{ Map, MutableMap}; +use std::str::{SendStr, Owned, Slice}; use std::to_str::ToStr; use self::collections::TreeMap; use std::option::Some;