3062: Implement slice pattern AST > HIR lowering r=jplatte a=jplatte

WIP. The necessary changes for parsing are implemented, but actual inference is not yet. Just wanted to upload what I've got so far so it doesn't get duplicated :)

Will fix #3043

Co-authored-by: Jonas Platte <jplatte+git@posteo.de>
This commit is contained in:
bors[bot] 2020-02-11 21:46:36 +00:00 committed by GitHub
commit 759100fb0d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 64 additions and 13 deletions

View file

@ -394,7 +394,7 @@ pub enum Pat {
},
Slice {
prefix: Vec<PatId>,
rest: Option<PatId>,
slice: Option<PatId>,
suffix: Vec<PatId>,
},
Path(Path),
@ -425,8 +425,8 @@ impl Pat {
args.iter().copied().for_each(f);
}
Pat::Ref { pat, .. } => f(*pat),
Pat::Slice { prefix, rest, suffix } => {
let total_iter = prefix.iter().chain(rest.iter()).chain(suffix.iter());
Pat::Slice { prefix, slice, suffix } => {
let total_iter = prefix.iter().chain(slice.iter()).chain(suffix.iter());
total_iter.copied().for_each(f);
}
Pat::Record { args, .. } => {