Fix 'FIXME' about using NonZeroU32 instead of u32.
It was blocked by #58732 (const fn NonZeroU32::new), which is fixed now.
This commit is contained in:
parent
7bdb5dee7b
commit
84ef603c84
@ -1,6 +1,6 @@
|
||||
//! List of the accepted feature gates.
|
||||
|
||||
use super::{Feature, State};
|
||||
use super::{to_nonzero, Feature, State};
|
||||
use rustc_span::symbol::sym;
|
||||
|
||||
macro_rules! declare_features {
|
||||
@ -14,7 +14,7 @@ macro_rules! declare_features {
|
||||
state: State::Accepted,
|
||||
name: sym::$feature,
|
||||
since: $ver,
|
||||
issue: $issue,
|
||||
issue: to_nonzero($issue),
|
||||
edition: None,
|
||||
description: concat!($($doc,)*),
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
//! List of the active feature gates.
|
||||
|
||||
use super::{Feature, State};
|
||||
use super::{to_nonzero, Feature, State};
|
||||
|
||||
use rustc_span::edition::Edition;
|
||||
use rustc_span::symbol::{sym, Symbol};
|
||||
@ -29,7 +29,7 @@ macro_rules! declare_features {
|
||||
state: State::Active { set: set!($feature) },
|
||||
name: sym::$feature,
|
||||
since: $ver,
|
||||
issue: $issue,
|
||||
issue: to_nonzero($issue),
|
||||
edition: $edition,
|
||||
description: concat!($($doc,)*),
|
||||
}
|
||||
|
@ -46,17 +46,11 @@ pub struct Feature {
|
||||
pub state: State,
|
||||
pub name: Symbol,
|
||||
pub since: &'static str,
|
||||
issue: Option<u32>, // FIXME: once #58732 is done make this an Option<NonZeroU32>
|
||||
issue: Option<NonZeroU32>,
|
||||
pub edition: Option<Edition>,
|
||||
description: &'static str,
|
||||
}
|
||||
|
||||
impl Feature {
|
||||
fn issue(&self) -> Option<NonZeroU32> {
|
||||
self.issue.and_then(NonZeroU32::new)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
pub enum Stability {
|
||||
Unstable,
|
||||
@ -102,8 +96,8 @@ impl UnstableFeatures {
|
||||
fn find_lang_feature_issue(feature: Symbol) -> Option<NonZeroU32> {
|
||||
if let Some(info) = ACTIVE_FEATURES.iter().find(|t| t.name == feature) {
|
||||
// FIXME (#28244): enforce that active features have issue numbers
|
||||
// assert!(info.issue().is_some())
|
||||
info.issue()
|
||||
// assert!(info.issue.is_some())
|
||||
info.issue
|
||||
} else {
|
||||
// search in Accepted, Removed, or Stable Removed features
|
||||
let found = ACCEPTED_FEATURES
|
||||
@ -112,12 +106,19 @@ fn find_lang_feature_issue(feature: Symbol) -> Option<NonZeroU32> {
|
||||
.chain(STABLE_REMOVED_FEATURES)
|
||||
.find(|t| t.name == feature);
|
||||
match found {
|
||||
Some(found) => found.issue(),
|
||||
Some(found) => found.issue,
|
||||
None => panic!("feature `{}` is not declared anywhere", feature),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const fn to_nonzero(n: Option<u32>) -> Option<NonZeroU32> {
|
||||
match n {
|
||||
None => None,
|
||||
Some(n) => NonZeroU32::new(n),
|
||||
}
|
||||
}
|
||||
|
||||
pub enum GateIssue {
|
||||
Language,
|
||||
Library(Option<NonZeroU32>),
|
||||
|
@ -1,6 +1,6 @@
|
||||
//! List of the removed feature gates.
|
||||
|
||||
use super::{Feature, State};
|
||||
use super::{to_nonzero, Feature, State};
|
||||
use rustc_span::symbol::sym;
|
||||
|
||||
macro_rules! declare_features {
|
||||
@ -14,7 +14,7 @@ macro_rules! declare_features {
|
||||
state: State::Removed { reason: $reason },
|
||||
name: sym::$feature,
|
||||
since: $ver,
|
||||
issue: $issue,
|
||||
issue: to_nonzero($issue),
|
||||
edition: None,
|
||||
description: concat!($($doc,)*),
|
||||
}
|
||||
@ -32,7 +32,7 @@ macro_rules! declare_features {
|
||||
state: State::Stabilized { reason: None },
|
||||
name: sym::$feature,
|
||||
since: $ver,
|
||||
issue: $issue,
|
||||
issue: to_nonzero($issue),
|
||||
edition: None,
|
||||
description: concat!($($doc,)*),
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user