diff options
| author | John Turner <jturner.usa@gmail.com> | 2025-11-15 20:18:36 +0000 |
|---|---|---|
| committer | John Turner <jturner.usa@gmail.com> | 2025-11-15 20:18:36 +0000 |
| commit | c0bd0c9efd429b35354484e24fe272fa1fbfe901 (patch) | |
| tree | 395d4918e6a2b882fc05b285001b6cb72ab10af2 /subprojects/thiserror/tests/test_lints.rs | |
| parent | 0436fbc77039fa3d754f2db5cfefdd437fea51d1 (diff) | |
| parent | 6eba9cd92c295c5389944f6adda1f1e83b2cb008 (diff) | |
| download | gentoo-utils-c0bd0c9efd429b35354484e24fe272fa1fbfe901.tar.gz | |
Merge commit '6eba9cd92c295c5389944f6adda1f1e83b2cb008' as 'subprojects/thiserror'
Diffstat (limited to 'subprojects/thiserror/tests/test_lints.rs')
| -rw-r--r-- | subprojects/thiserror/tests/test_lints.rs | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/subprojects/thiserror/tests/test_lints.rs b/subprojects/thiserror/tests/test_lints.rs new file mode 100644 index 0000000..802ad50 --- /dev/null +++ b/subprojects/thiserror/tests/test_lints.rs @@ -0,0 +1,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); +} |
