2023-08-24 14:32:12 -05:00
|
|
|
//@aux-build:proc_macros.rs
|
2023-03-24 08:04:35 -05:00
|
|
|
#![allow(unused)]
|
|
|
|
#![warn(clippy::allow_attributes)]
|
2023-07-02 07:35:19 -05:00
|
|
|
#![no_main]
|
2023-03-24 08:04:35 -05:00
|
|
|
|
2023-07-02 07:35:19 -05:00
|
|
|
extern crate proc_macros;
|
|
|
|
use proc_macros::{external, with_span};
|
2023-03-24 08:04:35 -05:00
|
|
|
|
|
|
|
// Using clippy::needless_borrow just as a placeholder, it isn't relevant.
|
|
|
|
|
|
|
|
// Should lint
|
|
|
|
#[allow(dead_code)]
|
|
|
|
struct T1;
|
|
|
|
|
|
|
|
struct T2; // Should not lint
|
|
|
|
#[deny(clippy::needless_borrow)] // Should not lint
|
|
|
|
struct T3;
|
|
|
|
#[warn(clippy::needless_borrow)] // Should not lint
|
|
|
|
struct T4;
|
|
|
|
// `panic = "unwind"` should always be true
|
|
|
|
#[cfg_attr(panic = "unwind", allow(dead_code))]
|
|
|
|
struct CfgT;
|
|
|
|
|
2023-09-10 13:17:47 -05:00
|
|
|
#[allow(clippy::allow_attributes, unused)]
|
|
|
|
struct Allowed;
|
|
|
|
|
|
|
|
#[expect(clippy::allow_attributes)]
|
|
|
|
#[allow(unused)]
|
|
|
|
struct Expected;
|
|
|
|
|
2023-07-02 07:35:19 -05:00
|
|
|
fn ignore_external() {
|
|
|
|
external! {
|
|
|
|
#[allow(clippy::needless_borrow)] // Should not lint
|
|
|
|
fn a() {}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fn ignore_proc_macro() {
|
|
|
|
with_span! {
|
|
|
|
span
|
|
|
|
#[allow(clippy::needless_borrow)] // Should not lint
|
|
|
|
fn a() {}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-24 08:04:35 -05:00
|
|
|
fn ignore_inner_attr() {
|
|
|
|
#![allow(unused)] // Should not lint
|
|
|
|
}
|
2024-02-10 16:31:36 -06:00
|
|
|
|
|
|
|
#[clippy::msrv = "1.81"]
|
|
|
|
fn msrv_1_81() {
|
|
|
|
#[allow(unused)]
|
|
|
|
let x = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
#[clippy::msrv = "1.80"]
|
|
|
|
fn msrv_1_80() {
|
|
|
|
#[allow(unused)]
|
|
|
|
let x = 1;
|
|
|
|
}
|
2024-09-12 04:34:07 -05:00
|
|
|
|
|
|
|
#[deny(clippy::allow_attributes)]
|
|
|
|
fn deny_allow_attributes() -> Option<u8> {
|
|
|
|
let allow = None;
|
|
|
|
allow?;
|
|
|
|
Some(42)
|
|
|
|
}
|