Remove refs from pat slices
This commit is contained in:
parent
26366828a4
commit
1537cd4fb1
12 changed files with 85 additions and 68 deletions
|
@ -808,13 +808,13 @@ impl<'hir> Pat<'hir> {
|
|||
}
|
||||
|
||||
use PatKind::*;
|
||||
match &self.kind {
|
||||
match self.kind {
|
||||
Wild | Lit(_) | Range(..) | Binding(.., None) | Path(_) => true,
|
||||
Box(s) | Ref(s, _) | Binding(.., Some(s)) => s.walk_short_(it),
|
||||
Struct(_, fields, _) => fields.iter().all(|field| field.pat.walk_short_(it)),
|
||||
TupleStruct(_, s, _) | Tuple(s, _) | Or(s) => s.iter().all(|p| p.walk_short_(it)),
|
||||
Slice(before, slice, after) => {
|
||||
before.iter().chain(slice.iter()).chain(after.iter()).all(|p| p.walk_short_(it))
|
||||
before.iter().chain(slice).chain(after.iter()).all(|p| p.walk_short_(it))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -836,13 +836,13 @@ impl<'hir> Pat<'hir> {
|
|||
}
|
||||
|
||||
use PatKind::*;
|
||||
match &self.kind {
|
||||
match self.kind {
|
||||
Wild | Lit(_) | Range(..) | Binding(.., None) | Path(_) => {}
|
||||
Box(s) | Ref(s, _) | Binding(.., Some(s)) => s.walk_(it),
|
||||
Struct(_, fields, _) => fields.iter().for_each(|field| field.pat.walk_(it)),
|
||||
TupleStruct(_, s, _) | Tuple(s, _) | Or(s) => s.iter().for_each(|p| p.walk_(it)),
|
||||
Slice(before, slice, after) => {
|
||||
before.iter().chain(slice.iter()).chain(after.iter()).for_each(|p| p.walk_(it))
|
||||
before.iter().chain(slice).chain(after.iter()).for_each(|p| p.walk_(it))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -940,11 +940,11 @@ pub enum PatKind<'hir> {
|
|||
/// A tuple struct/variant pattern `Variant(x, y, .., z)`.
|
||||
/// If the `..` pattern fragment is present, then `Option<usize>` denotes its position.
|
||||
/// `0 <= position <= subpats.len()`
|
||||
TupleStruct(QPath<'hir>, &'hir [&'hir Pat<'hir>], Option<usize>),
|
||||
TupleStruct(QPath<'hir>, &'hir [Pat<'hir>], Option<usize>),
|
||||
|
||||
/// An or-pattern `A | B | C`.
|
||||
/// Invariant: `pats.len() >= 2`.
|
||||
Or(&'hir [&'hir Pat<'hir>]),
|
||||
Or(&'hir [Pat<'hir>]),
|
||||
|
||||
/// A path pattern for an unit struct/variant or a (maybe-associated) constant.
|
||||
Path(QPath<'hir>),
|
||||
|
@ -952,7 +952,7 @@ pub enum PatKind<'hir> {
|
|||
/// A tuple pattern (e.g., `(a, b)`).
|
||||
/// If the `..` pattern fragment is present, then `Option<usize>` denotes its position.
|
||||
/// `0 <= position <= subpats.len()`
|
||||
Tuple(&'hir [&'hir Pat<'hir>], Option<usize>),
|
||||
Tuple(&'hir [Pat<'hir>], Option<usize>),
|
||||
|
||||
/// A `box` pattern.
|
||||
Box(&'hir Pat<'hir>),
|
||||
|
@ -975,7 +975,7 @@ pub enum PatKind<'hir> {
|
|||
/// ```
|
||||
/// PatKind::Slice([Binding(a), Binding(b)], Some(Wild), [Binding(c), Binding(d)])
|
||||
/// ```
|
||||
Slice(&'hir [&'hir Pat<'hir>], Option<&'hir Pat<'hir>>, &'hir [&'hir Pat<'hir>]),
|
||||
Slice(&'hir [Pat<'hir>], Option<&'hir Pat<'hir>>, &'hir [Pat<'hir>]),
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, PartialEq, Encodable, Debug, HashStable_Generic)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue