mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 23:04:33 +00:00
Auto merge of #66919 - dtolnay:description, r=KodrAus
Deprecate Error::description for real `description` has been documented as soft-deprecated since 1.27.0 (17 months ago). There is no longer any reason to call it or implement it. This PR: - adds `#[rustc_deprecated(since = "1.41.0")]` to `Error::description`; - moves `description` (and `cause`, which is also deprecated) below the `source` and `backtrace` methods in the Error trait; - reduces documentation of `description` and `cause` to take up much less vertical real estate in rustdocs, while preserving the example that shows how to render errors without needing to call `description`; - removes the description function of all *currently unstable* Error impls in the standard library; - marks `#[allow(deprecated)]` the description function of all *stable* Error impls in the standard library; - replaces miscellaneous uses of `description` in example code and the compiler. --- ![description](https://user-images.githubusercontent.com/1940490/69910369-3bbaca80-13bf-11ea-94f7-2fe27a7ea333.png)
This commit is contained in:
commit
bbf13723bc
@ -2,7 +2,6 @@ use std::error;
|
||||
use std::fmt;
|
||||
use std::fs;
|
||||
use std::io;
|
||||
use std::str;
|
||||
|
||||
pub fn arg_expand(arg: String) -> Result<Vec<String>, Error> {
|
||||
if arg.starts_with("@") {
|
||||
@ -36,8 +35,4 @@ impl fmt::Display for Error {
|
||||
}
|
||||
}
|
||||
|
||||
impl error::Error for Error {
|
||||
fn description(&self) -> &'static str {
|
||||
"argument error"
|
||||
}
|
||||
}
|
||||
impl error::Error for Error {}
|
||||
|
@ -10,22 +10,22 @@ For example, in the below example, since the enum is marked as
|
||||
on it.
|
||||
|
||||
```rust,ignore (pseudo-Rust)
|
||||
use std::error::Error as StdError;
|
||||
|
||||
#[non_exhaustive] pub enum Error {
|
||||
#[non_exhaustive]
|
||||
pub enum Error {
|
||||
Message(String),
|
||||
Other,
|
||||
}
|
||||
|
||||
impl StdError for Error {
|
||||
fn description(&self) -> &str {
|
||||
impl Display for Error {
|
||||
fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
|
||||
// This will not error, despite being marked as non_exhaustive, as this
|
||||
// enum is defined within the current crate, it can be matched
|
||||
// exhaustively.
|
||||
match *self {
|
||||
Message(ref s) => s,
|
||||
let display = match self {
|
||||
Message(s) => s,
|
||||
Other => "other or unknown error",
|
||||
}
|
||||
};
|
||||
formatter.write_str(display)
|
||||
}
|
||||
}
|
||||
```
|
||||
@ -38,7 +38,7 @@ use mycrate::Error;
|
||||
// This will not error as the non_exhaustive Error enum has been matched with a
|
||||
// wildcard.
|
||||
match error {
|
||||
Message(ref s) => ...,
|
||||
Message(s) => ...,
|
||||
Other => ...,
|
||||
_ => ...,
|
||||
}
|
||||
|
@ -253,11 +253,7 @@ impl fmt::Display for ExplicitBug {
|
||||
}
|
||||
}
|
||||
|
||||
impl error::Error for ExplicitBug {
|
||||
fn description(&self) -> &str {
|
||||
"The parser has encountered an internal bug"
|
||||
}
|
||||
}
|
||||
impl error::Error for ExplicitBug {}
|
||||
|
||||
pub use diagnostic::{Diagnostic, DiagnosticId, DiagnosticStyledString, SubDiagnostic};
|
||||
pub use diagnostic_builder::DiagnosticBuilder;
|
||||
|
@ -197,19 +197,7 @@ impl fmt::Display for ConstEvalError {
|
||||
}
|
||||
}
|
||||
|
||||
impl Error for ConstEvalError {
|
||||
fn description(&self) -> &str {
|
||||
use self::ConstEvalError::*;
|
||||
match *self {
|
||||
NeedsRfc(_) => "this feature needs an rfc before being allowed inside constants",
|
||||
ConstAccessesStatic => "constant accesses static",
|
||||
}
|
||||
}
|
||||
|
||||
fn cause(&self) -> Option<&dyn Error> {
|
||||
None
|
||||
}
|
||||
}
|
||||
impl Error for ConstEvalError {}
|
||||
|
||||
// Extra machine state for CTFE, and the Machine instance
|
||||
pub struct CompileTimeInterpreter<'mir, 'tcx> {
|
||||
|
@ -98,11 +98,7 @@ pub struct Error {
|
||||
pub error: io::Error,
|
||||
}
|
||||
|
||||
impl error::Error for Error {
|
||||
fn description(&self) -> &str {
|
||||
self.error.description()
|
||||
}
|
||||
}
|
||||
impl error::Error for Error {}
|
||||
|
||||
impl std::fmt::Display for Error {
|
||||
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
|
||||
|
@ -68,14 +68,7 @@ impl fmt::Display for FromHexError {
|
||||
}
|
||||
}
|
||||
|
||||
impl error::Error for FromHexError {
|
||||
fn description(&self) -> &str {
|
||||
match *self {
|
||||
InvalidHexCharacter(..) => "invalid character",
|
||||
InvalidHexLength => "invalid length",
|
||||
}
|
||||
}
|
||||
}
|
||||
impl error::Error for FromHexError {}
|
||||
|
||||
impl FromHex for str {
|
||||
/// Converts any hexadecimal encoded string (literal, `@`, `&`, or `~`)
|
||||
|
@ -345,11 +345,7 @@ impl fmt::Display for DecoderError {
|
||||
}
|
||||
}
|
||||
|
||||
impl std::error::Error for DecoderError {
|
||||
fn description(&self) -> &str {
|
||||
"decoder error"
|
||||
}
|
||||
}
|
||||
impl std::error::Error for DecoderError {}
|
||||
|
||||
impl fmt::Display for EncoderError {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
@ -358,11 +354,7 @@ impl fmt::Display for EncoderError {
|
||||
}
|
||||
}
|
||||
|
||||
impl std::error::Error for EncoderError {
|
||||
fn description(&self) -> &str {
|
||||
"encoder error"
|
||||
}
|
||||
}
|
||||
impl std::error::Error for EncoderError {}
|
||||
|
||||
impl From<fmt::Error> for EncoderError {
|
||||
/// Converts a [`fmt::Error`] into `EncoderError`
|
||||
|
@ -284,6 +284,7 @@ impl fmt::Display for VarError {
|
||||
|
||||
#[stable(feature = "env", since = "1.0.0")]
|
||||
impl Error for VarError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
match *self {
|
||||
VarError::NotPresent => "environment variable not found",
|
||||
@ -526,6 +527,7 @@ impl fmt::Display for JoinPathsError {
|
||||
|
||||
#[stable(feature = "env", since = "1.0.0")]
|
||||
impl Error for JoinPathsError {
|
||||
#[allow(deprecated, deprecated_in_future)]
|
||||
fn description(&self) -> &str {
|
||||
self.inner.description()
|
||||
}
|
||||
|
@ -45,92 +45,6 @@ use crate::string;
|
||||
/// [`source`]: trait.Error.html#method.source
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub trait Error: Debug + Display {
|
||||
/// **This method is soft-deprecated.**
|
||||
///
|
||||
/// Although using it won’t cause compilation warning,
|
||||
/// new code should use [`Display`] instead
|
||||
/// and new `impl`s can omit it.
|
||||
///
|
||||
/// To obtain error description as a string, use `to_string()`.
|
||||
///
|
||||
/// [`Display`]: ../fmt/trait.Display.html
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// match "xc".parse::<u32>() {
|
||||
/// Err(e) => {
|
||||
/// // Print `e` itself, not `e.description()`.
|
||||
/// println!("Error: {}", e);
|
||||
/// }
|
||||
/// _ => println!("No error"),
|
||||
/// }
|
||||
/// ```
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
fn description(&self) -> &str {
|
||||
"description() is deprecated; use Display"
|
||||
}
|
||||
|
||||
/// The lower-level cause of this error, if any.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// use std::error::Error;
|
||||
/// use std::fmt;
|
||||
///
|
||||
/// #[derive(Debug)]
|
||||
/// struct SuperError {
|
||||
/// side: SuperErrorSideKick,
|
||||
/// }
|
||||
///
|
||||
/// impl fmt::Display for SuperError {
|
||||
/// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
/// write!(f, "SuperError is here!")
|
||||
/// }
|
||||
/// }
|
||||
///
|
||||
/// impl Error for SuperError {
|
||||
/// fn cause(&self) -> Option<&dyn Error> {
|
||||
/// Some(&self.side)
|
||||
/// }
|
||||
/// }
|
||||
///
|
||||
/// #[derive(Debug)]
|
||||
/// struct SuperErrorSideKick;
|
||||
///
|
||||
/// impl fmt::Display for SuperErrorSideKick {
|
||||
/// fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
/// write!(f, "SuperErrorSideKick is here!")
|
||||
/// }
|
||||
/// }
|
||||
///
|
||||
/// impl Error for SuperErrorSideKick {}
|
||||
///
|
||||
/// fn get_super_error() -> Result<(), SuperError> {
|
||||
/// Err(SuperError { side: SuperErrorSideKick })
|
||||
/// }
|
||||
///
|
||||
/// fn main() {
|
||||
/// match get_super_error() {
|
||||
/// Err(e) => {
|
||||
/// println!("Error: {}", e.description());
|
||||
/// println!("Caused by: {}", e.cause().unwrap());
|
||||
/// }
|
||||
/// _ => println!("No error"),
|
||||
/// }
|
||||
/// }
|
||||
/// ```
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[rustc_deprecated(
|
||||
since = "1.33.0",
|
||||
reason = "replaced by Error::source, which can support \
|
||||
downcasting"
|
||||
)]
|
||||
fn cause(&self) -> Option<&dyn Error> {
|
||||
self.source()
|
||||
}
|
||||
|
||||
/// The lower-level source of this error, if any.
|
||||
///
|
||||
/// # Examples
|
||||
@ -213,6 +127,28 @@ pub trait Error: Debug + Display {
|
||||
fn backtrace(&self) -> Option<&Backtrace> {
|
||||
None
|
||||
}
|
||||
|
||||
/// ```
|
||||
/// if let Err(e) = "xc".parse::<u32>() {
|
||||
/// // Print `e` itself, no need for description().
|
||||
/// eprintln!("Error: {}", e);
|
||||
/// }
|
||||
/// ```
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[rustc_deprecated(since = "1.41.0", reason = "use the Display impl or to_string()")]
|
||||
fn description(&self) -> &str {
|
||||
"description() is deprecated; use Display"
|
||||
}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[rustc_deprecated(
|
||||
since = "1.33.0",
|
||||
reason = "replaced by Error::source, which can support downcasting"
|
||||
)]
|
||||
#[allow(missing_docs)]
|
||||
fn cause(&self) -> Option<&dyn Error> {
|
||||
self.source()
|
||||
}
|
||||
}
|
||||
|
||||
mod private {
|
||||
@ -318,6 +254,7 @@ impl From<String> for Box<dyn Error + Send + Sync> {
|
||||
struct StringError(String);
|
||||
|
||||
impl Error for StringError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
&self.0
|
||||
}
|
||||
@ -454,47 +391,32 @@ impl<'a> From<Cow<'a, str>> for Box<dyn Error> {
|
||||
}
|
||||
|
||||
#[unstable(feature = "never_type", issue = "35121")]
|
||||
impl Error for ! {
|
||||
fn description(&self) -> &str {
|
||||
*self
|
||||
}
|
||||
}
|
||||
impl Error for ! {}
|
||||
|
||||
#[unstable(
|
||||
feature = "allocator_api",
|
||||
reason = "the precise API and guarantees it provides may be tweaked.",
|
||||
issue = "32838"
|
||||
)]
|
||||
impl Error for AllocErr {
|
||||
fn description(&self) -> &str {
|
||||
"memory allocation failed"
|
||||
}
|
||||
}
|
||||
impl Error for AllocErr {}
|
||||
|
||||
#[unstable(
|
||||
feature = "allocator_api",
|
||||
reason = "the precise API and guarantees it provides may be tweaked.",
|
||||
issue = "32838"
|
||||
)]
|
||||
impl Error for LayoutErr {
|
||||
fn description(&self) -> &str {
|
||||
"invalid parameters to Layout::from_size_align"
|
||||
}
|
||||
}
|
||||
impl Error for LayoutErr {}
|
||||
|
||||
#[unstable(
|
||||
feature = "allocator_api",
|
||||
reason = "the precise API and guarantees it provides may be tweaked.",
|
||||
issue = "32838"
|
||||
)]
|
||||
impl Error for CannotReallocInPlace {
|
||||
fn description(&self) -> &str {
|
||||
CannotReallocInPlace::description(self)
|
||||
}
|
||||
}
|
||||
impl Error for CannotReallocInPlace {}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl Error for str::ParseBoolError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"failed to parse bool"
|
||||
}
|
||||
@ -502,6 +424,7 @@ impl Error for str::ParseBoolError {
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl Error for str::Utf8Error {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"invalid utf-8: corrupt contents"
|
||||
}
|
||||
@ -509,6 +432,7 @@ impl Error for str::Utf8Error {
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl Error for num::ParseIntError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
self.__description()
|
||||
}
|
||||
@ -516,6 +440,7 @@ impl Error for num::ParseIntError {
|
||||
|
||||
#[stable(feature = "try_from", since = "1.34.0")]
|
||||
impl Error for num::TryFromIntError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
self.__description()
|
||||
}
|
||||
@ -523,6 +448,7 @@ impl Error for num::TryFromIntError {
|
||||
|
||||
#[stable(feature = "try_from", since = "1.34.0")]
|
||||
impl Error for array::TryFromSliceError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
self.__description()
|
||||
}
|
||||
@ -530,6 +456,7 @@ impl Error for array::TryFromSliceError {
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl Error for num::ParseFloatError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
self.__description()
|
||||
}
|
||||
@ -537,6 +464,7 @@ impl Error for num::ParseFloatError {
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl Error for string::FromUtf8Error {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"invalid utf-8"
|
||||
}
|
||||
@ -544,6 +472,7 @@ impl Error for string::FromUtf8Error {
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl Error for string::FromUtf16Error {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"invalid utf-16"
|
||||
}
|
||||
@ -558,6 +487,7 @@ impl Error for string::ParseError {
|
||||
|
||||
#[stable(feature = "decode_utf16", since = "1.9.0")]
|
||||
impl Error for char::DecodeUtf16Error {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"unpaired surrogate found"
|
||||
}
|
||||
@ -565,6 +495,7 @@ impl Error for char::DecodeUtf16Error {
|
||||
|
||||
#[stable(feature = "box_error", since = "1.8.0")]
|
||||
impl<T: Error> Error for Box<T> {
|
||||
#[allow(deprecated, deprecated_in_future)]
|
||||
fn description(&self) -> &str {
|
||||
Error::description(&**self)
|
||||
}
|
||||
@ -581,6 +512,7 @@ impl<T: Error> Error for Box<T> {
|
||||
|
||||
#[stable(feature = "fmt_error", since = "1.11.0")]
|
||||
impl Error for fmt::Error {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"an error occurred when formatting an argument"
|
||||
}
|
||||
@ -588,6 +520,7 @@ impl Error for fmt::Error {
|
||||
|
||||
#[stable(feature = "try_borrow", since = "1.13.0")]
|
||||
impl Error for cell::BorrowError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"already mutably borrowed"
|
||||
}
|
||||
@ -595,6 +528,7 @@ impl Error for cell::BorrowError {
|
||||
|
||||
#[stable(feature = "try_borrow", since = "1.13.0")]
|
||||
impl Error for cell::BorrowMutError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"already borrowed"
|
||||
}
|
||||
@ -602,6 +536,7 @@ impl Error for cell::BorrowMutError {
|
||||
|
||||
#[stable(feature = "try_from", since = "1.34.0")]
|
||||
impl Error for char::CharTryFromError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"converted integer out of range for `char`"
|
||||
}
|
||||
@ -609,6 +544,7 @@ impl Error for char::CharTryFromError {
|
||||
|
||||
#[stable(feature = "char_from_str", since = "1.20.0")]
|
||||
impl Error for char::ParseCharError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
self.__description()
|
||||
}
|
||||
@ -846,16 +782,8 @@ mod tests {
|
||||
}
|
||||
}
|
||||
|
||||
impl Error for A {
|
||||
fn description(&self) -> &str {
|
||||
"A-desc"
|
||||
}
|
||||
}
|
||||
impl Error for B {
|
||||
fn description(&self) -> &str {
|
||||
"A-desc"
|
||||
}
|
||||
}
|
||||
impl Error for A {}
|
||||
impl Error for B {}
|
||||
|
||||
#[test]
|
||||
fn downcasting() {
|
||||
|
@ -878,6 +878,7 @@ impl NulError {
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl Error for NulError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"nul byte found in data"
|
||||
}
|
||||
@ -903,6 +904,7 @@ impl From<NulError> for io::Error {
|
||||
|
||||
#[stable(feature = "frombyteswithnulerror_impls", since = "1.17.0")]
|
||||
impl Error for FromBytesWithNulError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
match self.kind {
|
||||
FromBytesWithNulErrorKind::InteriorNul(..) => {
|
||||
@ -915,6 +917,7 @@ impl Error for FromBytesWithNulError {
|
||||
|
||||
#[stable(feature = "frombyteswithnulerror_impls", since = "1.17.0")]
|
||||
impl fmt::Display for FromBytesWithNulError {
|
||||
#[allow(deprecated, deprecated_in_future)]
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
f.write_str(self.description())?;
|
||||
if let FromBytesWithNulErrorKind::InteriorNul(pos) = self.kind {
|
||||
@ -943,6 +946,7 @@ impl IntoStringError {
|
||||
|
||||
#[stable(feature = "cstring_into", since = "1.7.0")]
|
||||
impl Error for IntoStringError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"C string contained non-utf8 bytes"
|
||||
}
|
||||
@ -954,6 +958,7 @@ impl Error for IntoStringError {
|
||||
|
||||
#[stable(feature = "cstring_into", since = "1.7.0")]
|
||||
impl fmt::Display for IntoStringError {
|
||||
#[allow(deprecated, deprecated_in_future)]
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
self.description().fmt(f)
|
||||
}
|
||||
|
@ -752,6 +752,7 @@ impl<W> From<IntoInnerError<W>> for Error {
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl<W: Send + fmt::Debug> error::Error for IntoInnerError<W> {
|
||||
#[allow(deprecated, deprecated_in_future)]
|
||||
fn description(&self) -> &str {
|
||||
error::Error::description(self.error())
|
||||
}
|
||||
|
@ -534,6 +534,7 @@ impl fmt::Display for Error {
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl error::Error for Error {
|
||||
#[allow(deprecated, deprecated_in_future)]
|
||||
fn description(&self) -> &str {
|
||||
match self.repr {
|
||||
Repr::Os(..) | Repr::Simple(..) => self.kind().as_str(),
|
||||
@ -603,22 +604,18 @@ mod test {
|
||||
struct TestError;
|
||||
|
||||
impl fmt::Display for TestError {
|
||||
fn fmt(&self, _: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
Ok(())
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
f.write_str("asdf")
|
||||
}
|
||||
}
|
||||
|
||||
impl error::Error for TestError {
|
||||
fn description(&self) -> &str {
|
||||
"asdf"
|
||||
}
|
||||
}
|
||||
impl error::Error for TestError {}
|
||||
|
||||
// we have to call all of these UFCS style right now since method
|
||||
// resolution won't implicitly drop the Send+Sync bounds
|
||||
let mut err = Error::new(ErrorKind::Other, TestError);
|
||||
assert!(err.get_ref().unwrap().is::<TestError>());
|
||||
assert_eq!("asdf", err.get_ref().unwrap().description());
|
||||
assert_eq!("asdf", err.get_ref().unwrap().to_string());
|
||||
assert!(err.get_mut().unwrap().is::<TestError>());
|
||||
let extracted = err.into_inner().unwrap();
|
||||
extracted.downcast::<TestError>().unwrap();
|
||||
|
@ -363,6 +363,7 @@ pub struct AddrParseError(());
|
||||
|
||||
#[stable(feature = "addr_parse_error_error", since = "1.4.0")]
|
||||
impl fmt::Display for AddrParseError {
|
||||
#[allow(deprecated, deprecated_in_future)]
|
||||
fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
fmt.write_str(self.description())
|
||||
}
|
||||
@ -370,6 +371,7 @@ impl fmt::Display for AddrParseError {
|
||||
|
||||
#[stable(feature = "addr_parse_error_error", since = "1.4.0")]
|
||||
impl Error for AddrParseError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"invalid IP address syntax"
|
||||
}
|
||||
|
@ -2786,6 +2786,7 @@ impl_cmp_os_str!(Cow<'a, Path>, OsString);
|
||||
|
||||
#[stable(since = "1.7.0", feature = "strip_prefix")]
|
||||
impl fmt::Display for StripPrefixError {
|
||||
#[allow(deprecated, deprecated_in_future)]
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
self.description().fmt(f)
|
||||
}
|
||||
@ -2793,6 +2794,7 @@ impl fmt::Display for StripPrefixError {
|
||||
|
||||
#[stable(since = "1.7.0", feature = "strip_prefix")]
|
||||
impl Error for StripPrefixError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"prefix not found"
|
||||
}
|
||||
|
@ -1550,6 +1550,7 @@ impl<T> fmt::Display for SendError<T> {
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl<T: Send> error::Error for SendError<T> {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"sending on a closed channel"
|
||||
}
|
||||
@ -1577,6 +1578,7 @@ impl<T> fmt::Display for TrySendError<T> {
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl<T: Send> error::Error for TrySendError<T> {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
match *self {
|
||||
TrySendError::Full(..) => "sending on a full channel",
|
||||
@ -1603,6 +1605,7 @@ impl fmt::Display for RecvError {
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl error::Error for RecvError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"receiving on a closed channel"
|
||||
}
|
||||
@ -1620,6 +1623,7 @@ impl fmt::Display for TryRecvError {
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl error::Error for TryRecvError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
match *self {
|
||||
TryRecvError::Empty => "receiving on an empty channel",
|
||||
@ -1649,6 +1653,7 @@ impl fmt::Display for RecvTimeoutError {
|
||||
|
||||
#[stable(feature = "mpsc_recv_timeout_error", since = "1.15.0")]
|
||||
impl error::Error for RecvTimeoutError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
match *self {
|
||||
RecvTimeoutError::Timeout => "timed out waiting on channel",
|
||||
|
@ -63,6 +63,7 @@ impl fmt::Display for JoinPathsError {
|
||||
}
|
||||
|
||||
impl StdError for JoinPathsError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"not supported on CloudABI yet"
|
||||
}
|
||||
|
@ -61,6 +61,7 @@ impl fmt::Display for JoinPathsError {
|
||||
}
|
||||
|
||||
impl StdError for JoinPathsError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"not supported on hermit yet"
|
||||
}
|
||||
|
@ -440,6 +440,7 @@ pub struct NonIpSockAddr {
|
||||
}
|
||||
|
||||
impl error::Error for NonIpSockAddr {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"Failed to convert address to SocketAddr"
|
||||
}
|
||||
|
@ -66,6 +66,7 @@ impl fmt::Display for JoinPathsError {
|
||||
}
|
||||
|
||||
impl StdError for JoinPathsError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"not supported in SGX yet"
|
||||
}
|
||||
|
@ -213,6 +213,7 @@ impl fmt::Display for JoinPathsError {
|
||||
}
|
||||
|
||||
impl StdError for JoinPathsError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"failed to join paths"
|
||||
}
|
||||
|
@ -173,6 +173,7 @@ impl fmt::Display for JoinPathsError {
|
||||
}
|
||||
|
||||
impl StdError for JoinPathsError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"failed to join paths"
|
||||
}
|
||||
|
@ -78,6 +78,7 @@ impl fmt::Display for JoinPathsError {
|
||||
}
|
||||
|
||||
impl StdError for JoinPathsError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"not supported on wasm yet"
|
||||
}
|
||||
|
@ -53,6 +53,7 @@ impl fmt::Display for JoinPathsError {
|
||||
}
|
||||
|
||||
impl StdError for JoinPathsError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"not supported on wasm yet"
|
||||
}
|
||||
|
@ -225,6 +225,7 @@ impl fmt::Display for JoinPathsError {
|
||||
}
|
||||
|
||||
impl StdError for JoinPathsError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"failed to join paths"
|
||||
}
|
||||
|
@ -148,6 +148,7 @@ impl<T> fmt::Display for PoisonError<T> {
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl<T> Error for PoisonError<T> {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"poisoned lock: another task failed inside"
|
||||
}
|
||||
@ -239,6 +240,7 @@ impl<T> fmt::Display for TryLockError<T> {
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl<T> Error for TryLockError<T> {
|
||||
#[allow(deprecated, deprecated_in_future)]
|
||||
fn description(&self) -> &str {
|
||||
match *self {
|
||||
TryLockError::Poisoned(ref p) => p.description(),
|
||||
@ -246,6 +248,7 @@ impl<T> Error for TryLockError<T> {
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(deprecated)]
|
||||
fn cause(&self) -> Option<&dyn Error> {
|
||||
match *self {
|
||||
TryLockError::Poisoned(ref p) => Some(p),
|
||||
|
@ -621,6 +621,7 @@ impl SystemTimeError {
|
||||
|
||||
#[stable(feature = "time2", since = "1.8.0")]
|
||||
impl Error for SystemTimeError {
|
||||
#[allow(deprecated)]
|
||||
fn description(&self) -> &str {
|
||||
"other time was not earlier than self"
|
||||
}
|
||||
|
@ -23,8 +23,4 @@ impl std::fmt::Display for FatalError {
|
||||
}
|
||||
}
|
||||
|
||||
impl std::error::Error for FatalError {
|
||||
fn description(&self) -> &str {
|
||||
"The parser has encountered a fatal error"
|
||||
}
|
||||
}
|
||||
impl std::error::Error for FatalError {}
|
||||
|
@ -42,14 +42,10 @@ pub enum Error {
|
||||
}
|
||||
|
||||
impl error::Error for Error {
|
||||
fn description(&self) -> &str {
|
||||
"failed to create TermInfo"
|
||||
}
|
||||
|
||||
fn cause(&self) -> Option<&dyn error::Error> {
|
||||
fn source(&self) -> Option<&(dyn error::Error + 'static)> {
|
||||
use Error::*;
|
||||
match *self {
|
||||
IoError(ref e) => Some(e),
|
||||
match self {
|
||||
IoError(e) => Some(e),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ error: internal compiler error: mutable allocation in constant
|
||||
LL | const MUTABLE_BEHIND_RAW: *mut i32 = &UnsafeCell::new(42) as *const _ as *mut _;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
thread 'rustc' panicked at 'no errors encountered even though `delay_span_bug` issued', src/librustc_errors/lib.rs:349:17
|
||||
thread 'rustc' panicked at 'no errors encountered even though `delay_span_bug` issued', src/librustc_errors/lib.rs:345:17
|
||||
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
|
||||
|
||||
error: internal compiler error: unexpected panic
|
||||
|
@ -286,7 +286,7 @@ fn main() {
|
||||
let (format, dst) = parse_args();
|
||||
let result = syntax::with_default_globals(move || main_with_result(format, &dst));
|
||||
if let Err(e) = result {
|
||||
panic!("{}", e.description());
|
||||
panic!("{}", e.to_string());
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user