To reproduce, build any kind of code that triggers a future breakage report in a crate that allows that warning. For instance:
#![allow(const_patterns_without_partial_eq)]
trait EnumSetType {
type Repr;
}
enum Enum8 { }
impl EnumSetType for Enum8 {
type Repr = u8;
}
#[derive(PartialEq, Eq)]
struct EnumSet<T: EnumSetType> {
__enumset_underlying: T::Repr,
}
const CONST_SET: EnumSet<Enum8> = EnumSet { __enumset_underlying: 3 };
fn main() {
match CONST_SET {
CONST_SET => { /* ok */ } //~ERROR: must implement `PartialEq`
_ => panic!("match fell through?"),
}
}
Build this with cargo, then run cargo report future-incompatibilities --id 1:
The package `fut v0.1.0 (/home/r/src/rust/tmp/fut)` currently triggers the following future incompatibility lints:
> warning: to use a constant of type `EnumSet<Enum8>` in a pattern, the type must implement `PartialEq`
> --> src/main.rs:21:9
> |
> 21 | CONST_SET => { /* ok */ } //~ERROR: must implement `PartialEq`
> | ^^^^^^^^^
> |
> = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
> = note: for more information, see issue #116122 <https://github.com/rust-lang/rust/issues/116122>
> note: the lint level is defined here
> --> src/main.rs:1:10
> |
> 1 | #![allow(const_patterns_without_partial_eq)]
> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
That is quite confusing obviously, since it points at an allow lint level to justify a warning!
It seems to me like these future compat reports shouldn't display that "lint level is defined here" at all, after all, their entire point is that they are not affected by the lint levels in the crate.
Cc @rust-lang/wg-diagnostics
To reproduce, build any kind of code that triggers a future breakage report in a crate that
allows that warning. For instance:Build this with cargo, then run
cargo report future-incompatibilities --id 1:That is quite confusing obviously, since it points at an
allowlint level to justify a warning!It seems to me like these future compat reports shouldn't display that "lint level is defined here" at all, after all, their entire point is that they are not affected by the lint levels in the crate.
Cc @rust-lang/wg-diagnostics