Rollup merge of #82163 - matthiaskrgr:slice, r=jyn514
avoid full-slicing slices If we already have a slice, there is no need to get another full-range slice from that, just use the original. clippy::redundant_slicing
This commit is contained in:
commit
46b93b2e44
@ -135,7 +135,7 @@ fn with_parent_item_lifetime_defs<T>(
|
||||
|
||||
let parent_generics = match self.items.get(&parent_hir_id).unwrap().kind {
|
||||
hir::ItemKind::Impl(hir::Impl { ref generics, .. })
|
||||
| hir::ItemKind::Trait(_, _, ref generics, ..) => &generics.params[..],
|
||||
| hir::ItemKind::Trait(_, _, ref generics, ..) => generics.params,
|
||||
_ => &[],
|
||||
};
|
||||
let lt_def_names = parent_generics.iter().filter_map(|param| match param.kind {
|
||||
|
@ -1681,7 +1681,7 @@ fn print_expr_vec(&mut self, exprs: &[P<ast::Expr>], attrs: &[ast::Attribute]) {
|
||||
self.ibox(INDENT_UNIT);
|
||||
self.s.word("[");
|
||||
self.print_inner_attributes_inline(attrs);
|
||||
self.commasep_exprs(Inconsistent, &exprs[..]);
|
||||
self.commasep_exprs(Inconsistent, exprs);
|
||||
self.s.word("]");
|
||||
self.end();
|
||||
}
|
||||
@ -1722,7 +1722,7 @@ fn print_expr_struct(
|
||||
self.print_inner_attributes_inline(attrs);
|
||||
self.commasep_cmnt(
|
||||
Consistent,
|
||||
&fields[..],
|
||||
fields,
|
||||
|s, field| {
|
||||
s.print_outer_attributes(&field.attrs);
|
||||
s.ibox(INDENT_UNIT);
|
||||
@ -1757,7 +1757,7 @@ fn print_expr_struct(
|
||||
fn print_expr_tup(&mut self, exprs: &[P<ast::Expr>], attrs: &[ast::Attribute]) {
|
||||
self.popen();
|
||||
self.print_inner_attributes_inline(attrs);
|
||||
self.commasep_exprs(Inconsistent, &exprs[..]);
|
||||
self.commasep_exprs(Inconsistent, exprs);
|
||||
if exprs.len() == 1 {
|
||||
self.s.word(",");
|
||||
}
|
||||
|
@ -270,7 +270,7 @@ fn verify_piece(&mut self, p: &parse::Piece<'_>) {
|
||||
parse::ArgumentNamed(s) => Named(s),
|
||||
};
|
||||
|
||||
let ty = Placeholder(match &arg.format.ty[..] {
|
||||
let ty = Placeholder(match arg.format.ty {
|
||||
"" => "Display",
|
||||
"?" => "Debug",
|
||||
"e" => "LowerExp",
|
||||
|
@ -312,7 +312,7 @@ pub fn parse_next_substitution(s: &str) -> Option<(Substitution<'_>, &str)> {
|
||||
return Some((Substitution::Escape, &s[start + 2..]));
|
||||
}
|
||||
|
||||
Cur::new_at(&s[..], start)
|
||||
Cur::new_at(s, start)
|
||||
};
|
||||
|
||||
// This is meant to be a translation of the following regex:
|
||||
@ -673,7 +673,7 @@ pub fn parse_next_substitution(s: &str) -> Option<(Substitution<'_>, &str)> {
|
||||
_ => { /* fall-through */ }
|
||||
}
|
||||
|
||||
Cur::new_at(&s[..], start)
|
||||
Cur::new_at(s, start)
|
||||
};
|
||||
|
||||
let at = at.at_next_cp()?;
|
||||
|
@ -709,7 +709,7 @@ fn codegen_call_terminator(
|
||||
let (tup, args) = args.split_last().unwrap();
|
||||
(args, Some(tup))
|
||||
} else {
|
||||
(&args[..], None)
|
||||
(args, None)
|
||||
};
|
||||
|
||||
'make_args: for (i, arg) in first_args.iter().enumerate() {
|
||||
|
@ -392,7 +392,7 @@ pub fn print_type(&mut self, ty: &hir::Ty<'_>) {
|
||||
&f.decl,
|
||||
None,
|
||||
&f.generic_params,
|
||||
&f.param_names[..],
|
||||
f.param_names,
|
||||
);
|
||||
}
|
||||
hir::TyKind::OpaqueDef(..) => self.s.word("/*impl Trait*/"),
|
||||
@ -1200,7 +1200,7 @@ fn print_expr_struct(
|
||||
self.s.word("{");
|
||||
self.commasep_cmnt(
|
||||
Consistent,
|
||||
&fields[..],
|
||||
fields,
|
||||
|s, field| {
|
||||
s.ibox(INDENT_UNIT);
|
||||
if !field.is_shorthand {
|
||||
|
@ -671,7 +671,7 @@ pub fn emit_inference_failure_err(
|
||||
if !impl_candidates.is_empty() && e.span.contains(span) {
|
||||
if let Some(expr) = exprs.first() {
|
||||
if let ExprKind::Path(hir::QPath::Resolved(_, path)) = expr.kind {
|
||||
if let [path_segment] = &path.segments[..] {
|
||||
if let [path_segment] = path.segments {
|
||||
let candidate_len = impl_candidates.len();
|
||||
let suggestions = impl_candidates.iter().map(|candidate| {
|
||||
format!(
|
||||
|
@ -866,7 +866,7 @@ fn encode_def_ids(&mut self) {
|
||||
|
||||
fn encode_variances_of(&mut self, def_id: DefId) {
|
||||
debug!("EncodeContext::encode_variances_of({:?})", def_id);
|
||||
record!(self.tables.variances[def_id] <- &self.tcx.variances_of(def_id)[..]);
|
||||
record!(self.tables.variances[def_id] <- self.tcx.variances_of(def_id));
|
||||
}
|
||||
|
||||
fn encode_item_type(&mut self, def_id: DefId) {
|
||||
|
@ -854,22 +854,22 @@ pub fn name(&self, id: HirId) -> Symbol {
|
||||
/// corresponding to the node-ID.
|
||||
pub fn attrs(&self, id: HirId) -> &'hir [ast::Attribute] {
|
||||
self.find_entry(id).map_or(&[], |entry| match entry.node {
|
||||
Node::Param(a) => &a.attrs[..],
|
||||
Node::Param(a) => a.attrs,
|
||||
Node::Local(l) => &l.attrs[..],
|
||||
Node::Item(i) => &i.attrs[..],
|
||||
Node::ForeignItem(fi) => &fi.attrs[..],
|
||||
Node::TraitItem(ref ti) => &ti.attrs[..],
|
||||
Node::ImplItem(ref ii) => &ii.attrs[..],
|
||||
Node::Variant(ref v) => &v.attrs[..],
|
||||
Node::Field(ref f) => &f.attrs[..],
|
||||
Node::Item(i) => i.attrs,
|
||||
Node::ForeignItem(fi) => fi.attrs,
|
||||
Node::TraitItem(ref ti) => ti.attrs,
|
||||
Node::ImplItem(ref ii) => ii.attrs,
|
||||
Node::Variant(ref v) => v.attrs,
|
||||
Node::Field(ref f) => f.attrs,
|
||||
Node::Expr(ref e) => &*e.attrs,
|
||||
Node::Stmt(ref s) => s.kind.attrs(|id| self.item(id.id)),
|
||||
Node::Arm(ref a) => &*a.attrs,
|
||||
Node::GenericParam(param) => ¶m.attrs[..],
|
||||
Node::GenericParam(param) => param.attrs,
|
||||
// Unit/tuple structs/variants take the attributes straight from
|
||||
// the struct/variant definition.
|
||||
Node::Ctor(..) => self.attrs(self.get_parent_item(id)),
|
||||
Node::Crate(item) => &item.attrs[..],
|
||||
Node::Crate(item) => item.attrs,
|
||||
Node::MacroDef(def) => def.attrs,
|
||||
Node::AnonConst(..)
|
||||
| Node::PathSegment(..)
|
||||
|
@ -427,7 +427,7 @@ macro_rules! encode_queries {
|
||||
|
||||
fn sorted_cnums_including_local_crate(tcx: TyCtxt<'_>) -> Vec<CrateNum> {
|
||||
let mut cnums = vec![LOCAL_CRATE];
|
||||
cnums.extend_from_slice(&tcx.crates()[..]);
|
||||
cnums.extend_from_slice(tcx.crates());
|
||||
cnums.sort_unstable();
|
||||
// Just to be sure...
|
||||
cnums.dedup();
|
||||
|
@ -1105,7 +1105,7 @@ fn extract_node_id(t: &Ty) -> Option<NodeId> {
|
||||
}
|
||||
|
||||
if let Some(items) = self.diagnostic_metadata.current_trait_assoc_items {
|
||||
for assoc_item in &items[..] {
|
||||
for assoc_item in items {
|
||||
if assoc_item.ident == ident {
|
||||
return Some(match &assoc_item.kind {
|
||||
ast::AssocItemKind::Const(..) => AssocSuggestion::AssocConst,
|
||||
|
@ -1492,7 +1492,7 @@ macro_rules! key {
|
||||
} );
|
||||
($key_name:ident = $json_name:expr, optional) => ( {
|
||||
let name = $json_name;
|
||||
if let Some(o) = obj.find(&name[..]) {
|
||||
if let Some(o) = obj.find(name) {
|
||||
base.$key_name = o
|
||||
.as_string()
|
||||
.map(|s| s.to_string() );
|
||||
|
@ -237,7 +237,7 @@ pub(crate) fn complain_about_missing_associated_types(
|
||||
}
|
||||
}
|
||||
if let ([], [bound]) = (&potential_assoc_types[..], &trait_bounds) {
|
||||
match &bound.trait_ref.path.segments[..] {
|
||||
match bound.trait_ref.path.segments {
|
||||
// FIXME: `trait_ref.path.span` can point to a full path with multiple
|
||||
// segments, even though `trait_ref.path.segments` is of length `1`. Work
|
||||
// around that bug here, even though it should be fixed elsewhere.
|
||||
|
@ -2374,7 +2374,7 @@ pub fn ty_of_fn(
|
||||
crate::collect::placeholder_type_error(
|
||||
tcx,
|
||||
ident_span.map(|sp| sp.shrink_to_hi()),
|
||||
&generics.params[..],
|
||||
generics.params,
|
||||
visitor.0,
|
||||
true,
|
||||
hir_ty,
|
||||
|
@ -897,7 +897,7 @@ pub fn resolve_ty_and_res_ufcs<'b>(
|
||||
return (
|
||||
path.res,
|
||||
opt_qself.as_ref().map(|qself| self.to_ty(qself)),
|
||||
&path.segments[..],
|
||||
path.segments,
|
||||
);
|
||||
}
|
||||
QPath::TypeRelative(ref qself, ref segment) => (self.to_ty(qself), qself, segment),
|
||||
|
@ -600,7 +600,7 @@ macro_rules! report_function {
|
||||
});
|
||||
if let Some(hir::Node::Item(hir::Item { kind, .. })) = node {
|
||||
if let Some(g) = kind.generics() {
|
||||
let key = match &g.where_clause.predicates[..] {
|
||||
let key = match g.where_clause.predicates {
|
||||
[.., pred] => (pred.span().shrink_to_hi(), false),
|
||||
[] => (
|
||||
g.where_clause
|
||||
|
@ -229,14 +229,7 @@ fn reject_placeholder_type_signatures_in_item(tcx: TyCtxt<'tcx>, item: &'tcx hir
|
||||
let mut visitor = PlaceholderHirTyCollector::default();
|
||||
visitor.visit_item(item);
|
||||
|
||||
placeholder_type_error(
|
||||
tcx,
|
||||
Some(generics.span),
|
||||
&generics.params[..],
|
||||
visitor.0,
|
||||
suggest,
|
||||
None,
|
||||
);
|
||||
placeholder_type_error(tcx, Some(generics.span), generics.params, visitor.0, suggest, None);
|
||||
}
|
||||
|
||||
impl Visitor<'tcx> for CollectItemTypesVisitor<'tcx> {
|
||||
@ -417,7 +410,7 @@ fn projected_ty_from_poly_trait_ref(
|
||||
| hir::ItemKind::Struct(_, generics)
|
||||
| hir::ItemKind::Union(_, generics) => {
|
||||
let lt_name = get_new_lifetime_name(self.tcx, poly_trait_ref, generics);
|
||||
let (lt_sp, sugg) = match &generics.params[..] {
|
||||
let (lt_sp, sugg) = match generics.params {
|
||||
[] => (generics.span, format!("<{}>", lt_name)),
|
||||
[bound, ..] => {
|
||||
(bound.span.shrink_to_lo(), format!("{}, ", lt_name))
|
||||
|
@ -347,7 +347,7 @@ pub fn parse(args: &[String]) -> Flags {
|
||||
};
|
||||
|
||||
// Done specifying what options are possible, so do the getopts parsing
|
||||
let matches = opts.parse(&args[..]).unwrap_or_else(|e| {
|
||||
let matches = opts.parse(args).unwrap_or_else(|e| {
|
||||
// Invalid argument/option format
|
||||
println!("\n{}\n", e);
|
||||
usage(1, &opts, false, &subcommand_help);
|
||||
|
@ -975,7 +975,7 @@ impl<'a, A: Copy> Clean<FnDecl> for (&'a hir::FnDecl<'a>, A)
|
||||
{
|
||||
fn clean(&self, cx: &DocContext<'_>) -> FnDecl {
|
||||
FnDecl {
|
||||
inputs: (&self.0.inputs[..], self.1).clean(cx),
|
||||
inputs: (self.0.inputs, self.1).clean(cx),
|
||||
output: self.0.output.clean(cx),
|
||||
c_variadic: self.0.c_variadic,
|
||||
attrs: Attributes::default(),
|
||||
@ -1939,7 +1939,7 @@ fn clean(&self, _: &DocContext<'_>) -> String {
|
||||
impl Clean<BareFunctionDecl> for hir::BareFnTy<'_> {
|
||||
fn clean(&self, cx: &DocContext<'_>) -> BareFunctionDecl {
|
||||
let (generic_params, decl) = enter_impl_trait(cx, || {
|
||||
(self.generic_params.clean(cx), (&*self.decl, &self.param_names[..]).clean(cx))
|
||||
(self.generic_params.clean(cx), (&*self.decl, self.param_names).clean(cx))
|
||||
});
|
||||
BareFunctionDecl { unsafety: self.unsafety, abi: self.abi, decl, generic_params }
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user