Closed
Description
forbid
is not honored when it is followed by an allow
on the same "scope level". This compiles, but should fail:
#![forbid(unused)]
#![allow(unused)]
fn square(num: i32) -> i32 {
num * num
}
If we move the allow
down to the function level, it fails to compile as expected:
#![forbid(unused)]
#[allow(unused)]
fn square(num: i32) -> i32 {
num * num
}
The same issue also arises with CLI arguments, which all share the "scope level". That was worked around with in #70918, but once the above is fixed, that hack can likely be removed.
Original description
According to my understanding, the purpose of -F
/forbid
for lints is that they can not be allowed any more. Thus I would expect that calling rustc with -Funused -Aunused
will fail when there is unused code in the file.
However, that is not the case: with that sequence of arguments, unused code is silently accepted.
Metadata
Metadata
Assignees
Labels
Area: Compiler frontend (errors, parsing and HIR)Area: Lints (warnings about flaws in source code) such as unused_mut.Category: This is a bug.Helping to "clean up" bugs with minimal examples and bisectionsHigh priorityRelevant to the compiler team, which will review and decide on the PR/issue.Working group: DiagnosticsPerformance or correctness regression from one stable version to another.
Activity
RalfJung commentedon Apr 5, 2020
This is in fact a stable-to-beta regression: with Rust 1.42, the code still gets rejected as expected.
RalfJung commentedon Apr 5, 2020
Likely regression candidate: #67885
RalfJung commentedon Apr 5, 2020
Interestingly, doing the same via flags in the source code also does not work as expected -- the
allow
overwrites theforbid
!This is also a regression, but not a recent one: with Rust 1.20, the code gets rejected as expected; with Rust 1.21 and later it gets accepted. It is also in direct contradiction with the documentation which says
spastorino commentedon Apr 8, 2020
According to @RalfJung this has possibly regressed on #67885.
I guess this needs confirmation ...
@rustbot ping cleanup
rustbot commentedon Apr 8, 2020
Hey Cleanup Crew ICE-breakers! This bug has been identified as a good
"Cleanup ICE-breaking candidate". In case it's useful, here are some
instructions for tackling these sorts of bugs. Maybe take a look?
Thanks! <3
cc @AminArria @chrissimpkins @contrun @DutchGhost @elshize @ethanboxx @h-michael @HallerPatrick @hdhoang @hellow554 @imtsuki @jakevossen5 @kanru @KarlK90 @LeSeulArtichaut @MAdrianMattocks @matheus-consoli @mental32 @nmccarty @Noah-Kennedy @pard68 @PeytonT @pierreN @Redblueflame @RobbieClarken @RobertoSnap @robjtede @SarthakSingh31 @senden9 @shekohex @sinato @spastorino @turboladen @woshilapin @yerke
69 remaining items