conlang: Introduce ..rest Patterns, refactor Ranges
This commit is contained in:
@@ -246,6 +246,8 @@ pub trait Fold {
|
||||
match p {
|
||||
Pattern::Name(sym) => Pattern::Name(self.fold_sym(sym)),
|
||||
Pattern::Literal(literal) => Pattern::Literal(self.fold_literal(literal)),
|
||||
Pattern::Rest(Some(name)) => Pattern::Rest(Some(self.fold_pattern(*name).into())),
|
||||
Pattern::Rest(None) => Pattern::Rest(None),
|
||||
Pattern::Ref(mutability, pattern) => Pattern::Ref(
|
||||
self.fold_mutability(mutability),
|
||||
Box::new(self.fold_pattern(*pattern)),
|
||||
|
||||
@@ -211,6 +211,8 @@ pub trait Visit<'a>: Sized {
|
||||
match p {
|
||||
Pattern::Name(name) => self.visit_sym(name),
|
||||
Pattern::Literal(literal) => self.visit_literal(literal),
|
||||
Pattern::Rest(Some(name)) => self.visit_pattern(name),
|
||||
Pattern::Rest(None) => {}
|
||||
Pattern::Ref(mutability, pattern) => {
|
||||
self.visit_mutability(mutability);
|
||||
self.visit_pattern(pattern);
|
||||
@@ -247,7 +249,7 @@ pub trait Visit<'a>: Sized {
|
||||
self.visit_pattern(pat);
|
||||
self.visit_expr(expr);
|
||||
}
|
||||
|
||||
|
||||
fn visit_assign(&mut self, a: &'a Assign) {
|
||||
let Assign { parts } = a;
|
||||
let (head, tail) = parts.as_ref();
|
||||
|
||||
Reference in New Issue
Block a user