thiserror/tests/test_lints.rs
David Tolnay 0ba7d01e8e
Add tests of deprecated error types
error: use of deprecated struct `test_deprecated::DeprecatedStruct`
      --> tests/test_lints.rs:44:16
       |
    44 |     pub struct DeprecatedStruct;
       |                ^^^^^^^^^^^^^^^^
       |
    note: the lint level is defined here
      --> tests/test_lints.rs:39:13
       |
    39 |     #![deny(deprecated)]
       |             ^^^^^^^^^^

    error: use of deprecated struct `test_deprecated::DeprecatedStruct`
      --> tests/test_lints.rs:44:16
       |
    44 |     pub struct DeprecatedStruct;
       |                ^^^^^^^^^^^^^^^^

    error: use of deprecated enum `test_deprecated::DeprecatedEnum`
      --> tests/test_lints.rs:55:14
       |
    55 |     pub enum DeprecatedEnum {
       |              ^^^^^^^^^^^^^^
2024-12-07 08:58:12 -08:00

75 lines
1.5 KiB
Rust

#![allow(clippy::mixed_attributes_style)]
use thiserror::Error;
pub use std::error::Error;
#[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::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,
}
#[allow(deprecated)]
let _: DeprecatedStruct;
#[allow(deprecated)]
let _: DeprecatedStructField;
#[allow(deprecated)]
let _ = DeprecatedEnum::Variant;
#[allow(deprecated)]
let _ = DeprecatedVariant::Variant;
}