Fix clippy's const fn stability check for CURRENT_RUSTC_VERSION
Since clippy can use a projects MSRV for its lints, it might not want to consider functions as const stable if they have been added lately. Functions that have been stabilized this version use CURRENT_RUSTC_VERSION as their version, which gets then turned into the current version, which might be something like `1.66.0-dev`. The version parser cannot deal with this version, so it has to be stripped off.
This commit is contained in:
parent
334f4535bd
commit
e30b37b84b
@ -367,10 +367,21 @@ fn is_const_fn(tcx: TyCtxt<'_>, def_id: DefId, msrv: Option<RustcVersion>) -> bo
|
||||
// Checking MSRV is manually necessary because `rustc` has no such concept. This entire
|
||||
// function could be removed if `rustc` provided a MSRV-aware version of `is_const_fn`.
|
||||
// as a part of an unimplemented MSRV check https://github.com/rust-lang/rust/issues/65262.
|
||||
|
||||
// HACK(nilstrieb): CURRENT_RUSTC_VERSION can return versions like 1.66.0-dev. `rustc-semver` doesn't accept
|
||||
// the `-dev` version number so we have to strip it off.
|
||||
let short_version = since
|
||||
.as_str()
|
||||
.split('-')
|
||||
.next()
|
||||
.expect("rustc_attr::StabilityLevel::Stable::since` is empty");
|
||||
|
||||
let since = rustc_span::Symbol::intern(short_version);
|
||||
|
||||
crate::meets_msrv(
|
||||
msrv,
|
||||
RustcVersion::parse(since.as_str())
|
||||
.expect("`rustc_attr::StabilityLevel::Stable::since` is ill-formatted"),
|
||||
.unwrap_or_else(|err| panic!("`rustc_attr::StabilityLevel::Stable::since` is ill-formatted: `{since}`, {err:?}")),
|
||||
)
|
||||
} else {
|
||||
// Unstable const fn with the feature enabled.
|
||||
|
Loading…
Reference in New Issue
Block a user