std: Rename Show/String to Debug/Display
This commit is an implementation of [RFC 565][rfc] which is a stabilization of the `std::fmt` module and the implementations of various formatting traits. Specifically, the following changes were performed: [rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0565-show-string-guidelines.md * The `Show` trait is now deprecated, it was renamed to `Debug` * The `String` trait is now deprecated, it was renamed to `Display` * Many `Debug` and `Display` implementations were audited in accordance with the RFC and audited implementations now have the `#[stable]` attribute * Integers and floats no longer print a suffix * Smart pointers no longer print details that they are a smart pointer * Paths with `Debug` are now quoted and escape characters * The `unwrap` methods on `Result` now require `Display` instead of `Debug` * The `Error` trait no longer has a `detail` method and now requires that `Display` must be implemented. With the loss of `String`, this has moved into libcore. * `impl<E: Error> FromError<E> for Box<Error>` now exists * `derive(Show)` has been renamed to `derive(Debug)`. This is not currently warned about due to warnings being emitted on stage1+ While backwards compatibility is attempted to be maintained with a blanket implementation of `Display` for the old `String` trait (and the same for `Show`/`Debug`) this is still a breaking change due to primitives no longer implementing `String` as well as modifications such as `unwrap` and the `Error` trait. Most code is fairly straightforward to update with a rename or tweaks of method calls. [breaking-change] Closes #21436
This commit is contained in:
parent
29bd9a06ef
commit
3cb9fa26ef
136 changed files with 763 additions and 706 deletions
|
|
@ -15,7 +15,7 @@ pub use self::AbiArchitecture::*;
|
|||
|
||||
use std::fmt;
|
||||
|
||||
#[derive(Copy, PartialEq)]
|
||||
#[derive(Copy, PartialEq, Eq, Show)]
|
||||
pub enum Os {
|
||||
OsWindows,
|
||||
OsMacos,
|
||||
|
|
@ -26,7 +26,7 @@ pub enum Os {
|
|||
OsDragonfly,
|
||||
}
|
||||
|
||||
#[derive(PartialEq, Eq, Hash, RustcEncodable, RustcDecodable, Clone, Copy)]
|
||||
#[derive(PartialEq, Eq, Hash, RustcEncodable, RustcDecodable, Clone, Copy, Show)]
|
||||
pub enum Abi {
|
||||
// NB: This ordering MUST match the AbiDatas array below.
|
||||
// (This is ensured by the test indices_are_correct().)
|
||||
|
|
@ -119,25 +119,13 @@ impl Abi {
|
|||
}
|
||||
}
|
||||
|
||||
impl fmt::Show for Abi {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
fmt::String::fmt(self, f)
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::String for Abi {
|
||||
impl fmt::Display for Abi {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
write!(f, "\"{}\"", self.name())
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Show for Os {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
fmt::String::fmt(self, f)
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::String for Os {
|
||||
impl fmt::Display for Os {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
match *self {
|
||||
OsLinux => "linux".fmt(f),
|
||||
|
|
|
|||
|
|
@ -100,28 +100,28 @@ impl Ident {
|
|||
}
|
||||
}
|
||||
|
||||
impl fmt::Show for Ident {
|
||||
impl fmt::Debug for Ident {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
write!(f, "{}#{}", self.name, self.ctxt)
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::String for Ident {
|
||||
impl fmt::Display for Ident {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
fmt::String::fmt(&self.name, f)
|
||||
fmt::Display::fmt(&self.name, f)
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Show for Name {
|
||||
impl fmt::Debug for Name {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
let Name(nm) = *self;
|
||||
write!(f, "{:?}({})", token::get_name(*self).get(), nm)
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::String for Name {
|
||||
impl fmt::Display for Name {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
fmt::String::fmt(token::get_name(*self).get(), f)
|
||||
fmt::Display::fmt(token::get_name(*self).get(), f)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1100,13 +1100,13 @@ impl PartialEq for IntTy {
|
|||
}
|
||||
}
|
||||
|
||||
impl fmt::Show for IntTy {
|
||||
impl fmt::Debug for IntTy {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
fmt::String::fmt(self, f)
|
||||
fmt::Display::fmt(self, f)
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::String for IntTy {
|
||||
impl fmt::Display for IntTy {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
write!(f, "{}", ast_util::int_ty_to_string(*self, None))
|
||||
}
|
||||
|
|
@ -1155,13 +1155,13 @@ impl UintTy {
|
|||
}
|
||||
}
|
||||
|
||||
impl fmt::Show for UintTy {
|
||||
impl fmt::Debug for UintTy {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
fmt::String::fmt(self, f)
|
||||
fmt::Display::fmt(self, f)
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::String for UintTy {
|
||||
impl fmt::Display for UintTy {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
write!(f, "{}", ast_util::uint_ty_to_string(*self, None))
|
||||
}
|
||||
|
|
@ -1173,13 +1173,13 @@ pub enum FloatTy {
|
|||
TyF64,
|
||||
}
|
||||
|
||||
impl fmt::Show for FloatTy {
|
||||
impl fmt::Debug for FloatTy {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
fmt::String::fmt(self, f)
|
||||
fmt::Display::fmt(self, f)
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::String for FloatTy {
|
||||
impl fmt::Display for FloatTy {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
write!(f, "{}", ast_util::float_ty_to_string(*self))
|
||||
}
|
||||
|
|
@ -1222,24 +1222,15 @@ pub enum PrimTy {
|
|||
TyChar
|
||||
}
|
||||
|
||||
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Copy)]
|
||||
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Copy, Show)]
|
||||
pub enum Onceness {
|
||||
Once,
|
||||
Many
|
||||
}
|
||||
|
||||
impl fmt::Show for Onceness {
|
||||
impl fmt::Display for Onceness {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
fmt::String::fmt(match *self {
|
||||
Once => "once",
|
||||
Many => "many",
|
||||
}, f)
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::String for Onceness {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
fmt::String::fmt(match *self {
|
||||
fmt::Display::fmt(match *self {
|
||||
Once => "once",
|
||||
Many => "many",
|
||||
}, f)
|
||||
|
|
@ -1358,9 +1349,9 @@ pub enum Unsafety {
|
|||
Normal,
|
||||
}
|
||||
|
||||
impl fmt::String for Unsafety {
|
||||
impl fmt::Display for Unsafety {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
fmt::String::fmt(match *self {
|
||||
fmt::Display::fmt(match *self {
|
||||
Unsafety::Normal => "normal",
|
||||
Unsafety::Unsafe => "unsafe",
|
||||
}, f)
|
||||
|
|
@ -1375,7 +1366,7 @@ pub enum ImplPolarity {
|
|||
Negative,
|
||||
}
|
||||
|
||||
impl fmt::Show for ImplPolarity {
|
||||
impl fmt::Debug for ImplPolarity {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
match *self {
|
||||
ImplPolarity::Positive => "positive".fmt(f),
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ impl PathElem {
|
|||
}
|
||||
}
|
||||
|
||||
impl fmt::String for PathElem {
|
||||
impl fmt::Display for PathElem {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
let slot = token::get_name(self.name());
|
||||
write!(f, "{}", slot)
|
||||
|
|
|
|||
|
|
@ -358,9 +358,9 @@ pub enum StabilityLevel {
|
|||
Locked
|
||||
}
|
||||
|
||||
impl fmt::String for StabilityLevel {
|
||||
impl fmt::Display for StabilityLevel {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
fmt::Show::fmt(self, f)
|
||||
fmt::Debug::fmt(self, f)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -235,9 +235,9 @@ pub enum Level {
|
|||
Help,
|
||||
}
|
||||
|
||||
impl fmt::String for Level {
|
||||
impl fmt::Display for Level {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
use std::fmt::String;
|
||||
use std::fmt::Display;
|
||||
|
||||
match *self {
|
||||
Bug => "error: internal compiler error".fmt(f),
|
||||
|
|
|
|||
|
|
@ -99,7 +99,9 @@ pub fn expand_meta_derive(cx: &mut ExtCtxt,
|
|||
|
||||
"Rand" => expand!(rand::expand_deriving_rand),
|
||||
|
||||
// NOTE(stage0): remove "Show"
|
||||
"Show" => expand!(show::expand_deriving_show),
|
||||
"Debug" => expand!(show::expand_deriving_show),
|
||||
|
||||
"Default" => expand!(default::expand_deriving_default),
|
||||
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ pub fn expand_deriving_show<F>(cx: &mut ExtCtxt,
|
|||
let trait_def = TraitDef {
|
||||
span: span,
|
||||
attributes: Vec::new(),
|
||||
path: Path::new(vec!("std", "fmt", "Show")),
|
||||
path: Path::new(vec!("std", "fmt", "Debug")),
|
||||
additional_bounds: Vec::new(),
|
||||
generics: LifetimeBounds::empty(),
|
||||
methods: vec!(
|
||||
|
|
@ -67,7 +67,7 @@ fn show_substructure(cx: &mut ExtCtxt, span: Span,
|
|||
Struct(_) => substr.type_ident,
|
||||
EnumMatching(_, v, _) => v.node.name,
|
||||
EnumNonMatchingCollapsed(..) | StaticStruct(..) | StaticEnum(..) => {
|
||||
cx.span_bug(span, "nonsensical .fields in `#[derive(Show)]`")
|
||||
cx.span_bug(span, "nonsensical .fields in `#[derive(Debug)]`")
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -603,8 +603,8 @@ impl<'a, 'b> Context<'a, 'b> {
|
|||
let trait_ = match *ty {
|
||||
Known(ref tyname) => {
|
||||
match &tyname[] {
|
||||
"" => "String",
|
||||
"?" => "Show",
|
||||
"" => "Display",
|
||||
"?" => "Debug",
|
||||
"e" => "LowerExp",
|
||||
"E" => "UpperExp",
|
||||
"o" => "Octal",
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ pub struct OwnedSlice<T> {
|
|||
data: Box<[T]>
|
||||
}
|
||||
|
||||
impl<T:fmt::Show> fmt::Show for OwnedSlice<T> {
|
||||
impl<T:fmt::Debug> fmt::Debug for OwnedSlice<T> {
|
||||
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
|
||||
self.data.fmt(fmt)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -586,10 +586,10 @@ impl<'a> StringReader<'a> {
|
|||
/// `\x00` marker.
|
||||
#[inline(never)]
|
||||
fn scan_embedded_hygienic_ident(&mut self) -> ast::Ident {
|
||||
fn bump_expecting_char<'a,D:fmt::Show>(r: &mut StringReader<'a>,
|
||||
c: char,
|
||||
described_c: D,
|
||||
whence: &str) {
|
||||
fn bump_expecting_char<'a,D:fmt::Debug>(r: &mut StringReader<'a>,
|
||||
c: char,
|
||||
described_c: D,
|
||||
whence: &str) {
|
||||
match r.curr {
|
||||
Some(r_c) if r_c == c => r.bump(),
|
||||
Some(r_c) => panic!("expected {:?}, hit {:?}, {}", described_c, r_c, whence),
|
||||
|
|
|
|||
|
|
@ -375,7 +375,7 @@ pub enum Nonterminal {
|
|||
NtTT(P<ast::TokenTree>), // needs P'ed to break a circularity
|
||||
}
|
||||
|
||||
impl fmt::Show for Nonterminal {
|
||||
impl fmt::Debug for Nonterminal {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
match *self {
|
||||
NtItem(..) => f.pad("NtItem(..)"),
|
||||
|
|
@ -651,15 +651,15 @@ impl BytesContainer for InternedString {
|
|||
}
|
||||
}
|
||||
|
||||
impl fmt::Show for InternedString {
|
||||
impl fmt::Debug for InternedString {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
fmt::String::fmt(self, f)
|
||||
fmt::Debug::fmt(&self.string[], f)
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::String for InternedString {
|
||||
impl fmt::Display for InternedString {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
write!(f, "{}", &self.string[])
|
||||
fmt::Display::fmt(&self.string[], f)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@
|
|||
//! implementation changes (using a special thread-local heap, for example).
|
||||
//! Moreover, a switch to, e.g. `P<'a, T>` would be easy and mostly automated.
|
||||
|
||||
use std::fmt::{self, Show};
|
||||
use std::fmt::{self, Display, Debug};
|
||||
use std::hash::{Hash, Hasher};
|
||||
use std::ops::Deref;
|
||||
use std::ptr;
|
||||
|
|
@ -100,9 +100,14 @@ impl<T: PartialEq> PartialEq for P<T> {
|
|||
|
||||
impl<T: Eq> Eq for P<T> {}
|
||||
|
||||
impl<T: Show> Show for P<T> {
|
||||
impl<T: Debug> Debug for P<T> {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
(**self).fmt(f)
|
||||
Debug::fmt(&**self, f)
|
||||
}
|
||||
}
|
||||
impl<T: Display> Display for P<T> {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
Display::fmt(&**self, f)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -114,9 +114,16 @@ impl Ord for RcStr {
|
|||
}
|
||||
}
|
||||
|
||||
impl fmt::Show for RcStr {
|
||||
impl fmt::Debug for RcStr {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
use std::fmt::Show;
|
||||
use std::fmt::Debug;
|
||||
self[].fmt(f)
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for RcStr {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
use std::fmt::Display;
|
||||
self[].fmt(f)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue