Vendor things
This commit is contained in:
parent
5deceec006
commit
977e3c17e5
19434 changed files with 10682014 additions and 0 deletions
161
third-party/vendor/thiserror/tests/test_generics.rs
vendored
Normal file
161
third-party/vendor/thiserror/tests/test_generics.rs
vendored
Normal file
|
|
@ -0,0 +1,161 @@
|
|||
#![allow(clippy::needless_late_init, clippy::uninlined_format_args)]
|
||||
|
||||
use std::fmt::{self, Debug, Display};
|
||||
use thiserror::Error;
|
||||
|
||||
pub struct NoFormat;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct DebugOnly;
|
||||
|
||||
pub struct DisplayOnly;
|
||||
|
||||
impl Display for DisplayOnly {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
f.write_str("display only")
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct DebugAndDisplay;
|
||||
|
||||
impl Display for DebugAndDisplay {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
f.write_str("debug and display")
|
||||
}
|
||||
}
|
||||
|
||||
// Should expand to:
|
||||
//
|
||||
// impl<E> Display for EnumDebugField<E>
|
||||
// where
|
||||
// E: Debug;
|
||||
//
|
||||
// impl<E> Error for EnumDebugField<E>
|
||||
// where
|
||||
// Self: Debug + Display;
|
||||
//
|
||||
#[derive(Error, Debug)]
|
||||
pub enum EnumDebugGeneric<E> {
|
||||
#[error("{0:?}")]
|
||||
FatalError(E),
|
||||
}
|
||||
|
||||
// Should expand to:
|
||||
//
|
||||
// impl<E> Display for EnumFromGeneric<E>;
|
||||
//
|
||||
// impl<E> Error for EnumFromGeneric<E>
|
||||
// where
|
||||
// EnumDebugGeneric<E>: Error + 'static,
|
||||
// Self: Debug + Display;
|
||||
//
|
||||
#[derive(Error, Debug)]
|
||||
pub enum EnumFromGeneric<E> {
|
||||
#[error("enum from generic")]
|
||||
Source(#[from] EnumDebugGeneric<E>),
|
||||
}
|
||||
|
||||
// Should expand to:
|
||||
//
|
||||
// impl<HasDisplay, HasDebug, HasNeither> Display
|
||||
// for EnumCompound<HasDisplay, HasDebug, HasNeither>
|
||||
// where
|
||||
// HasDisplay: Display,
|
||||
// HasDebug: Debug;
|
||||
//
|
||||
// impl<HasDisplay, HasDebug, HasNeither> Error
|
||||
// for EnumCompound<HasDisplay, HasDebug, HasNeither>
|
||||
// where
|
||||
// Self: Debug + Display;
|
||||
//
|
||||
#[derive(Error)]
|
||||
pub enum EnumCompound<HasDisplay, HasDebug, HasNeither> {
|
||||
#[error("{0} {1:?}")]
|
||||
DisplayDebug(HasDisplay, HasDebug),
|
||||
#[error("{0}")]
|
||||
Display(HasDisplay, HasNeither),
|
||||
#[error("{1:?}")]
|
||||
Debug(HasNeither, HasDebug),
|
||||
}
|
||||
|
||||
impl<HasDisplay, HasDebug, HasNeither> Debug for EnumCompound<HasDisplay, HasDebug, HasNeither> {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
f.write_str("EnumCompound")
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_display_enum_compound() {
|
||||
let mut instance: EnumCompound<DisplayOnly, DebugOnly, NoFormat>;
|
||||
|
||||
instance = EnumCompound::DisplayDebug(DisplayOnly, DebugOnly);
|
||||
assert_eq!(format!("{}", instance), "display only DebugOnly");
|
||||
|
||||
instance = EnumCompound::Display(DisplayOnly, NoFormat);
|
||||
assert_eq!(format!("{}", instance), "display only");
|
||||
|
||||
instance = EnumCompound::Debug(NoFormat, DebugOnly);
|
||||
assert_eq!(format!("{}", instance), "DebugOnly");
|
||||
}
|
||||
|
||||
// Should expand to:
|
||||
//
|
||||
// impl<E> Display for EnumTransparentGeneric<E>
|
||||
// where
|
||||
// E: Display;
|
||||
//
|
||||
// impl<E> Error for EnumTransparentGeneric<E>
|
||||
// where
|
||||
// E: Error,
|
||||
// Self: Debug + Display;
|
||||
//
|
||||
#[derive(Error, Debug)]
|
||||
pub enum EnumTransparentGeneric<E> {
|
||||
#[error(transparent)]
|
||||
Other(E),
|
||||
}
|
||||
|
||||
// Should expand to:
|
||||
//
|
||||
// impl<E> Display for StructDebugGeneric<E>
|
||||
// where
|
||||
// E: Debug;
|
||||
//
|
||||
// impl<E> Error for StructDebugGeneric<E>
|
||||
// where
|
||||
// Self: Debug + Display;
|
||||
//
|
||||
#[derive(Error, Debug)]
|
||||
#[error("{underlying:?}")]
|
||||
pub struct StructDebugGeneric<E> {
|
||||
pub underlying: E,
|
||||
}
|
||||
|
||||
// Should expand to:
|
||||
//
|
||||
// impl<E> Error for StructFromGeneric<E>
|
||||
// where
|
||||
// StructDebugGeneric<E>: Error + 'static,
|
||||
// Self: Debug + Display;
|
||||
//
|
||||
#[derive(Error, Debug)]
|
||||
pub struct StructFromGeneric<E> {
|
||||
#[from]
|
||||
pub source: StructDebugGeneric<E>,
|
||||
}
|
||||
|
||||
// Should expand to:
|
||||
//
|
||||
// impl<E> Display for StructTransparentGeneric<E>
|
||||
// where
|
||||
// E: Display;
|
||||
//
|
||||
// impl<E> Error for StructTransparentGeneric<E>
|
||||
// where
|
||||
// E: Error,
|
||||
// Self: Debug + Display;
|
||||
//
|
||||
#[derive(Error, Debug)]
|
||||
#[error(transparent)]
|
||||
pub struct StructTransparentGeneric<E>(E);
|
||||
Loading…
Add table
Add a link
Reference in a new issue