Starting to implement Ignored pattern

This commit is contained in:
greg 2018-10-18 01:54:36 -07:00
parent f2282f0101
commit dff204069f
1 changed files with 8 additions and 7 deletions

View File

@ -63,6 +63,12 @@ pub struct Alternative {
pub item: Vec<Stmt>, pub item: Vec<Stmt>,
} }
impl Alternative {
fn default(item: Vec<Stmt>) -> Alternative {
Alternative { tag: None, guard: None, bound_vars: vec![], item }
}
}
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub enum Lit { pub enum Lit {
Nat(u64), Nat(u64),
@ -156,12 +162,7 @@ fn reduce_if_expression(discriminator: &Discriminator, body: &IfExpressionBody,
let alternatives = vec![ let alternatives = vec![
pat.to_alternative(&cond, then_clause, symbol_table), pat.to_alternative(&cond, then_clause, symbol_table),
Alternative { Alternative::default(else_clause),
tag: None,
guard: None,
bound_vars: vec![],
item: else_clause,
},
]; ];
Expr::CaseMatch { Expr::CaseMatch {
@ -217,7 +218,7 @@ impl Pattern {
Record(_name, _pairs) => { Record(_name, _pairs) => {
unimplemented!() unimplemented!()
}, },
Ignored => unimplemented!(), Ignored => Alternative::default(item),
Literal(lit) => match lit { Literal(lit) => match lit {
PatternLiteral::NumPattern { neg, num } => { PatternLiteral::NumPattern { neg, num } => {
let comparison = Expr::Lit(match (neg, num) { let comparison = Expr::Lit(match (neg, num) {