// If there are no match guards then we don't need any fake borrows,
// so don't track them.
let mut fake_borrows = if has_guard && tcx.generate_borrow_of_any_match_input() {
- Some(FxHashMap())
+ Some(FxHashMap::default())
} else {
None
};
end_block.unit()
}
- pub fn expr_into_pattern(
+ pub(super) fn expr_into_pattern(
&mut self,
mut block: BasicBlock,
irrefutable_pat: Pattern<'tcx>,
block,
Statement {
source_info,
- kind: StatementKind::FakeRead(FakeReadCause::ForLet, place.clone()),
+ kind: StatementKind::FakeRead(FakeReadCause::ForLet, place),
},
);
},
..
},
- user_ty: ascription_user_ty,
+ user_ty: pat_ascription_ty,
user_ty_span,
} => {
let place =
Statement {
source_info: ty_source_info,
kind: StatementKind::AscribeUserType(
- place.clone(),
+ place,
ty::Variance::Invariant,
- ascription_user_ty,
+ box pat_ascription_ty.user_ty(),
),
},
);
);
}
- pub fn visit_bindings(
+ pub(super) fn visit_bindings(
&mut self,
pattern: &Pattern<'tcx>,
- mut pattern_user_ty: Option<(UserTypeAnnotation<'tcx>, Span)>,
+ mut pattern_user_ty: Option<(PatternTypeAnnotation<'tcx>, Span)>,
f: &mut impl FnMut(
&mut Self,
Mutability,
NodeId,
Span,
Ty<'tcx>,
- Option<(UserTypeAnnotation<'tcx>, Span)>,
+ Option<(PatternTypeAnnotation<'tcx>, Span)>,
),
) {
match *pattern.kind {
struct Ascription<'tcx> {
span: Span,
source: Place<'tcx>,
- user_ty: UserTypeAnnotation<'tcx>,
+ user_ty: PatternTypeAnnotation<'tcx>,
}
#[derive(Clone, Debug)]
kind: StatementKind::AscribeUserType(
ascription.source.clone(),
ty::Variance::Covariant,
- ascription.user_ty,
+ box ascription.user_ty.user_ty(),
),
},
);
num_patterns: usize,
var_id: NodeId,
var_ty: Ty<'tcx>,
- user_var_ty: Option<(UserTypeAnnotation<'tcx>, Span)>,
+ user_var_ty: Option<(PatternTypeAnnotation<'tcx>, Span)>,
has_guard: ArmHasGuard,
opt_match_place: Option<(Option<Place<'tcx>>, Span)>,
pat_span: Span,
let local = LocalDecl::<'tcx> {
mutability,
ty: var_ty,
- user_ty: user_var_ty,
+ user_ty: user_var_ty.map(|(pat_ty, span)|(pat_ty.user_ty(), span)),
name: Some(name),
source_info,
visibility_scope,