Skip to content

Commit aa945e3

Browse files
committed
Adjust 'ast::PatKind::{TupleStruct,Tuple,Slice}'.
1 parent 9d6684c commit aa945e3

File tree

4 files changed

+21
-37
lines changed

4 files changed

+21
-37
lines changed

src/libsyntax/ast.rs

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -559,18 +559,13 @@ impl Pat {
559559
return false;
560560
}
561561

562-
match self.node {
563-
PatKind::Ident(_, _, Some(ref p)) => p.walk(it),
564-
PatKind::Struct(_, ref fields, _) => fields.iter().all(|field| field.node.pat.walk(it)),
565-
PatKind::TupleStruct(_, ref s, _) | PatKind::Tuple(ref s, _) => {
562+
match &self.node {
563+
PatKind::Ident(_, _, Some(p)) => p.walk(it),
564+
PatKind::Struct(_, fields, _) => fields.iter().all(|field| field.node.pat.walk(it)),
565+
PatKind::TupleStruct(_, s) | PatKind::Tuple(s) | PatKind::Slice(s) => {
566566
s.iter().all(|p| p.walk(it))
567567
}
568-
PatKind::Box(ref s) | PatKind::Ref(ref s, _) | PatKind::Paren(ref s) => s.walk(it),
569-
PatKind::Slice(ref before, ref slice, ref after) => {
570-
before.iter().all(|p| p.walk(it))
571-
&& slice.iter().all(|p| p.walk(it))
572-
&& after.iter().all(|p| p.walk(it))
573-
}
568+
PatKind::Box(s) | PatKind::Ref(s, _) | PatKind::Paren(s) => s.walk(it),
574569
PatKind::Wild
575570
| PatKind::Rest
576571
| PatKind::Lit(_)
@@ -639,9 +634,7 @@ pub enum PatKind {
639634
Struct(Path, Vec<Spanned<FieldPat>>, /* recovered */ bool),
640635

641636
/// A tuple struct/variant pattern (`Variant(x, y, .., z)`).
642-
/// If the `..` pattern fragment is present, then `Option<usize>` denotes its position.
643-
/// `0 <= position <= subpats.len()`.
644-
TupleStruct(Path, Vec<P<Pat>>, Option<usize>),
637+
TupleStruct(Path, Vec<P<Pat>>),
645638

646639
/// A possibly qualified path pattern.
647640
/// Unqualified path patterns `A::B::C` can legally refer to variants, structs, constants
@@ -650,9 +643,7 @@ pub enum PatKind {
650643
Path(Option<QSelf>, Path),
651644

652645
/// A tuple pattern (`(a, b)`).
653-
/// If the `..` pattern fragment is present, then `Option<usize>` denotes its position.
654-
/// `0 <= position <= subpats.len()`.
655-
Tuple(Vec<P<Pat>>, Option<usize>),
646+
Tuple(Vec<P<Pat>>),
656647

657648
/// A `box` pattern.
658649
Box(P<Pat>),
@@ -666,9 +657,8 @@ pub enum PatKind {
666657
/// A range pattern (e.g., `1...2`, `1..=2` or `1..2`).
667658
Range(P<Expr>, P<Expr>, Spanned<RangeEnd>),
668659

669-
/// `[a, b, ..i, y, z]` is represented as:
670-
/// `PatKind::Slice(box [a, b], Some(i), box [y, z])`
671-
Slice(Vec<P<Pat>>, Option<P<Pat>>, Vec<P<Pat>>),
660+
/// A slice pattern `[a, b, c]`.
661+
Slice(Vec<P<Pat>>),
672662

673663
/// A rest pattern `..`.
674664
///

src/libsyntax/ext/build.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -840,14 +840,14 @@ impl<'a> AstBuilder for ExtCtxt<'a> {
840840
}
841841
fn pat_tuple_struct(&self, span: Span, path: ast::Path,
842842
subpats: Vec<P<ast::Pat>>) -> P<ast::Pat> {
843-
self.pat(span, PatKind::TupleStruct(path, subpats, None))
843+
self.pat(span, PatKind::TupleStruct(path, subpats))
844844
}
845845
fn pat_struct(&self, span: Span, path: ast::Path,
846846
field_pats: Vec<Spanned<ast::FieldPat>>) -> P<ast::Pat> {
847847
self.pat(span, PatKind::Struct(path, field_pats, false))
848848
}
849849
fn pat_tuple(&self, span: Span, pats: Vec<P<ast::Pat>>) -> P<ast::Pat> {
850-
self.pat(span, PatKind::Tuple(pats, None))
850+
self.pat(span, PatKind::Tuple(pats))
851851
}
852852

853853
fn pat_some(&self, span: Span, pat: P<ast::Pat>) -> P<ast::Pat> {

src/libsyntax/mut_visit.rs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1026,9 +1026,9 @@ pub fn noop_visit_pat<T: MutVisitor>(pat: &mut P<Pat>, vis: &mut T) {
10261026
visit_opt(sub, |sub| vis.visit_pat(sub));
10271027
}
10281028
PatKind::Lit(e) => vis.visit_expr(e),
1029-
PatKind::TupleStruct(path, pats, _ddpos) => {
1029+
PatKind::TupleStruct(path, elems) => {
10301030
vis.visit_path(path);
1031-
visit_vec(pats, |pat| vis.visit_pat(pat));
1031+
visit_vec(elems, |elem| vis.visit_pat(elem));
10321032
}
10331033
PatKind::Path(qself, path) => {
10341034
vis.visit_qself(qself);
@@ -1043,19 +1043,15 @@ pub fn noop_visit_pat<T: MutVisitor>(pat: &mut P<Pat>, vis: &mut T) {
10431043
vis.visit_span(span);
10441044
};
10451045
}
1046-
PatKind::Tuple(elts, _ddpos) => visit_vec(elts, |elt| vis.visit_pat(elt)),
1046+
PatKind::Tuple(elems) => visit_vec(elems, |elem| vis.visit_pat(elem)),
10471047
PatKind::Box(inner) => vis.visit_pat(inner),
10481048
PatKind::Ref(inner, _mutbl) => vis.visit_pat(inner),
10491049
PatKind::Range(e1, e2, Spanned { span: _, node: _ }) => {
10501050
vis.visit_expr(e1);
10511051
vis.visit_expr(e2);
10521052
vis.visit_span(span);
10531053
}
1054-
PatKind::Slice(before, slice, after) => {
1055-
visit_vec(before, |pat| vis.visit_pat(pat));
1056-
visit_opt(slice, |slice| vis.visit_pat(slice));
1057-
visit_vec(after, |pat| vis.visit_pat(pat));
1058-
}
1054+
PatKind::Slice(elems) => visit_vec(elems, |elem| vis.visit_pat(elem)),
10591055
PatKind::Paren(inner) => vis.visit_pat(inner),
10601056
PatKind::Mac(mac) => vis.visit_mac(mac),
10611057
}

src/libsyntax/visit.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -428,9 +428,9 @@ pub fn walk_assoc_ty_constraint<'a, V: Visitor<'a>>(visitor: &mut V,
428428

429429
pub fn walk_pat<'a, V: Visitor<'a>>(visitor: &mut V, pattern: &'a Pat) {
430430
match pattern.node {
431-
PatKind::TupleStruct(ref path, ref children, _) => {
431+
PatKind::TupleStruct(ref path, ref elems) => {
432432
visitor.visit_path(path, pattern.id);
433-
walk_list!(visitor, visit_pat, children);
433+
walk_list!(visitor, visit_pat, elems);
434434
}
435435
PatKind::Path(ref opt_qself, ref path) => {
436436
if let Some(ref qself) = *opt_qself {
@@ -446,8 +446,8 @@ pub fn walk_pat<'a, V: Visitor<'a>>(visitor: &mut V, pattern: &'a Pat) {
446446
visitor.visit_pat(&field.node.pat)
447447
}
448448
}
449-
PatKind::Tuple(ref tuple_elements, _) => {
450-
walk_list!(visitor, visit_pat, tuple_elements);
449+
PatKind::Tuple(ref elems) => {
450+
walk_list!(visitor, visit_pat, elems);
451451
}
452452
PatKind::Box(ref subpattern) |
453453
PatKind::Ref(ref subpattern, _) |
@@ -464,10 +464,8 @@ pub fn walk_pat<'a, V: Visitor<'a>>(visitor: &mut V, pattern: &'a Pat) {
464464
visitor.visit_expr(upper_bound);
465465
}
466466
PatKind::Wild | PatKind::Rest => {},
467-
PatKind::Slice(ref prepatterns, ref slice_pattern, ref postpatterns) => {
468-
walk_list!(visitor, visit_pat, prepatterns);
469-
walk_list!(visitor, visit_pat, slice_pattern);
470-
walk_list!(visitor, visit_pat, postpatterns);
467+
PatKind::Slice(ref elems) => {
468+
walk_list!(visitor, visit_pat, elems);
471469
}
472470
PatKind::Mac(ref mac) => visitor.visit_mac(mac),
473471
}

0 commit comments

Comments
 (0)