1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
#![allow(clippy::mixed_attributes_style)]
use thiserror::Error;
pub use std::error::Error;
#[test]
fn test_allow_attributes() {
#![deny(clippy::allow_attributes)]
#[derive(Error, Debug)]
#[error("...")]
pub struct MyError(#[from] anyhow::Error);
let _: MyError;
}
#[test]
fn test_unused_qualifications() {
#![deny(unused_qualifications)]
// Expansion of derive(Error) macro can't know whether something like
// std::error::Error is already imported in the caller's scope so it must
// suppress unused_qualifications.
#[derive(Error, Debug)]
#[error("...")]
pub struct MyError;
let _: MyError;
}
#[test]
fn test_needless_lifetimes() {
#![allow(dead_code)]
#![deny(clippy::elidable_lifetime_names, clippy::needless_lifetimes)]
#[derive(Error, Debug)]
#[error("...")]
pub enum MyError<'a> {
A(#[from] std::io::Error),
B(&'a ()),
}
let _: MyError;
}
#[test]
fn test_deprecated() {
#![deny(deprecated)]
#[derive(Error, Debug)]
#[deprecated]
#[error("...")]
pub struct DeprecatedStruct;
#[derive(Error, Debug)]
#[error("{message} {}", .message)]
pub struct DeprecatedStructField {
#[deprecated]
message: String,
}
#[derive(Error, Debug)]
#[deprecated]
pub enum DeprecatedEnum {
#[error("...")]
Variant,
}
#[derive(Error, Debug)]
pub enum DeprecatedVariant {
#[deprecated]
#[error("...")]
Variant,
}
#[derive(Error, Debug)]
pub enum DeprecatedFrom {
#[error(transparent)]
Variant(
#[from]
#[allow(deprecated)]
DeprecatedStruct,
),
}
#[allow(deprecated)]
let _: DeprecatedStruct;
#[allow(deprecated)]
let _: DeprecatedStructField;
#[allow(deprecated)]
let _ = DeprecatedEnum::Variant;
#[allow(deprecated)]
let _ = DeprecatedVariant::Variant;
#[allow(deprecated)]
let _ = DeprecatedFrom::Variant(DeprecatedStruct);
}
|