Rollup merge of #128762 - fmease:use-more-slice-pats, r=compiler-errors
Use more slice patterns inside the compiler Nothing super noteworthy. Just replacing the common 'fragile' pattern of "length check followed by indexing or unwrap" with slice patterns for legibility and 'robustness'. r? ghost
This commit is contained in:
commit
32e0fe129d
40 changed files with 191 additions and 221 deletions
|
@ -745,10 +745,9 @@ fn expand_preparsed_asm(
|
|||
unused_operands.push((args.operands[idx].1, msg));
|
||||
}
|
||||
}
|
||||
match unused_operands.len() {
|
||||
0 => {}
|
||||
1 => {
|
||||
let (sp, msg) = unused_operands.into_iter().next().unwrap();
|
||||
match unused_operands[..] {
|
||||
[] => {}
|
||||
[(sp, msg)] => {
|
||||
ecx.dcx()
|
||||
.struct_span_err(sp, msg)
|
||||
.with_span_label(sp, msg)
|
||||
|
|
|
@ -378,8 +378,8 @@ impl BlockOrExpr {
|
|||
None => cx.expr_block(cx.block(span, ThinVec::new())),
|
||||
Some(expr) => expr,
|
||||
}
|
||||
} else if self.0.len() == 1
|
||||
&& let ast::StmtKind::Expr(expr) = &self.0[0].kind
|
||||
} else if let [stmt] = self.0.as_slice()
|
||||
&& let ast::StmtKind::Expr(expr) = &stmt.kind
|
||||
&& self.1.is_none()
|
||||
{
|
||||
// There's only a single statement expression. Pull it out.
|
||||
|
@ -1273,7 +1273,7 @@ impl<'a> MethodDef<'a> {
|
|||
}
|
||||
FieldlessVariantsStrategy::Default => (),
|
||||
}
|
||||
} else if variants.len() == 1 {
|
||||
} else if let [variant] = variants.as_slice() {
|
||||
// If there is a single variant, we don't need an operation on
|
||||
// the discriminant(s). Just use the most degenerate result.
|
||||
return self.call_substructure_method(
|
||||
|
@ -1281,7 +1281,7 @@ impl<'a> MethodDef<'a> {
|
|||
trait_,
|
||||
type_ident,
|
||||
nonselflike_args,
|
||||
&EnumMatching(0, &variants[0], Vec::new()),
|
||||
&EnumMatching(0, variant, Vec::new()),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -180,8 +180,8 @@ fn make_format_args(
|
|||
Ok((mut err, suggested)) => {
|
||||
if !suggested {
|
||||
if let ExprKind::Block(block, None) = &efmt.kind
|
||||
&& block.stmts.len() == 1
|
||||
&& let StmtKind::Expr(expr) = &block.stmts[0].kind
|
||||
&& let [stmt] = block.stmts.as_slice()
|
||||
&& let StmtKind::Expr(expr) = &stmt.kind
|
||||
&& let ExprKind::Path(None, path) = &expr.kind
|
||||
&& path.is_potential_trivial_const_arg()
|
||||
{
|
||||
|
@ -196,8 +196,8 @@ fn make_format_args(
|
|||
} else {
|
||||
let sugg_fmt = match args.explicit_args().len() {
|
||||
0 => "{}".to_string(),
|
||||
_ => {
|
||||
format!("{}{{}}", "{} ".repeat(args.explicit_args().len()))
|
||||
count => {
|
||||
format!("{}{{}}", "{} ".repeat(count))
|
||||
}
|
||||
};
|
||||
err.span_suggestion(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue