Streamline find_lang_feature_issue
.
It currently processes `ACTIVE_FEATURES` separately from `ACCEPTED_FEATURES`, `REMOVED_FEATURES`, and `STABLE_REMOVED_FEATURES`, for no good reason. This commit treats them uniformly.
This commit is contained in:
parent
3c1b60c1b4
commit
1ddb2872dd
@ -79,8 +79,8 @@ pub enum UnstableFeatures {
|
||||
impl UnstableFeatures {
|
||||
/// This takes into account `RUSTC_BOOTSTRAP`.
|
||||
///
|
||||
/// If `krate` is [`Some`], then setting `RUSTC_BOOTSTRAP=krate` will enable the nightly features.
|
||||
/// Otherwise, only `RUSTC_BOOTSTRAP=1` will work.
|
||||
/// If `krate` is [`Some`], then setting `RUSTC_BOOTSTRAP=krate` will enable the nightly
|
||||
/// features. Otherwise, only `RUSTC_BOOTSTRAP=1` will work.
|
||||
pub fn from_environment(krate: Option<&str>) -> Self {
|
||||
// `true` if this is a feature-staged build, i.e., on the beta or stable channel.
|
||||
let disable_unstable_features =
|
||||
@ -107,21 +107,20 @@ impl UnstableFeatures {
|
||||
}
|
||||
|
||||
fn find_lang_feature_issue(feature: Symbol) -> Option<NonZeroU32> {
|
||||
if let Some(info) = ACTIVE_FEATURES.iter().find(|t| t.name == feature) {
|
||||
info.issue
|
||||
} else {
|
||||
// search in Accepted, Removed, or Stable Removed features
|
||||
let found = ACCEPTED_FEATURES
|
||||
// Search in all the feature lists.
|
||||
let found = []
|
||||
.iter()
|
||||
.chain(ACTIVE_FEATURES)
|
||||
.chain(ACCEPTED_FEATURES)
|
||||
.chain(REMOVED_FEATURES)
|
||||
.chain(STABLE_REMOVED_FEATURES)
|
||||
.find(|t| t.name == feature);
|
||||
|
||||
match found {
|
||||
Some(found) => found.issue,
|
||||
None => panic!("feature `{feature}` is not declared anywhere"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const fn to_nonzero(n: Option<u32>) -> Option<NonZeroU32> {
|
||||
// Can be replaced with `n.and_then(NonZeroU32::new)` if that is ever usable
|
||||
|
Loading…
x
Reference in New Issue
Block a user