summaryrefslogtreecommitdiff
path: root/vendor/thiserror/tests/test_from.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/thiserror/tests/test_from.rs')
-rw-r--r--vendor/thiserror/tests/test_from.rs64
1 files changed, 64 insertions, 0 deletions
diff --git a/vendor/thiserror/tests/test_from.rs b/vendor/thiserror/tests/test_from.rs
new file mode 100644
index 0000000..51af40b
--- /dev/null
+++ b/vendor/thiserror/tests/test_from.rs
@@ -0,0 +1,64 @@
+#![allow(clippy::extra_unused_type_parameters)]
+
+use std::io;
+use thiserror::Error;
+
+#[derive(Error, Debug)]
+#[error("...")]
+pub struct ErrorStruct {
+ #[from]
+ source: io::Error,
+}
+
+#[derive(Error, Debug)]
+#[error("...")]
+pub struct ErrorStructOptional {
+ #[from]
+ source: Option<io::Error>,
+}
+
+#[derive(Error, Debug)]
+#[error("...")]
+pub struct ErrorTuple(#[from] io::Error);
+
+#[derive(Error, Debug)]
+#[error("...")]
+pub struct ErrorTupleOptional(#[from] Option<io::Error>);
+
+#[derive(Error, Debug)]
+#[error("...")]
+pub enum ErrorEnum {
+ Test {
+ #[from]
+ source: io::Error,
+ },
+}
+
+#[derive(Error, Debug)]
+#[error("...")]
+pub enum ErrorEnumOptional {
+ Test {
+ #[from]
+ source: Option<io::Error>,
+ },
+}
+
+#[derive(Error, Debug)]
+#[error("...")]
+pub enum Many {
+ Any(#[from] anyhow::Error),
+ Io(#[from] io::Error),
+}
+
+fn assert_impl<T: From<io::Error>>() {}
+
+#[test]
+fn test_from() {
+ assert_impl::<ErrorStruct>();
+ assert_impl::<ErrorStructOptional>();
+ assert_impl::<ErrorTuple>();
+ assert_impl::<ErrorTupleOptional>();
+ assert_impl::<ErrorEnum>();
+ assert_impl::<ErrorEnumOptional>();
+ assert_impl::<Many>();
+}