1
Fork 0

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:
Matthias Krüger 2021-02-16 00:30:06 +01:00
parent d1206f950f
commit 4390a61b64
19 changed files with 33 additions and 40 deletions

View file

@ -135,7 +135,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
let parent_generics = match self.items.get(&parent_hir_id).unwrap().kind { let parent_generics = match self.items.get(&parent_hir_id).unwrap().kind {
hir::ItemKind::Impl(hir::Impl { ref generics, .. }) 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 { let lt_def_names = parent_generics.iter().filter_map(|param| match param.kind {

View file

@ -1681,7 +1681,7 @@ impl<'a> State<'a> {
self.ibox(INDENT_UNIT); self.ibox(INDENT_UNIT);
self.s.word("["); self.s.word("[");
self.print_inner_attributes_inline(attrs); self.print_inner_attributes_inline(attrs);
self.commasep_exprs(Inconsistent, &exprs[..]); self.commasep_exprs(Inconsistent, exprs);
self.s.word("]"); self.s.word("]");
self.end(); self.end();
} }
@ -1722,7 +1722,7 @@ impl<'a> State<'a> {
self.print_inner_attributes_inline(attrs); self.print_inner_attributes_inline(attrs);
self.commasep_cmnt( self.commasep_cmnt(
Consistent, Consistent,
&fields[..], fields,
|s, field| { |s, field| {
s.print_outer_attributes(&field.attrs); s.print_outer_attributes(&field.attrs);
s.ibox(INDENT_UNIT); s.ibox(INDENT_UNIT);
@ -1757,7 +1757,7 @@ impl<'a> State<'a> {
fn print_expr_tup(&mut self, exprs: &[P<ast::Expr>], attrs: &[ast::Attribute]) { fn print_expr_tup(&mut self, exprs: &[P<ast::Expr>], attrs: &[ast::Attribute]) {
self.popen(); self.popen();
self.print_inner_attributes_inline(attrs); self.print_inner_attributes_inline(attrs);
self.commasep_exprs(Inconsistent, &exprs[..]); self.commasep_exprs(Inconsistent, exprs);
if exprs.len() == 1 { if exprs.len() == 1 {
self.s.word(","); self.s.word(",");
} }

View file

@ -270,7 +270,7 @@ impl<'a, 'b> Context<'a, 'b> {
parse::ArgumentNamed(s) => Named(s), parse::ArgumentNamed(s) => Named(s),
}; };
let ty = Placeholder(match &arg.format.ty[..] { let ty = Placeholder(match arg.format.ty {
"" => "Display", "" => "Display",
"?" => "Debug", "?" => "Debug",
"e" => "LowerExp", "e" => "LowerExp",

View file

@ -312,7 +312,7 @@ pub mod printf {
return Some((Substitution::Escape, &s[start + 2..])); 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: // This is meant to be a translation of the following regex:
@ -673,7 +673,7 @@ pub mod shell {
_ => { /* fall-through */ } _ => { /* fall-through */ }
} }
Cur::new_at(&s[..], start) Cur::new_at(s, start)
}; };
let at = at.at_next_cp()?; let at = at.at_next_cp()?;

View file

@ -709,7 +709,7 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
let (tup, args) = args.split_last().unwrap(); let (tup, args) = args.split_last().unwrap();
(args, Some(tup)) (args, Some(tup))
} else { } else {
(&args[..], None) (args, None)
}; };
'make_args: for (i, arg) in first_args.iter().enumerate() { 'make_args: for (i, arg) in first_args.iter().enumerate() {

View file

@ -392,7 +392,7 @@ impl<'a> State<'a> {
&f.decl, &f.decl,
None, None,
&f.generic_params, &f.generic_params,
&f.param_names[..], f.param_names,
); );
} }
hir::TyKind::OpaqueDef(..) => self.s.word("/*impl Trait*/"), hir::TyKind::OpaqueDef(..) => self.s.word("/*impl Trait*/"),
@ -1200,7 +1200,7 @@ impl<'a> State<'a> {
self.s.word("{"); self.s.word("{");
self.commasep_cmnt( self.commasep_cmnt(
Consistent, Consistent,
&fields[..], fields,
|s, field| { |s, field| {
s.ibox(INDENT_UNIT); s.ibox(INDENT_UNIT);
if !field.is_shorthand { if !field.is_shorthand {

View file

@ -671,7 +671,7 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
if !impl_candidates.is_empty() && e.span.contains(span) { if !impl_candidates.is_empty() && e.span.contains(span) {
if let Some(expr) = exprs.first() { if let Some(expr) = exprs.first() {
if let ExprKind::Path(hir::QPath::Resolved(_, path)) = expr.kind { 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 candidate_len = impl_candidates.len();
let suggestions = impl_candidates.iter().map(|candidate| { let suggestions = impl_candidates.iter().map(|candidate| {
format!( format!(

View file

@ -866,7 +866,7 @@ impl EncodeContext<'a, 'tcx> {
fn encode_variances_of(&mut self, def_id: DefId) { fn encode_variances_of(&mut self, def_id: DefId) {
debug!("EncodeContext::encode_variances_of({:?})", def_id); 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) { fn encode_item_type(&mut self, def_id: DefId) {

View file

@ -854,22 +854,22 @@ impl<'hir> Map<'hir> {
/// corresponding to the node-ID. /// corresponding to the node-ID.
pub fn attrs(&self, id: HirId) -> &'hir [ast::Attribute] { pub fn attrs(&self, id: HirId) -> &'hir [ast::Attribute] {
self.find_entry(id).map_or(&[], |entry| match entry.node { 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::Local(l) => &l.attrs[..],
Node::Item(i) => &i.attrs[..], Node::Item(i) => i.attrs,
Node::ForeignItem(fi) => &fi.attrs[..], Node::ForeignItem(fi) => fi.attrs,
Node::TraitItem(ref ti) => &ti.attrs[..], Node::TraitItem(ref ti) => ti.attrs,
Node::ImplItem(ref ii) => &ii.attrs[..], Node::ImplItem(ref ii) => ii.attrs,
Node::Variant(ref v) => &v.attrs[..], Node::Variant(ref v) => v.attrs,
Node::Field(ref f) => &f.attrs[..], Node::Field(ref f) => f.attrs,
Node::Expr(ref e) => &*e.attrs, Node::Expr(ref e) => &*e.attrs,
Node::Stmt(ref s) => s.kind.attrs(|id| self.item(id.id)), Node::Stmt(ref s) => s.kind.attrs(|id| self.item(id.id)),
Node::Arm(ref a) => &*a.attrs, Node::Arm(ref a) => &*a.attrs,
Node::GenericParam(param) => &param.attrs[..], Node::GenericParam(param) => param.attrs,
// Unit/tuple structs/variants take the attributes straight from // Unit/tuple structs/variants take the attributes straight from
// the struct/variant definition. // the struct/variant definition.
Node::Ctor(..) => self.attrs(self.get_parent_item(id)), 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::MacroDef(def) => def.attrs,
Node::AnonConst(..) Node::AnonConst(..)
| Node::PathSegment(..) | Node::PathSegment(..)

View file

@ -427,7 +427,7 @@ impl<'sess> OnDiskCache<'sess> {
fn sorted_cnums_including_local_crate(tcx: TyCtxt<'_>) -> Vec<CrateNum> { fn sorted_cnums_including_local_crate(tcx: TyCtxt<'_>) -> Vec<CrateNum> {
let mut cnums = vec![LOCAL_CRATE]; let mut cnums = vec![LOCAL_CRATE];
cnums.extend_from_slice(&tcx.crates()[..]); cnums.extend_from_slice(tcx.crates());
cnums.sort_unstable(); cnums.sort_unstable();
// Just to be sure... // Just to be sure...
cnums.dedup(); cnums.dedup();

View file

@ -1105,7 +1105,7 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> {
} }
if let Some(items) = self.diagnostic_metadata.current_trait_assoc_items { 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 { if assoc_item.ident == ident {
return Some(match &assoc_item.kind { return Some(match &assoc_item.kind {
ast::AssocItemKind::Const(..) => AssocSuggestion::AssocConst, ast::AssocItemKind::Const(..) => AssocSuggestion::AssocConst,

View file

@ -1492,7 +1492,7 @@ impl Target {
} ); } );
($key_name:ident = $json_name:expr, optional) => ( { ($key_name:ident = $json_name:expr, optional) => ( {
let name = $json_name; let name = $json_name;
if let Some(o) = obj.find(&name[..]) { if let Some(o) = obj.find(name) {
base.$key_name = o base.$key_name = o
.as_string() .as_string()
.map(|s| s.to_string() ); .map(|s| s.to_string() );

View file

@ -237,7 +237,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
} }
} }
if let ([], [bound]) = (&potential_assoc_types[..], &trait_bounds) { 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 // 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 // segments, even though `trait_ref.path.segments` is of length `1`. Work
// around that bug here, even though it should be fixed elsewhere. // around that bug here, even though it should be fixed elsewhere.

View file

@ -2374,7 +2374,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
crate::collect::placeholder_type_error( crate::collect::placeholder_type_error(
tcx, tcx,
ident_span.map(|sp| sp.shrink_to_hi()), ident_span.map(|sp| sp.shrink_to_hi()),
&generics.params[..], generics.params,
visitor.0, visitor.0,
true, true,
hir_ty, hir_ty,

View file

@ -897,7 +897,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
return ( return (
path.res, path.res,
opt_qself.as_ref().map(|qself| self.to_ty(qself)), 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), QPath::TypeRelative(ref qself, ref segment) => (self.to_ty(qself), qself, segment),

View file

@ -600,7 +600,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
}); });
if let Some(hir::Node::Item(hir::Item { kind, .. })) = node { if let Some(hir::Node::Item(hir::Item { kind, .. })) = node {
if let Some(g) = kind.generics() { 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), [.., pred] => (pred.span().shrink_to_hi(), false),
[] => ( [] => (
g.where_clause g.where_clause

View file

@ -229,14 +229,7 @@ fn reject_placeholder_type_signatures_in_item(tcx: TyCtxt<'tcx>, item: &'tcx hir
let mut visitor = PlaceholderHirTyCollector::default(); let mut visitor = PlaceholderHirTyCollector::default();
visitor.visit_item(item); visitor.visit_item(item);
placeholder_type_error( placeholder_type_error(tcx, Some(generics.span), generics.params, visitor.0, suggest, None);
tcx,
Some(generics.span),
&generics.params[..],
visitor.0,
suggest,
None,
);
} }
impl Visitor<'tcx> for CollectItemTypesVisitor<'tcx> { impl Visitor<'tcx> for CollectItemTypesVisitor<'tcx> {
@ -417,7 +410,7 @@ impl AstConv<'tcx> for ItemCtxt<'tcx> {
| hir::ItemKind::Struct(_, generics) | hir::ItemKind::Struct(_, generics)
| hir::ItemKind::Union(_, generics) => { | hir::ItemKind::Union(_, generics) => {
let lt_name = get_new_lifetime_name(self.tcx, poly_trait_ref, 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)), [] => (generics.span, format!("<{}>", lt_name)),
[bound, ..] => { [bound, ..] => {
(bound.span.shrink_to_lo(), format!("{}, ", lt_name)) (bound.span.shrink_to_lo(), format!("{}, ", lt_name))

View file

@ -347,7 +347,7 @@ To learn more about a subcommand, run `./x.py <subcommand> -h`",
}; };
// Done specifying what options are possible, so do the getopts parsing // 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 // Invalid argument/option format
println!("\n{}\n", e); println!("\n{}\n", e);
usage(1, &opts, false, &subcommand_help); usage(1, &opts, false, &subcommand_help);

View file

@ -975,7 +975,7 @@ where
{ {
fn clean(&self, cx: &DocContext<'_>) -> FnDecl { fn clean(&self, cx: &DocContext<'_>) -> FnDecl {
FnDecl { FnDecl {
inputs: (&self.0.inputs[..], self.1).clean(cx), inputs: (self.0.inputs, self.1).clean(cx),
output: self.0.output.clean(cx), output: self.0.output.clean(cx),
c_variadic: self.0.c_variadic, c_variadic: self.0.c_variadic,
attrs: Attributes::default(), attrs: Attributes::default(),
@ -1939,7 +1939,7 @@ impl Clean<String> for Symbol {
impl Clean<BareFunctionDecl> for hir::BareFnTy<'_> { impl Clean<BareFunctionDecl> for hir::BareFnTy<'_> {
fn clean(&self, cx: &DocContext<'_>) -> BareFunctionDecl { fn clean(&self, cx: &DocContext<'_>) -> BareFunctionDecl {
let (generic_params, decl) = enter_impl_trait(cx, || { 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 } BareFunctionDecl { unsafety: self.unsafety, abi: self.abi, decl, generic_params }
} }