mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 23:04:33 +00:00
Rollup merge of #88481 - bjorn3:remove_feature_gates, r=cjgillot
Remove some feature gates The first commit removes various feature gates that are unused. The second commit replaces some `Fn` implementations with `Iterator` implementations, which is much cleaner IMO. The third commit replaces an unboxed_closures feature gate with min_specialization. For some reason the unboxed_closures feature gate suppresses the min_specialization feature gate from triggering on an `TrustedStep` impl. The last comment just turns a regular comment into a doc comment as drive by cleanup. I can move it to a separate PR if preferred.
This commit is contained in:
commit
5215b855b0
@ -144,7 +144,7 @@ impl<R> MemberConstraintSet<'tcx, R>
|
|||||||
where
|
where
|
||||||
R: Copy + Hash + Eq,
|
R: Copy + Hash + Eq,
|
||||||
{
|
{
|
||||||
crate fn all_indices(&self) -> impl Iterator<Item = NllMemberConstraintIndex> {
|
crate fn all_indices(&self) -> impl Iterator<Item = NllMemberConstraintIndex> + '_ {
|
||||||
self.constraints.indices()
|
self.constraints.indices()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -497,7 +497,7 @@ impl<'tcx> RegionInferenceContext<'tcx> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Returns an iterator over all the region indices.
|
/// Returns an iterator over all the region indices.
|
||||||
pub fn regions(&self) -> impl Iterator<Item = RegionVid> {
|
pub fn regions(&self) -> impl Iterator<Item = RegionVid> + '_ {
|
||||||
self.definitions.indices()
|
self.definitions.indices()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
//! This API is completely unstable and subject to change.
|
//! This API is completely unstable and subject to change.
|
||||||
|
|
||||||
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
|
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
|
||||||
#![feature(allow_internal_unstable)]
|
|
||||||
#![feature(array_windows)]
|
#![feature(array_windows)]
|
||||||
#![feature(associated_type_bounds)]
|
#![feature(associated_type_bounds)]
|
||||||
#![feature(auto_traits)]
|
#![feature(auto_traits)]
|
||||||
|
@ -2,9 +2,8 @@
|
|||||||
#![feature(bench_black_box)]
|
#![feature(bench_black_box)]
|
||||||
#![feature(extend_one)]
|
#![feature(extend_one)]
|
||||||
#![feature(iter_zip)]
|
#![feature(iter_zip)]
|
||||||
#![feature(unboxed_closures)]
|
#![feature(min_specialization)]
|
||||||
#![feature(test)]
|
#![feature(test)]
|
||||||
#![feature(fn_traits)]
|
|
||||||
|
|
||||||
pub mod bit_set;
|
pub mod bit_set;
|
||||||
pub mod vec;
|
pub mod vec;
|
||||||
|
@ -3,9 +3,9 @@ use rustc_serialize::{Decodable, Decoder, Encodable, Encoder};
|
|||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
use std::hash::Hash;
|
use std::hash::Hash;
|
||||||
use std::iter::{self, FromIterator};
|
use std::iter::FromIterator;
|
||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
use std::ops::{Index, IndexMut, Range, RangeBounds};
|
use std::ops::{Index, IndexMut, RangeBounds};
|
||||||
use std::slice;
|
use std::slice;
|
||||||
use std::vec;
|
use std::vec;
|
||||||
|
|
||||||
@ -518,8 +518,6 @@ impl<I: Idx, T: fmt::Debug> fmt::Debug for IndexVec<I, T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub type Enumerated<I, J> = iter::Map<iter::Enumerate<J>, IntoIdx<I>>;
|
|
||||||
|
|
||||||
impl<I: Idx, T> IndexVec<I, T> {
|
impl<I: Idx, T> IndexVec<I, T> {
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
@ -596,8 +594,10 @@ impl<I: Idx, T> IndexVec<I, T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn into_iter_enumerated(self) -> Enumerated<I, vec::IntoIter<T>> {
|
pub fn into_iter_enumerated(
|
||||||
self.raw.into_iter().enumerate().map(IntoIdx { _marker: PhantomData })
|
self,
|
||||||
|
) -> impl DoubleEndedIterator<Item = (I, T)> + ExactSizeIterator {
|
||||||
|
self.raw.into_iter().enumerate().map(|(n, t)| (I::new(n), t))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
@ -606,13 +606,15 @@ impl<I: Idx, T> IndexVec<I, T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn iter_enumerated(&self) -> Enumerated<I, slice::Iter<'_, T>> {
|
pub fn iter_enumerated(
|
||||||
self.raw.iter().enumerate().map(IntoIdx { _marker: PhantomData })
|
&self,
|
||||||
|
) -> impl DoubleEndedIterator<Item = (I, &T)> + ExactSizeIterator + '_ {
|
||||||
|
self.raw.iter().enumerate().map(|(n, t)| (I::new(n), t))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn indices(&self) -> iter::Map<Range<usize>, IntoIdx<I>> {
|
pub fn indices(&self) -> impl DoubleEndedIterator<Item = I> + ExactSizeIterator + 'static {
|
||||||
(0..self.len()).map(IntoIdx { _marker: PhantomData })
|
(0..self.len()).map(|n| I::new(n))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
@ -621,8 +623,10 @@ impl<I: Idx, T> IndexVec<I, T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn iter_enumerated_mut(&mut self) -> Enumerated<I, slice::IterMut<'_, T>> {
|
pub fn iter_enumerated_mut(
|
||||||
self.raw.iter_mut().enumerate().map(IntoIdx { _marker: PhantomData })
|
&mut self,
|
||||||
|
) -> impl DoubleEndedIterator<Item = (I, &mut T)> + ExactSizeIterator + '_ {
|
||||||
|
self.raw.iter_mut().enumerate().map(|(n, t)| (I::new(n), t))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
@ -638,7 +642,7 @@ impl<I: Idx, T> IndexVec<I, T> {
|
|||||||
&'a mut self,
|
&'a mut self,
|
||||||
range: R,
|
range: R,
|
||||||
) -> impl Iterator<Item = (I, T)> + 'a {
|
) -> impl Iterator<Item = (I, T)> + 'a {
|
||||||
self.raw.drain(range).enumerate().map(IntoIdx { _marker: PhantomData })
|
self.raw.drain(range).enumerate().map(|(n, t)| (I::new(n), t))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
@ -832,36 +836,5 @@ impl<'a, I: Idx, T> IntoIterator for &'a mut IndexVec<I, T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct IntoIdx<I: Idx> {
|
|
||||||
_marker: PhantomData<fn(&I)>,
|
|
||||||
}
|
|
||||||
impl<I: Idx, T> FnOnce<((usize, T),)> for IntoIdx<I> {
|
|
||||||
type Output = (I, T);
|
|
||||||
|
|
||||||
extern "rust-call" fn call_once(self, ((n, t),): ((usize, T),)) -> Self::Output {
|
|
||||||
(I::new(n), t)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<I: Idx, T> FnMut<((usize, T),)> for IntoIdx<I> {
|
|
||||||
extern "rust-call" fn call_mut(&mut self, ((n, t),): ((usize, T),)) -> Self::Output {
|
|
||||||
(I::new(n), t)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<I: Idx> FnOnce<(usize,)> for IntoIdx<I> {
|
|
||||||
type Output = I;
|
|
||||||
|
|
||||||
extern "rust-call" fn call_once(self, (n,): (usize,)) -> Self::Output {
|
|
||||||
I::new(n)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<I: Idx> FnMut<(usize,)> for IntoIdx<I> {
|
|
||||||
extern "rust-call" fn call_mut(&mut self, (n,): (usize,)) -> Self::Output {
|
|
||||||
I::new(n)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests;
|
mod tests;
|
||||||
|
@ -26,7 +26,6 @@
|
|||||||
//! This API is completely unstable and subject to change.
|
//! This API is completely unstable and subject to change.
|
||||||
|
|
||||||
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
|
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
|
||||||
#![cfg_attr(test, feature(test))]
|
|
||||||
#![feature(array_windows)]
|
#![feature(array_windows)]
|
||||||
#![feature(bool_to_option)]
|
#![feature(bool_to_option)]
|
||||||
#![feature(box_patterns)]
|
#![feature(box_patterns)]
|
||||||
|
@ -41,13 +41,11 @@
|
|||||||
#![feature(once_cell)]
|
#![feature(once_cell)]
|
||||||
#![feature(min_specialization)]
|
#![feature(min_specialization)]
|
||||||
#![feature(trusted_len)]
|
#![feature(trusted_len)]
|
||||||
#![feature(test)]
|
|
||||||
#![feature(in_band_lifetimes)]
|
#![feature(in_band_lifetimes)]
|
||||||
#![feature(crate_visibility_modifier)]
|
#![feature(crate_visibility_modifier)]
|
||||||
#![feature(associated_type_bounds)]
|
#![feature(associated_type_bounds)]
|
||||||
#![feature(rustc_attrs)]
|
#![feature(rustc_attrs)]
|
||||||
#![feature(half_open_range_patterns)]
|
#![feature(half_open_range_patterns)]
|
||||||
#![feature(exclusive_range_pattern)]
|
|
||||||
#![feature(control_flow_enum)]
|
#![feature(control_flow_enum)]
|
||||||
#![feature(associated_type_defaults)]
|
#![feature(associated_type_defaults)]
|
||||||
#![feature(iter_zip)]
|
#![feature(iter_zip)]
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
// This module contains some shared code for encoding and decoding various
|
//! This module contains some shared code for encoding and decoding various
|
||||||
// things from the `ty` module, and in particular implements support for
|
//! things from the `ty` module, and in particular implements support for
|
||||||
// "shorthands" which allow to have pointers back into the already encoded
|
//! "shorthands" which allow to have pointers back into the already encoded
|
||||||
// stream instead of re-encoding the same thing twice.
|
//! stream instead of re-encoding the same thing twice.
|
||||||
//
|
//!
|
||||||
// The functionality in here is shared between persisting to crate metadata and
|
//! The functionality in here is shared between persisting to crate metadata and
|
||||||
// persisting to incr. comp. caches.
|
//! persisting to incr. comp. caches.
|
||||||
|
|
||||||
use crate::arena::ArenaAllocatable;
|
use crate::arena::ArenaAllocatable;
|
||||||
use crate::infer::canonical::{CanonicalVarInfo, CanonicalVarInfos};
|
use crate::infer::canonical::{CanonicalVarInfo, CanonicalVarInfos};
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
use core::slice::Iter;
|
|
||||||
use rustc_data_structures::fx::FxHashMap;
|
use rustc_data_structures::fx::FxHashMap;
|
||||||
use rustc_index::vec::{Enumerated, IndexVec};
|
use rustc_index::vec::IndexVec;
|
||||||
use rustc_middle::mir::*;
|
use rustc_middle::mir::*;
|
||||||
use rustc_middle::ty::{ParamEnv, Ty, TyCtxt};
|
use rustc_middle::ty::{ParamEnv, Ty, TyCtxt};
|
||||||
use rustc_span::Span;
|
use rustc_span::Span;
|
||||||
@ -337,7 +336,9 @@ impl MovePathLookup {
|
|||||||
|
|
||||||
/// An enumerated iterator of `local`s and their associated
|
/// An enumerated iterator of `local`s and their associated
|
||||||
/// `MovePathIndex`es.
|
/// `MovePathIndex`es.
|
||||||
pub fn iter_locals_enumerated(&self) -> Enumerated<Local, Iter<'_, MovePathIndex>> {
|
pub fn iter_locals_enumerated(
|
||||||
|
&self,
|
||||||
|
) -> impl DoubleEndedIterator<Item = (Local, &MovePathIndex)> + ExactSizeIterator {
|
||||||
self.locals.iter_enumerated()
|
self.locals.iter_enumerated()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
#![feature(exhaustive_patterns)]
|
#![feature(exhaustive_patterns)]
|
||||||
#![feature(min_specialization)]
|
#![feature(min_specialization)]
|
||||||
#![feature(step_trait)]
|
#![feature(step_trait)]
|
||||||
#![feature(unchecked_math)]
|
|
||||||
|
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
|
|
||||||
|
@ -6,8 +6,6 @@
|
|||||||
|
|
||||||
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
|
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
|
||||||
#![feature(control_flow_enum)]
|
#![feature(control_flow_enum)]
|
||||||
#![feature(half_open_range_patterns)]
|
|
||||||
#![feature(exclusive_range_pattern)]
|
|
||||||
#![feature(nll)]
|
#![feature(nll)]
|
||||||
#![recursion_limit = "256"]
|
#![recursion_limit = "256"]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user