Skip to content

Commit 6c833df

Browse files
committed
Auto merge of rust-lang#5678 - lzutao:slice, r=flip1995
Make use of slice pattern changelog: none
2 parents 153ef1c + fbf0b84 commit 6c833df

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

clippy_lints/src/utils/mod.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -165,8 +165,8 @@ pub fn match_trait_method(cx: &LateContext<'_, '_>, expr: &Expr<'_>, path: &[&st
165165
/// Checks if an expression references a variable of the given name.
166166
pub fn match_var(expr: &Expr<'_>, var: Name) -> bool {
167167
if let ExprKind::Path(QPath::Resolved(None, ref path)) = expr.kind {
168-
if path.segments.len() == 1 && path.segments[0].ident.name == var {
169-
return true;
168+
if let [p] = path.segments {
169+
return p.ident.name == var;
170170
}
171171
}
172172
false
@@ -181,8 +181,7 @@ pub fn last_path_segment<'tcx>(path: &QPath<'tcx>) -> &'tcx PathSegment<'tcx> {
181181

182182
pub fn single_segment_path<'tcx>(path: &QPath<'tcx>) -> Option<&'tcx PathSegment<'tcx>> {
183183
match *path {
184-
QPath::Resolved(_, ref path) if path.segments.len() == 1 => Some(&path.segments[0]),
185-
QPath::Resolved(..) => None,
184+
QPath::Resolved(_, ref path) => path.segments.get(0),
186185
QPath::TypeRelative(_, ref seg) => Some(seg),
187186
}
188187
}
@@ -201,9 +200,12 @@ pub fn match_qpath(path: &QPath<'_>, segments: &[&str]) -> bool {
201200
QPath::Resolved(_, ref path) => match_path(path, segments),
202201
QPath::TypeRelative(ref ty, ref segment) => match ty.kind {
203202
TyKind::Path(ref inner_path) => {
204-
!segments.is_empty()
205-
&& match_qpath(inner_path, &segments[..(segments.len() - 1)])
206-
&& segment.ident.name.as_str() == segments[segments.len() - 1]
203+
if let [prefix @ .., end] = segments {
204+
if match_qpath(inner_path, prefix) {
205+
return segment.ident.name.as_str() == *end;
206+
}
207+
}
208+
false
207209
},
208210
_ => false,
209211
},

0 commit comments

Comments
 (0)