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
|
@ -44,9 +44,8 @@ impl MultiItemModifier for Expander {
|
|||
template,
|
||||
);
|
||||
|
||||
let path = match validate_input(ecx, meta_item) {
|
||||
Some(path) => path,
|
||||
None => return ExpandResult::Ready(Vec::new()),
|
||||
let Some(path) = validate_input(ecx, meta_item) else {
|
||||
return ExpandResult::Ready(Vec::new());
|
||||
};
|
||||
|
||||
match ecx.resolver.cfg_accessible(ecx.current_expansion.id, path) {
|
||||
|
|
|
@ -9,9 +9,8 @@ pub fn expand_compile_error<'cx>(
|
|||
sp: Span,
|
||||
tts: TokenStream,
|
||||
) -> Box<dyn base::MacResult + 'cx> {
|
||||
let var = match get_single_str_from_tts(cx, sp, tts, "compile_error!") {
|
||||
None => return DummyResult::any(sp),
|
||||
Some(v) => v,
|
||||
let Some(var) = get_single_str_from_tts(cx, sp, tts, "compile_error!") else {
|
||||
return DummyResult::any(sp);
|
||||
};
|
||||
|
||||
cx.span_err(sp, &var);
|
||||
|
|
|
@ -10,9 +10,8 @@ pub fn expand_concat(
|
|||
sp: rustc_span::Span,
|
||||
tts: TokenStream,
|
||||
) -> Box<dyn base::MacResult + 'static> {
|
||||
let es = match base::get_exprs_from_tts(cx, sp, tts) {
|
||||
Some(e) => e,
|
||||
None => return DummyResult::any(sp),
|
||||
let Some(es) = base::get_exprs_from_tts(cx, sp, tts) else {
|
||||
return DummyResult::any(sp);
|
||||
};
|
||||
let mut accumulator = String::new();
|
||||
let mut missing_literal = vec![];
|
||||
|
|
|
@ -121,9 +121,8 @@ pub fn expand_concat_bytes(
|
|||
sp: rustc_span::Span,
|
||||
tts: TokenStream,
|
||||
) -> Box<dyn base::MacResult + 'static> {
|
||||
let es = match base::get_exprs_from_tts(cx, sp, tts) {
|
||||
Some(e) => e,
|
||||
None => return DummyResult::any(sp),
|
||||
let Some(es) = base::get_exprs_from_tts(cx, sp, tts) else {
|
||||
return DummyResult::any(sp);
|
||||
};
|
||||
let mut accumulator = Vec::new();
|
||||
let mut missing_literals = vec![];
|
||||
|
|
|
@ -196,12 +196,11 @@ fn cs_clone(
|
|||
let fields = all_fields
|
||||
.iter()
|
||||
.map(|field| {
|
||||
let ident = match field.name {
|
||||
Some(i) => i,
|
||||
None => cx.span_bug(
|
||||
let Some(ident) = field.name else {
|
||||
cx.span_bug(
|
||||
trait_span,
|
||||
&format!("unnamed field in normal struct in `derive({})`", name,),
|
||||
),
|
||||
);
|
||||
};
|
||||
let call = subcall(cx, field);
|
||||
cx.field_imm(field.span, ident, call)
|
||||
|
|
|
@ -83,9 +83,8 @@ pub fn cs_cmp(cx: &mut ExtCtxt<'_>, span: Span, substr: &Substructure<'_>) -> P<
|
|||
// }
|
||||
|
||||
let new = {
|
||||
let other_f = match other_fs {
|
||||
[o_f] => o_f,
|
||||
_ => cx.span_bug(span, "not exactly 2 arguments in `derive(Ord)`"),
|
||||
let [other_f] = other_fs else {
|
||||
cx.span_bug(span, "not exactly 2 arguments in `derive(Ord)`");
|
||||
};
|
||||
|
||||
let args =
|
||||
|
|
|
@ -26,9 +26,8 @@ pub fn expand_deriving_partial_eq(
|
|||
base: bool,
|
||||
) -> P<Expr> {
|
||||
let op = |cx: &mut ExtCtxt<'_>, span: Span, self_f: P<Expr>, other_fs: &[P<Expr>]| {
|
||||
let other_f = match other_fs {
|
||||
[o_f] => o_f,
|
||||
_ => cx.span_bug(span, "not exactly 2 arguments in `derive(PartialEq)`"),
|
||||
let [other_f] = other_fs else {
|
||||
cx.span_bug(span, "not exactly 2 arguments in `derive(PartialEq)`");
|
||||
};
|
||||
|
||||
cx.expr_binary(span, op, self_f, other_f.clone())
|
||||
|
|
|
@ -86,9 +86,8 @@ pub fn cs_partial_cmp(cx: &mut ExtCtxt<'_>, span: Span, substr: &Substructure<'_
|
|||
// }
|
||||
|
||||
let new = {
|
||||
let other_f = match other_fs {
|
||||
[o_f] => o_f,
|
||||
_ => cx.span_bug(span, "not exactly 2 arguments in `derive(PartialOrd)`"),
|
||||
let [other_f] = other_fs else {
|
||||
cx.span_bug(span, "not exactly 2 arguments in `derive(PartialOrd)`");
|
||||
};
|
||||
|
||||
let args =
|
||||
|
|
|
@ -101,9 +101,8 @@ fn default_enum_substructure(
|
|||
trait_span: Span,
|
||||
enum_def: &EnumDef,
|
||||
) -> P<Expr> {
|
||||
let default_variant = match extract_default_variant(cx, enum_def, trait_span) {
|
||||
Ok(value) => value,
|
||||
Err(()) => return DummyResult::raw_expr(trait_span, true),
|
||||
let Ok(default_variant) = extract_default_variant(cx, enum_def, trait_span) else {
|
||||
return DummyResult::raw_expr(trait_span, true);
|
||||
};
|
||||
|
||||
// At this point, we know that there is exactly one variant with a `#[default]` attribute. The
|
||||
|
|
|
@ -48,9 +48,8 @@ pub fn expand_deriving_hash(
|
|||
}
|
||||
|
||||
fn hash_substructure(cx: &mut ExtCtxt<'_>, trait_span: Span, substr: &Substructure<'_>) -> P<Expr> {
|
||||
let state_expr = match substr.nonself_args {
|
||||
[o_f] => o_f,
|
||||
_ => cx.span_bug(trait_span, "incorrect number of arguments in `derive(Hash)`"),
|
||||
let [state_expr] = substr.nonself_args else {
|
||||
cx.span_bug(trait_span, "incorrect number of arguments in `derive(Hash)`");
|
||||
};
|
||||
let call_hash = |span, thing_expr| {
|
||||
let hash_path = {
|
||||
|
|
|
@ -116,9 +116,8 @@ fn inject_impl_of_structural_trait(
|
|||
structural_path: generic::ty::Path,
|
||||
push: &mut dyn FnMut(Annotatable),
|
||||
) {
|
||||
let item = match *item {
|
||||
Annotatable::Item(ref item) => item,
|
||||
_ => unreachable!(),
|
||||
let Annotatable::Item(ref item) = *item else {
|
||||
unreachable!();
|
||||
};
|
||||
|
||||
let generics = match item.kind {
|
||||
|
|
|
@ -16,9 +16,8 @@ pub fn expand_option_env<'cx>(
|
|||
sp: Span,
|
||||
tts: TokenStream,
|
||||
) -> Box<dyn base::MacResult + 'cx> {
|
||||
let var = match get_single_str_from_tts(cx, sp, tts, "option_env!") {
|
||||
None => return DummyResult::any(sp),
|
||||
Some(v) => v,
|
||||
let Some(var) = get_single_str_from_tts(cx, sp, tts, "option_env!") else {
|
||||
return DummyResult::any(sp);
|
||||
};
|
||||
|
||||
let sp = cx.with_def_site_ctxt(sp);
|
||||
|
@ -62,9 +61,8 @@ pub fn expand_env<'cx>(
|
|||
Some(exprs) => exprs.into_iter(),
|
||||
};
|
||||
|
||||
let var = match expr_to_string(cx, exprs.next().unwrap(), "expected string literal") {
|
||||
None => return DummyResult::any(sp),
|
||||
Some((v, _style)) => v,
|
||||
let Some((var, _style)) = expr_to_string(cx, exprs.next().unwrap(), "expected string literal") else {
|
||||
return DummyResult::any(sp);
|
||||
};
|
||||
let msg = match exprs.next() {
|
||||
None => Symbol::intern(&format!("environment variable `{}` not defined", var)),
|
||||
|
|
|
@ -103,11 +103,9 @@ impl<'a> CollectProcMacros<'a> {
|
|||
}
|
||||
|
||||
fn collect_custom_derive(&mut self, item: &'a ast::Item, attr: &'a ast::Attribute) {
|
||||
let (trait_name, proc_attrs) =
|
||||
match parse_macro_name_and_helper_attrs(self.handler, attr, "derive") {
|
||||
Some(name_and_attrs) => name_and_attrs,
|
||||
None => return,
|
||||
};
|
||||
let Some((trait_name, proc_attrs)) = parse_macro_name_and_helper_attrs(self.handler, attr, "derive") else {
|
||||
return;
|
||||
};
|
||||
|
||||
if self.in_root && item.vis.kind.is_pub() {
|
||||
self.macros.push(ProcMacro::Derive(ProcMacroDerive {
|
||||
|
@ -219,15 +217,12 @@ impl<'a> Visitor<'a> for CollectProcMacros<'a> {
|
|||
}
|
||||
}
|
||||
|
||||
let attr = match found_attr {
|
||||
None => {
|
||||
self.check_not_pub_in_root(&item.vis, self.source_map.guess_head_span(item.span));
|
||||
let prev_in_root = mem::replace(&mut self.in_root, false);
|
||||
visit::walk_item(self, item);
|
||||
self.in_root = prev_in_root;
|
||||
return;
|
||||
}
|
||||
Some(attr) => attr,
|
||||
let Some(attr) = found_attr else {
|
||||
self.check_not_pub_in_root(&item.vis, self.source_map.guess_head_span(item.span));
|
||||
let prev_in_root = mem::replace(&mut self.in_root, false);
|
||||
visit::walk_item(self, item);
|
||||
self.in_root = prev_in_root;
|
||||
return;
|
||||
};
|
||||
|
||||
if !is_fn {
|
||||
|
|
|
@ -98,9 +98,8 @@ pub fn expand_include<'cx>(
|
|||
tts: TokenStream,
|
||||
) -> Box<dyn base::MacResult + 'cx> {
|
||||
let sp = cx.with_def_site_ctxt(sp);
|
||||
let file = match get_single_str_from_tts(cx, sp, tts, "include!") {
|
||||
Some(f) => f,
|
||||
None => return DummyResult::any(sp),
|
||||
let Some(file) = get_single_str_from_tts(cx, sp, tts, "include!") else {
|
||||
return DummyResult::any(sp);
|
||||
};
|
||||
// The file will be added to the code map by the parser
|
||||
let file = match cx.resolve_path(file, sp) {
|
||||
|
@ -169,9 +168,8 @@ pub fn expand_include_str(
|
|||
tts: TokenStream,
|
||||
) -> Box<dyn base::MacResult + 'static> {
|
||||
let sp = cx.with_def_site_ctxt(sp);
|
||||
let file = match get_single_str_from_tts(cx, sp, tts, "include_str!") {
|
||||
Some(f) => f,
|
||||
None => return DummyResult::any(sp),
|
||||
let Some(file) = get_single_str_from_tts(cx, sp, tts, "include_str!") else {
|
||||
return DummyResult::any(sp);
|
||||
};
|
||||
let file = match cx.resolve_path(file, sp) {
|
||||
Ok(f) => f,
|
||||
|
@ -204,9 +202,8 @@ pub fn expand_include_bytes(
|
|||
tts: TokenStream,
|
||||
) -> Box<dyn base::MacResult + 'static> {
|
||||
let sp = cx.with_def_site_ctxt(sp);
|
||||
let file = match get_single_str_from_tts(cx, sp, tts, "include_bytes!") {
|
||||
Some(f) => f,
|
||||
None => return DummyResult::any(sp),
|
||||
let Some(file) = get_single_str_from_tts(cx, sp, tts, "include_bytes!") else {
|
||||
return DummyResult::any(sp);
|
||||
};
|
||||
let file = match cx.resolve_path(file, sp) {
|
||||
Ok(f) => f,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue