Auto merge of #35712 - oli-obk:exclusive_range_patterns, r=nikomatsakis
exclusive range patterns
adds `..` patterns to the language under a feature gate (`exclusive_range_pattern`).
This allows turning
``` rust
match i {
0...9 => {},
10...19 => {},
20...29 => {},
_ => {}
}
```
into
``` rust
match i {
0..10 => {},
10..20 => {},
20..30 => {},
_ => {}
}
```
This commit is contained in:
@@ -112,6 +112,10 @@ pub trait Folder : Sized {
|
||||
e.map(|e| noop_fold_expr(e, self))
|
||||
}
|
||||
|
||||
fn fold_range_end(&mut self, re: RangeEnd) -> RangeEnd {
|
||||
noop_fold_range_end(re, self)
|
||||
}
|
||||
|
||||
fn fold_opt_expr(&mut self, e: P<Expr>) -> Option<P<Expr>> {
|
||||
noop_fold_opt_expr(e, self)
|
||||
}
|
||||
@@ -1093,8 +1097,10 @@ pub fn noop_fold_pat<T: Folder>(p: P<Pat>, folder: &mut T) -> P<Pat> {
|
||||
}
|
||||
PatKind::Box(inner) => PatKind::Box(folder.fold_pat(inner)),
|
||||
PatKind::Ref(inner, mutbl) => PatKind::Ref(folder.fold_pat(inner), mutbl),
|
||||
PatKind::Range(e1, e2) => {
|
||||
PatKind::Range(folder.fold_expr(e1), folder.fold_expr(e2))
|
||||
PatKind::Range(e1, e2, end) => {
|
||||
PatKind::Range(folder.fold_expr(e1),
|
||||
folder.fold_expr(e2),
|
||||
folder.fold_range_end(end))
|
||||
},
|
||||
PatKind::Slice(before, slice, after) => {
|
||||
PatKind::Slice(before.move_map(|x| folder.fold_pat(x)),
|
||||
@@ -1107,6 +1113,10 @@ pub fn noop_fold_pat<T: Folder>(p: P<Pat>, folder: &mut T) -> P<Pat> {
|
||||
})
|
||||
}
|
||||
|
||||
pub fn noop_fold_range_end<T: Folder>(end: RangeEnd, _folder: &mut T) -> RangeEnd {
|
||||
end
|
||||
}
|
||||
|
||||
pub fn noop_fold_expr<T: Folder>(Expr {id, node, span, attrs}: Expr, folder: &mut T) -> Expr {
|
||||
Expr {
|
||||
node: match node {
|
||||
|
||||
Reference in New Issue
Block a user