Rollup merge of #94146 - est31:let_else, r=cjgillot
Adopt let else in more places Continuation of #89933, #91018, #91481, #93046, #93590, #94011. I have extended my clippy lint to also recognize tuple passing and match statements. The diff caused by fixing it is way above 1 thousand lines. Thus, I split it up into multiple pull requests to make reviewing easier. This is the biggest of these PRs and handles the changes outside of rustdoc, rustc_typeck, rustc_const_eval, rustc_trait_selection, which were handled in PRs #94139, #94142, #94143, #94144.
This commit is contained in:
commit
f2d6770f77
132 changed files with 539 additions and 881 deletions
|
@ -173,9 +173,8 @@ impl Scope {
|
|||
/// returned span may not correspond to the span of any `NodeId` in
|
||||
/// the AST.
|
||||
pub fn span(&self, tcx: TyCtxt<'_>, scope_tree: &ScopeTree) -> Span {
|
||||
let hir_id = match self.hir_id(scope_tree) {
|
||||
Some(hir_id) => hir_id,
|
||||
None => return DUMMY_SP,
|
||||
let Some(hir_id) = self.hir_id(scope_tree) else {
|
||||
return DUMMY_SP;
|
||||
};
|
||||
let span = tcx.hir().span(hir_id);
|
||||
if let ScopeData::Remainder(first_statement_index) = self.data {
|
||||
|
|
|
@ -89,9 +89,8 @@ pub fn dump_mir<'tcx, F>(
|
|||
}
|
||||
|
||||
pub fn dump_enabled<'tcx>(tcx: TyCtxt<'tcx>, pass_name: &str, def_id: DefId) -> bool {
|
||||
let filters = match tcx.sess.opts.debugging_opts.dump_mir {
|
||||
None => return false,
|
||||
Some(ref filters) => filters,
|
||||
let Some(ref filters) = tcx.sess.opts.debugging_opts.dump_mir else {
|
||||
return false;
|
||||
};
|
||||
let node_path = ty::print::with_forced_impl_filename_line(|| {
|
||||
// see notes on #41697 below
|
||||
|
@ -586,9 +585,8 @@ fn write_scope_tree(
|
|||
)?;
|
||||
}
|
||||
|
||||
let children = match scope_tree.get(&parent) {
|
||||
Some(children) => children,
|
||||
None => return Ok(()),
|
||||
let Some(children) = scope_tree.get(&parent) else {
|
||||
return Ok(());
|
||||
};
|
||||
|
||||
for &child in children {
|
||||
|
|
|
@ -1123,9 +1123,8 @@ impl<'tcx> TyCtxt<'tcx> {
|
|||
pub fn layout_scalar_valid_range(self, def_id: DefId) -> (Bound<u128>, Bound<u128>) {
|
||||
let attrs = self.get_attrs(def_id);
|
||||
let get = |name| {
|
||||
let attr = match attrs.iter().find(|a| a.has_name(name)) {
|
||||
Some(attr) => attr,
|
||||
None => return Bound::Unbounded,
|
||||
let Some(attr) = attrs.iter().find(|a| a.has_name(name)) else {
|
||||
return Bound::Unbounded;
|
||||
};
|
||||
debug!("layout_scalar_valid_range: attr={:?}", attr);
|
||||
if let Some(
|
||||
|
@ -1513,9 +1512,8 @@ impl<'tcx> TyCtxt<'tcx> {
|
|||
scope_def_id: LocalDefId,
|
||||
) -> Vec<&'tcx hir::Ty<'tcx>> {
|
||||
let hir_id = self.hir().local_def_id_to_hir_id(scope_def_id);
|
||||
let hir_output = match self.hir().fn_decl_by_hir_id(hir_id) {
|
||||
Some(hir::FnDecl { output: hir::FnRetTy::Return(ty), .. }) => ty,
|
||||
_ => return vec![],
|
||||
let Some(hir::FnDecl { output: hir::FnRetTy::Return(hir_output), .. }) = self.hir().fn_decl_by_hir_id(hir_id) else {
|
||||
return vec![];
|
||||
};
|
||||
|
||||
let mut v = TraitObjectVisitor(vec![], self.hir());
|
||||
|
|
|
@ -861,11 +861,10 @@ fn foo(&self) -> Self::T { String::new() }
|
|||
body_owner_def_id: DefId,
|
||||
found: Ty<'tcx>,
|
||||
) -> bool {
|
||||
let hir_id =
|
||||
match body_owner_def_id.as_local().map(|id| self.hir().local_def_id_to_hir_id(id)) {
|
||||
Some(hir_id) => hir_id,
|
||||
None => return false,
|
||||
};
|
||||
let Some(hir_id) = body_owner_def_id.as_local() else {
|
||||
return false;
|
||||
};
|
||||
let hir_id = self.hir().local_def_id_to_hir_id(hir_id);
|
||||
// When `body_owner` is an `impl` or `trait` item, look in its associated types for
|
||||
// `expected` and point at it.
|
||||
let parent_id = self.hir().get_parent_item(hir_id);
|
||||
|
|
|
@ -1319,9 +1319,8 @@ impl<'tcx> LayoutCx<'tcx, TyCtxt<'tcx>> {
|
|||
// Try to use a ScalarPair for all tagged enums.
|
||||
let mut common_prim = None;
|
||||
for (field_layouts, layout_variant) in iter::zip(&variants, &layout_variants) {
|
||||
let offsets = match layout_variant.fields {
|
||||
FieldsShape::Arbitrary { ref offsets, .. } => offsets,
|
||||
_ => bug!(),
|
||||
let FieldsShape::Arbitrary { ref offsets, .. } = layout_variant.fields else {
|
||||
bug!();
|
||||
};
|
||||
let mut fields =
|
||||
iter::zip(field_layouts, offsets).filter(|p| !p.0.is_zst());
|
||||
|
@ -1571,9 +1570,8 @@ impl<'tcx> LayoutCx<'tcx, TyCtxt<'tcx>> {
|
|||
let tcx = self.tcx;
|
||||
let subst_field = |ty: Ty<'tcx>| ty.subst(tcx, substs);
|
||||
|
||||
let info = match tcx.generator_layout(def_id) {
|
||||
None => return Err(LayoutError::Unknown(ty)),
|
||||
Some(info) => info,
|
||||
let Some(info) = tcx.generator_layout(def_id) else {
|
||||
return Err(LayoutError::Unknown(ty));
|
||||
};
|
||||
let (ineligible_locals, assignments) = self.generator_saved_local_eligibility(&info);
|
||||
|
||||
|
@ -1676,9 +1674,8 @@ impl<'tcx> LayoutCx<'tcx, TyCtxt<'tcx>> {
|
|||
)?;
|
||||
variant.variants = Variants::Single { index };
|
||||
|
||||
let (offsets, memory_index) = match variant.fields {
|
||||
FieldsShape::Arbitrary { offsets, memory_index } => (offsets, memory_index),
|
||||
_ => bug!(),
|
||||
let FieldsShape::Arbitrary { offsets, memory_index } = variant.fields else {
|
||||
bug!();
|
||||
};
|
||||
|
||||
// Now, stitch the promoted and variant-only fields back together in
|
||||
|
|
|
@ -415,9 +415,8 @@ pub trait PrettyPrinter<'tcx>:
|
|||
cur_def_key = self.tcx().def_key(parent);
|
||||
}
|
||||
|
||||
let visible_parent = match visible_parent_map.get(&def_id).cloned() {
|
||||
Some(parent) => parent,
|
||||
None => return Ok((self, false)),
|
||||
let Some(visible_parent) = visible_parent_map.get(&def_id).cloned() else {
|
||||
return Ok((self, false));
|
||||
};
|
||||
|
||||
let actual_parent = self.tcx().parent(def_id);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue