1
Fork 0

rustc_ast: replace some len-checks + indexing with slice patterns etc. 🧹

This commit is contained in:
Yotam Ofek 2025-01-26 16:25:47 +00:00
parent 15c6f7e1a3
commit 614446887e
4 changed files with 10 additions and 10 deletions

View file

@ -100,7 +100,7 @@ pub struct Path {
impl PartialEq<Symbol> for Path { impl PartialEq<Symbol> for Path {
#[inline] #[inline]
fn eq(&self, symbol: &Symbol) -> bool { fn eq(&self, symbol: &Symbol) -> bool {
self.segments.len() == 1 && { self.segments[0].ident.name == *symbol } matches!(&self.segments[..], [segment] if segment.ident.name == *symbol)
} }
} }
@ -121,13 +121,13 @@ impl Path {
} }
pub fn is_global(&self) -> bool { pub fn is_global(&self) -> bool {
!self.segments.is_empty() && self.segments[0].ident.name == kw::PathRoot self.segments.first().is_some_and(|segment| segment.ident.name == kw::PathRoot)
} }
/// If this path is a single identifier with no arguments, does not ensure /// If this path is a single identifier with no arguments, does not ensure
/// that the path resolves to a const param, the caller should check this. /// that the path resolves to a const param, the caller should check this.
pub fn is_potential_trivial_const_arg(&self) -> bool { pub fn is_potential_trivial_const_arg(&self) -> bool {
self.segments.len() == 1 && self.segments[0].args.is_none() matches!(self.segments[..], [PathSegment { args: None, .. }])
} }
} }

View file

@ -302,7 +302,7 @@ impl AttrItem {
impl MetaItem { impl MetaItem {
/// For a single-segment meta item, returns its name; otherwise, returns `None`. /// For a single-segment meta item, returns its name; otherwise, returns `None`.
pub fn ident(&self) -> Option<Ident> { pub fn ident(&self) -> Option<Ident> {
if self.path.segments.len() == 1 { Some(self.path.segments[0].ident) } else { None } if let [PathSegment { ident, .. }] = self.path.segments[..] { Some(ident) } else { None }
} }
pub fn name_or_empty(&self) -> Symbol { pub fn name_or_empty(&self) -> Symbol {

View file

@ -1813,10 +1813,10 @@ pub fn walk_flat_map_stmt<T: MutVisitor>(
.into_iter() .into_iter()
.map(|kind| Stmt { id, kind, span }) .map(|kind| Stmt { id, kind, span })
.collect(); .collect();
match stmts.len() { match &mut stmts[..] {
0 => {} [] => {}
1 => vis.visit_span(&mut stmts[0].span), [stmt] => vis.visit_span(&mut stmt.span),
2.. => panic!( _ => panic!(
"cloning statement `NodeId`s is prohibited by default, \ "cloning statement `NodeId`s is prohibited by default, \
the visitor should implement custom statement visiting" the visitor should implement custom statement visiting"
), ),

View file

@ -39,7 +39,7 @@ pub fn beautify_doc_string(data: Symbol, kind: CommentKind) -> Symbol {
let mut i = 0; let mut i = 0;
let mut j = lines.len(); let mut j = lines.len();
// first line of all-stars should be omitted // first line of all-stars should be omitted
if !lines.is_empty() && lines[0].chars().all(|c| c == '*') { if lines.first().is_some_and(|line| line.chars().all(|c| c == '*')) {
i += 1; i += 1;
} }
@ -97,7 +97,7 @@ pub fn beautify_doc_string(data: Symbol, kind: CommentKind) -> Symbol {
return None; return None;
} }
} }
if lines.is_empty() { None } else { Some(lines[0][..i].into()) } Some(lines.first()?[..i].to_string())
} }
let data_s = data.as_str(); let data_s = data.as_str();