Use let_else in even more places

This commit is contained in:
est31 2022-01-18 20:26:13 +01:00
parent 9ad5d82f82
commit b2dd1377c7
9 changed files with 134 additions and 140 deletions

View File

@ -1493,7 +1493,7 @@ fn generator_layout_and_saved_local_names<'tcx>(
let state_arg = mir::Local::new(1);
for var in &body.var_debug_info {
let place = if let mir::VarDebugInfoContents::Place(p) = var.value { p } else { continue };
let mir::VarDebugInfoContents::Place(place) = &var.value else { continue };
if place.local != state_arg {
continue;
}

View File

@ -7,6 +7,7 @@
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
#![feature(bool_to_option)]
#![feature(crate_visibility_modifier)]
#![feature(let_else)]
#![feature(extern_types)]
#![feature(nll)]
#![recursion_limit = "256"]

View File

@ -1,5 +1,6 @@
#![feature(bool_to_option)]
#![feature(box_patterns)]
#![feature(let_else)]
#![feature(internal_output_capture)]
#![feature(thread_spawn_unchecked)]
#![feature(nll)]

View File

@ -717,7 +717,9 @@ fn run<R, F: FnOnce(&mut Self) -> R>(&mut self, is_const: bool, action: F) -> R
}
fn should_ignore_fn(ret_ty: &ast::FnRetTy) -> bool {
if let ast::FnRetTy::Ty(ref ty) = ret_ty {
let ast::FnRetTy::Ty(ref ty) = ret_ty else {
return false;
};
fn involves_impl_trait(ty: &ast::Ty) -> bool {
match ty.kind {
ast::TyKind::ImplTrait(..) => true,
@ -734,8 +736,9 @@ fn involves_impl_trait(ty: &ast::Ty) -> bool {
data.args.iter().any(|arg| match arg {
ast::AngleBracketedArg::Arg(arg) => match arg {
ast::GenericArg::Type(ty) => involves_impl_trait(ty),
ast::GenericArg::Lifetime(_)
| ast::GenericArg::Const(_) => false,
ast::GenericArg::Lifetime(_) | ast::GenericArg::Const(_) => {
false
}
},
ast::AngleBracketedArg::Constraint(c) => match c.kind {
ast::AssocConstraintKind::Bound { .. } => true,
@ -765,9 +768,6 @@ fn any_involves_impl_trait<'a, I: Iterator<Item = &'a P<ast::Ty>>>(mut it: I) ->
}
involves_impl_trait(ty)
} else {
false
}
}
fn is_sig_const(sig: &ast::FnSig) -> bool {

View File

@ -1328,7 +1328,9 @@ fn test_candidates_with_or(
let mut otherwise = None;
for match_pair in match_pairs {
if let PatKind::Or { ref pats } = *match_pair.pattern.kind {
let PatKind::Or { ref pats } = &*match_pair.pattern.kind else {
bug!("Or-patterns should have been sorted to the end");
};
let or_span = match_pair.pattern.span;
let place = match_pair.place;
@ -1342,9 +1344,6 @@ fn test_candidates_with_or(
fake_borrows,
);
});
} else {
bug!("Or-patterns should have been sorted to the end");
}
}
let remainder_start = otherwise.unwrap_or_else(|| self.cfg.start_new_block());

View File

@ -88,11 +88,8 @@ pub(super) fn add_cases_to_switch<'pat>(
switch_ty: Ty<'tcx>,
options: &mut FxIndexMap<&'tcx ty::Const<'tcx>, u128>,
) -> bool {
let match_pair = match candidate.match_pairs.iter().find(|mp| mp.place == *test_place) {
Some(match_pair) => match_pair,
_ => {
let Some(match_pair) = candidate.match_pairs.iter().find(|mp| mp.place == *test_place) else {
return false;
}
};
match *match_pair.pattern.kind {

View File

@ -1162,9 +1162,7 @@ fn smart_resolve_context_dependent_help(
ident: Symbol,
kind: &AssocItemKind,
) -> Option<Symbol> {
let module = if let Some((module, _)) = self.current_trait_ref {
module
} else {
let Some((module, _)) = &self.current_trait_ref else {
return None;
};
if ident == kw::Underscore {

View File

@ -1000,7 +1000,9 @@ fn visit_ty(&mut self, ty: &'tcx hir::Ty<'tcx>) {
// `fn foo<'a>() -> MyAnonTy<'a> { ... }`
// ^ ^this gets resolved in the current scope
for lifetime in lifetimes {
if let hir::GenericArg::Lifetime(lifetime) = lifetime {
let hir::GenericArg::Lifetime(lifetime) = lifetime else {
continue
};
self.visit_lifetime(lifetime);
// Check for predicates like `impl for<'a> Trait<impl OtherTrait<'a>>`
@ -1008,19 +1010,19 @@ fn visit_ty(&mut self, ty: &'tcx hir::Ty<'tcx>) {
// well-supported at the moment, so this doesn't work.
// In the future, this should be fixed and this error should be removed.
let def = self.map.defs.get(&lifetime.hir_id).cloned();
if let Some(Region::LateBound(_, _, def_id, _)) = def {
if let Some(def_id) = def_id.as_local() {
let Some(Region::LateBound(_, _, def_id, _)) = def else {
continue
};
let Some(def_id) = def_id.as_local() else {
continue
};
let hir_id = self.tcx.hir().local_def_id_to_hir_id(def_id);
// Ensure that the parent of the def is an item, not HRTB
let parent_id = self.tcx.hir().get_parent_node(hir_id);
// FIXME(cjgillot) Can this check be replaced by
// `let parent_is_item = parent_id.is_owner();`?
let parent_is_item =
if let Some(parent_def_id) = parent_id.as_owner() {
matches!(
self.tcx.hir().krate().owners.get(parent_def_id),
Some(Some(_)),
)
let parent_is_item = if let Some(parent_def_id) = parent_id.as_owner() {
matches!(self.tcx.hir().krate().owners.get(parent_def_id), Some(Some(_)),)
} else {
false
};
@ -1039,9 +1041,6 @@ fn visit_ty(&mut self, ty: &'tcx hir::Ty<'tcx>) {
self.uninsert_lifetime_on_error(lifetime, def.unwrap());
}
}
}
}
}
// We want to start our early-bound indices at the end of the parent scope,
// not including any parent `impl Trait`s.

View File

@ -840,7 +840,9 @@ fn suggest_remove_reference(
};
for refs_remaining in 0..refs_number {
if let ty::Ref(_, inner_ty, _) = suggested_ty.kind() {
let ty::Ref(_, inner_ty, _) = suggested_ty.kind() else {
break;
};
suggested_ty = inner_ty;
let new_obligation = self.mk_trait_obligation_with_new_self_ty(
@ -872,9 +874,6 @@ fn suggest_remove_reference(
);
break;
}
} else {
break;
}
}
}
}