rust/tests/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.rs
2023-01-11 09:32:08 +00:00

54 lines
1.8 KiB
Rust

// ignore-tidy-linelength
#![feature(lint_reasons)]
#![warn(unused_mut)]
#[expect(
unused_mut,
//~^ WARNING this lint expectation is unfulfilled [unfulfilled_lint_expectations]
//~| NOTE `#[warn(unfulfilled_lint_expectations)]` on by default
//~| NOTE this `expect` is overridden by a `allow` attribute before the `unused_mut` lint is triggered
reason = "this `expect` is overridden by a `allow` attribute before the `unused_mut` lint is triggered"
)]
mod foo {
fn bar() {
#[allow(
unused_mut,
reason = "this overrides the previous `expect` lint level and allows the `unused_mut` lint here"
)]
let mut v = 0;
}
}
#[expect(
unused_mut,
//~^ WARNING this lint expectation is unfulfilled [unfulfilled_lint_expectations]
//~| NOTE this `expect` is overridden by a `warn` attribute before the `unused_mut` lint is triggered
reason = "this `expect` is overridden by a `warn` attribute before the `unused_mut` lint is triggered"
)]
mod oof {
#[warn(
unused_mut,
//~^ NOTE the lint level is defined here
reason = "this overrides the previous `expect` lint level and warns about the `unused_mut` lint here"
)]
fn bar() {
let mut v = 0;
//~^ WARNING variable does not need to be mutable [unused_mut]
//~| NOTE this overrides the previous `expect` lint level and warns about the `unused_mut` lint here
//~| HELP remove this `mut`
}
}
#[expect(unused_variables)]
//~^ WARNING this lint expectation is unfulfilled
#[forbid(unused_variables)]
//~^ NOTE the lint level is defined here
fn check_expect_then_forbid() {
let this_is_my_function = 3;
//~^ ERROR unused variable: `this_is_my_function` [unused_variables]
//~| HELP if this is intentional, prefix it with an underscore
}
fn main() {}