Don't store a redundant span in user-type projections
This span is already present in the corresponding `CanonicalUserTypeAnnotation`, and can be retrieved via the annotation's ID.
This commit is contained in:
parent
a64efc72d0
commit
8bb574fdd3
4 changed files with 13 additions and 24 deletions
|
@ -1494,7 +1494,7 @@ pub struct SourceScopeLocalData {
|
|||
/// &'static str`.
|
||||
#[derive(Clone, Debug, TyEncodable, TyDecodable, HashStable, TypeFoldable, TypeVisitable)]
|
||||
pub struct UserTypeProjections {
|
||||
pub contents: Vec<(UserTypeProjection, Span)>,
|
||||
pub contents: Vec<UserTypeProjection>,
|
||||
}
|
||||
|
||||
impl<'tcx> UserTypeProjections {
|
||||
|
@ -1506,26 +1506,17 @@ impl<'tcx> UserTypeProjections {
|
|||
self.contents.is_empty()
|
||||
}
|
||||
|
||||
pub fn projections_and_spans(
|
||||
&self,
|
||||
) -> impl Iterator<Item = &(UserTypeProjection, Span)> + ExactSizeIterator {
|
||||
pub fn projections(&self) -> impl Iterator<Item = &UserTypeProjection> + ExactSizeIterator {
|
||||
self.contents.iter()
|
||||
}
|
||||
|
||||
pub fn projections(&self) -> impl Iterator<Item = &UserTypeProjection> + ExactSizeIterator {
|
||||
self.contents.iter().map(|&(ref user_type, _span)| user_type)
|
||||
}
|
||||
|
||||
pub fn push_user_type(mut self, base_user_ty: UserTypeAnnotationIndex, span: Span) -> Self {
|
||||
self.contents.push((UserTypeProjection { base: base_user_ty, projs: vec![] }, span));
|
||||
pub fn push_user_type(mut self, base_user_type: UserTypeAnnotationIndex) -> Self {
|
||||
self.contents.push(UserTypeProjection { base: base_user_type, projs: vec![] });
|
||||
self
|
||||
}
|
||||
|
||||
fn map_projections(
|
||||
mut self,
|
||||
mut f: impl FnMut(UserTypeProjection) -> UserTypeProjection,
|
||||
) -> Self {
|
||||
self.contents = self.contents.into_iter().map(|(proj, span)| (f(proj), span)).collect();
|
||||
fn map_projections(mut self, f: impl FnMut(UserTypeProjection) -> UserTypeProjection) -> Self {
|
||||
self.contents = self.contents.into_iter().map(f).collect();
|
||||
self
|
||||
}
|
||||
|
||||
|
|
|
@ -857,7 +857,7 @@ macro_rules! make_mir_visitor {
|
|||
source_info: *source_info,
|
||||
});
|
||||
if let Some(user_ty) = user_ty {
|
||||
for (user_ty, _) in & $($mutability)? user_ty.contents {
|
||||
for user_ty in & $($mutability)? user_ty.contents {
|
||||
self.visit_user_type_projection(user_ty);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue