From c2bc59e0869889d9b996da99915f95ae89ddff00 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Mon, 26 Aug 2013 15:58:50 -0400 Subject: [PATCH] repr: print integer/float suffixes --- src/librustc/middle/ty.rs | 12 ++-- src/libstd/repr.rs | 63 ++++++++++++------- src/test/run-pass/fixed_length_vec_glue.rs | 2 +- .../log-knows-the-names-of-variants-in-std.rs | 2 +- .../log-knows-the-names-of-variants.rs | 2 +- src/test/run-pass/rec-align-u32.rs | 2 +- src/test/run-pass/rec-align-u64.rs | 2 +- src/test/run-pass/tag-align-shape.rs | 2 +- 8 files changed, 51 insertions(+), 36 deletions(-) diff --git a/src/librustc/middle/ty.rs b/src/librustc/middle/ty.rs index 6593e5632fb..2a3b5d8c963 100644 --- a/src/librustc/middle/ty.rs +++ b/src/librustc/middle/ty.rs @@ -3476,18 +3476,18 @@ pub fn type_err_to_str(cx: ctxt, err: &type_err) -> ~str { terr_ptr_mutability => ~"pointers differ in mutability", terr_ref_mutability => ~"references differ in mutability", terr_ty_param_size(values) => { - fmt!("expected a type with %? type params \ - but found one with %? type params", + fmt!("expected a type with %u type params \ + but found one with %u type params", values.expected, values.found) } terr_tuple_size(values) => { - fmt!("expected a tuple with %? elements \ - but found one with %? elements", + fmt!("expected a tuple with %u elements \ + but found one with %u elements", values.expected, values.found) } terr_record_size(values) => { - fmt!("expected a record with %? fields \ - but found one with %? fields", + fmt!("expected a record with %u fields \ + but found one with %u fields", values.expected, values.found) } terr_record_mutability => { diff --git a/src/libstd/repr.rs b/src/libstd/repr.rs index 0218a0e7f3a..fa9d7b3b979 100644 --- a/src/libstd/repr.rs +++ b/src/libstd/repr.rs @@ -75,35 +75,50 @@ impl Repr for bool { } } -macro_rules! int_repr(($ty:ident) => (impl Repr for $ty { +impl Repr for int { + fn write_repr(&self, writer: @Writer) { + do ::int::to_str_bytes(*self, 10u) |bits| { + writer.write(bits); + } + } +} + +macro_rules! int_repr(($ty:ident, $suffix:expr) => (impl Repr for $ty { fn write_repr(&self, writer: @Writer) { do ::$ty::to_str_bytes(*self, 10u) |bits| { writer.write(bits); + writer.write(bytes!($suffix)); } } })) -int_repr!(int) -int_repr!(i8) -int_repr!(i16) -int_repr!(i32) -int_repr!(i64) -int_repr!(uint) -int_repr!(u8) -int_repr!(u16) -int_repr!(u32) -int_repr!(u64) +int_repr!(i8, "i8") +int_repr!(i16, "i16") +int_repr!(i32, "i32") +int_repr!(i64, "i64") +int_repr!(uint, "u") +int_repr!(u8, "u8") +int_repr!(u16, "u16") +int_repr!(u32, "u32") +int_repr!(u64, "u64") -macro_rules! num_repr(($ty:ident) => (impl Repr for $ty { +impl Repr for float { fn write_repr(&self, writer: @Writer) { let s = self.to_str(); writer.write(s.as_bytes()); } +} + +macro_rules! num_repr(($ty:ident, $suffix:expr) => (impl Repr for $ty { + fn write_repr(&self, writer: @Writer) { + let s = self.to_str(); + writer.write(s.as_bytes()); + writer.write(bytes!($suffix)); + } })) -num_repr!(float) -num_repr!(f32) -num_repr!(f64) +num_repr!(f32, "f32") +num_repr!(f64, "f64") // New implementation using reflect::MovePtr @@ -602,7 +617,7 @@ fn test_repr() { exact_test(&(@[1,2,3,4,5,6,7,8]), "@[1, 2, 3, 4, 5, 6, 7, 8]"); exact_test(&(@[1u8,2u8,3u8,4u8]), - "@[1, 2, 3, 4]"); + "@[1u8, 2u8, 3u8, 4u8]"); exact_test(&(@["hi", "there"]), "@[\"hi\", \"there\"]"); exact_test(&(~["hi", "there"]), @@ -615,14 +630,14 @@ fn test_repr() { "@{a: 10, b: 1.234}"); exact_test(&(~P{a:10, b:1.234}), "~{a: 10, b: 1.234}"); - exact_test(&(10_u8, ~"hello"), - "(10, ~\"hello\")"); - exact_test(&(10_u16, ~"hello"), - "(10, ~\"hello\")"); - exact_test(&(10_u32, ~"hello"), - "(10, ~\"hello\")"); - exact_test(&(10_u64, ~"hello"), - "(10, ~\"hello\")"); + exact_test(&(10u8, ~"hello"), + "(10u8, ~\"hello\")"); + exact_test(&(10u16, ~"hello"), + "(10u16, ~\"hello\")"); + exact_test(&(10u32, ~"hello"), + "(10u32, ~\"hello\")"); + exact_test(&(10u64, ~"hello"), + "(10u64, ~\"hello\")"); struct Foo; exact_test(&(~[Foo, Foo, Foo]), "~[{}, {}, {}]"); diff --git a/src/test/run-pass/fixed_length_vec_glue.rs b/src/test/run-pass/fixed_length_vec_glue.rs index d026f041250..eb67c45ed00 100644 --- a/src/test/run-pass/fixed_length_vec_glue.rs +++ b/src/test/run-pass/fixed_length_vec_glue.rs @@ -16,5 +16,5 @@ pub fn main() { let arr = [1,2,3]; let struc = Struc {a: 13u8, b: arr, c: 42}; let s = sys::log_str(&struc); - assert_eq!(s, ~"{a: 13, b: [1, 2, 3], c: 42}"); + assert_eq!(s, ~"{a: 13u8, b: [1, 2, 3], c: 42}"); } diff --git a/src/test/run-pass/log-knows-the-names-of-variants-in-std.rs b/src/test/run-pass/log-knows-the-names-of-variants-in-std.rs index 5318e5ca348..ec048d13a18 100644 --- a/src/test/run-pass/log-knows-the-names-of-variants-in-std.rs +++ b/src/test/run-pass/log-knows-the-names-of-variants-in-std.rs @@ -25,7 +25,7 @@ fn check_log(exp: ~str, v: T) { pub fn main() { let x = list::from_vec([a(22u), b(~"hi")]); - let exp = ~"@Cons(a(22), @Cons(b(~\"hi\"), @Nil))"; + let exp = ~"@Cons(a(22u), @Cons(b(~\"hi\"), @Nil))"; let act = fmt!("%?", x); assert!(act == exp); check_log(exp, x); diff --git a/src/test/run-pass/log-knows-the-names-of-variants.rs b/src/test/run-pass/log-knows-the-names-of-variants.rs index 7a0d763f7e0..4727e61b1fd 100644 --- a/src/test/run-pass/log-knows-the-names-of-variants.rs +++ b/src/test/run-pass/log-knows-the-names-of-variants.rs @@ -19,7 +19,7 @@ enum bar { } pub fn main() { - assert_eq!(~"a(22)", fmt!("%?", a(22u))); + assert_eq!(~"a(22u)", fmt!("%?", a(22u))); assert_eq!(~"b(~\"hi\")", fmt!("%?", b(~"hi"))); assert_eq!(~"c", fmt!("%?", c)); assert_eq!(~"d", fmt!("%?", d)); diff --git a/src/test/run-pass/rec-align-u32.rs b/src/test/run-pass/rec-align-u32.rs index f475292093c..11aa2b85204 100644 --- a/src/test/run-pass/rec-align-u32.rs +++ b/src/test/run-pass/rec-align-u32.rs @@ -64,6 +64,6 @@ pub fn main() { // because `inner`s alignment was 4. assert_eq!(sys::size_of::(), m::size()); - assert_eq!(y, ~"{c8: 22, t: {c64: 44}}"); + assert_eq!(y, ~"{c8: 22u8, t: {c64: 44u32}}"); } } diff --git a/src/test/run-pass/rec-align-u64.rs b/src/test/run-pass/rec-align-u64.rs index 571ad2f3fb2..cca2adc0873 100644 --- a/src/test/run-pass/rec-align-u64.rs +++ b/src/test/run-pass/rec-align-u64.rs @@ -86,6 +86,6 @@ pub fn main() { // because `Inner`s alignment was 4. assert_eq!(sys::size_of::(), m::m::size()); - assert_eq!(y, ~"{c8: 22, t: {c64: 44}}"); + assert_eq!(y, ~"{c8: 22u8, t: {c64: 44u64}}"); } } diff --git a/src/test/run-pass/tag-align-shape.rs b/src/test/run-pass/tag-align-shape.rs index f86c134eef2..cb93cea2895 100644 --- a/src/test/run-pass/tag-align-shape.rs +++ b/src/test/run-pass/tag-align-shape.rs @@ -21,5 +21,5 @@ pub fn main() { let x = t_rec {c8: 22u8, t: a_tag(44u64)}; let y = fmt!("%?", x); info!("y = %s", y); - assert_eq!(y, ~"{c8: 22, t: a_tag(44)}"); + assert_eq!(y, ~"{c8: 22u8, t: a_tag(44u64)}"); }