From fef66e345bd0561f09875477b38a4c8da27577c7 Mon Sep 17 00:00:00 2001 From: greg Date: Fri, 19 Oct 2018 17:43:22 -0700 Subject: [PATCH] Subpattern field --- schala-lang/language/src/reduced_ast.rs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/schala-lang/language/src/reduced_ast.rs b/schala-lang/language/src/reduced_ast.rs index a7c284e..b47d710 100644 --- a/schala-lang/language/src/reduced_ast.rs +++ b/schala-lang/language/src/reduced_ast.rs @@ -58,14 +58,15 @@ pub enum Expr { #[derive(Debug, Clone)] pub struct Alternative { pub tag: Option, - pub guard: Option, //TODO should be a vec + pub subpatterns: Vec, + pub guard: Option, pub bound_vars: Vec>>, //remember that order matters here pub item: Vec, } impl Alternative { fn default(item: Vec) -> Alternative { - Alternative { tag: None, guard: None, bound_vars: vec![], item } + Alternative { tag: None, subpatterns: vec![], guard: None, bound_vars: vec![], item } } } @@ -216,9 +217,13 @@ impl Pattern { }).collect(); */ + let guard = None; + let subpatterns = vec![]; + Alternative { tag: Some(tag), - guard: None, + subpatterns, + guard, bound_vars, item, } @@ -251,6 +256,7 @@ impl Pattern { }); Alternative { tag: None, + subpatterns: vec![], guard, bound_vars: vec![], item @@ -268,6 +274,7 @@ impl Pattern { }); Alternative { tag: None, + subpatterns: vec![], guard, bound_vars: vec![], item @@ -277,6 +284,7 @@ impl Pattern { Some(symbol) => handle_symbol(symbol, &vec![], item), None => Alternative { tag: None, + subpatterns: vec![], guard: None, bound_vars: vec![Some(var.clone())], item