diff options
| author | bors <bors@rust-lang.org> | 2013-06-22 17:13:51 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-06-22 17:13:51 -0700 |
| commit | fc83d82fec5bc338ffa4aaf00ca2aef6bfd473a4 (patch) | |
| tree | efbdac2a1b9c2f2f29551d33f8cc5dc61f4e565b /src/test | |
| parent | 0739c6b5a00372e6c7ed2f9bdafea8a8c0e383a6 (diff) | |
| parent | 30d755957a0f2cc3be3b355671da79cdf34fd50a (diff) | |
| download | rust-fc83d82fec5bc338ffa4aaf00ca2aef6bfd473a4.tar.gz rust-fc83d82fec5bc338ffa4aaf00ca2aef6bfd473a4.zip | |
auto merge of #7204 : alexcrichton/rust/deriving-to-string, r=pcwalton
Closes #7180 and #7179.
Before, the `deriving(ToStr)` attribute was essentially `fmt!("%?")`. This changes it to recursively invoke `to_str()` on fields instead of relying on `fmt!`-style things. This seems more natural to me and what should actually be expected.
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/run-pass/deriving-to-str.rs | 68 |
1 files changed, 35 insertions, 33 deletions
diff --git a/src/test/run-pass/deriving-to-str.rs b/src/test/run-pass/deriving-to-str.rs index fcf0a009d9b..1fc1d6815f5 100644 --- a/src/test/run-pass/deriving-to-str.rs +++ b/src/test/run-pass/deriving-to-str.rs @@ -1,5 +1,4 @@ -// xfail-fast #6330 -// Copyright 2013 The Rust Project Developers. See the COPYRIGHT +// Copyright 2012-2013 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // @@ -9,39 +8,42 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use std::rand; +#[deriving(ToStr)] +enum A {} +#[deriving(ToStr)] +enum B { B1, B2, B3 } +#[deriving(ToStr)] +enum C { C1(int), C2(B), C3(~str) } +#[deriving(ToStr)] +enum D { D1{ a: int } } +#[deriving(ToStr)] +struct E; +#[deriving(ToStr)] +struct F(int); +#[deriving(ToStr)] +struct G(int, int); +#[deriving(ToStr)] +struct H { a: int } +#[deriving(ToStr)] +struct I { a: int, b: int } +#[deriving(ToStr)] +struct J(Custom); -#[deriving(Rand,ToStr)] -struct A; - -#[deriving(Rand,ToStr)] -struct B(int, int); - -#[deriving(Rand,ToStr)] -struct C { - x: f64, - y: (u8, u8) -} - -#[deriving(Rand,ToStr)] -enum D { - D0, - D1(uint), - D2 { x: (), y: () } +struct Custom; +impl ToStr for Custom { + fn to_str(&self) -> ~str { ~"yay" } } fn main() { - macro_rules! t( - ($ty:ty) => {{ - let x =rand::random::<$ty>(); - assert_eq!(x.to_str(), fmt!("%?", x)); - }} - ); - - for 20.times { - t!(A); - t!(B); - t!(C); - t!(D); - } + assert_eq!(B1.to_str(), ~"B1"); + assert_eq!(B2.to_str(), ~"B2"); + assert_eq!(C1(3).to_str(), ~"C1(3)"); + assert_eq!(C2(B2).to_str(), ~"C2(B2)"); + assert_eq!(D1{ a: 2 }.to_str(), ~"D1{a: 2}"); + assert_eq!(E.to_str(), ~"E"); + assert_eq!(F(3).to_str(), ~"F(3)"); + assert_eq!(G(3, 4).to_str(), ~"G(3, 4)"); + assert_eq!(G(3, 4).to_str(), ~"G(3, 4)"); + assert_eq!(I{ a: 2, b: 4 }.to_str(), ~"I{a: 2, b: 4}"); + assert_eq!(J(Custom).to_str(), ~"J(yay)"); } |
