Fix assign; make reduced ir test pass
This commit is contained in:
parent
856a0808de
commit
630420b114
@ -38,5 +38,6 @@ fn test_ir() {
|
|||||||
"#;
|
"#;
|
||||||
|
|
||||||
let reduced = build_ir(src);
|
let reduced = build_ir(src);
|
||||||
assert!(1 == 2);
|
assert_eq!(reduced.functions.len(), 3);
|
||||||
|
//assert!(1 == 2);
|
||||||
}
|
}
|
||||||
|
@ -130,6 +130,12 @@ enum Primitive {
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Primitive {
|
||||||
|
fn unit() -> Self {
|
||||||
|
Primitive::Tuple(vec![])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl From<Literal> for Primitive {
|
impl From<Literal> for Primitive {
|
||||||
fn from(lit: Literal) -> Self {
|
fn from(lit: Literal) -> Self {
|
||||||
Primitive::Literal(lit)
|
Primitive::Literal(lit)
|
||||||
@ -240,9 +246,9 @@ impl<'a> State<'a> {
|
|||||||
},
|
},
|
||||||
Expression::Assign { ref lval, box rval } => {
|
Expression::Assign { ref lval, box rval } => {
|
||||||
let mem = lval.into();
|
let mem = lval.into();
|
||||||
let _ = rval;
|
let evaluated = self.expression(rval)?;
|
||||||
let _env = self.environments.lookup(&mem);
|
self.environments.insert(mem, RuntimeValue::Primitive(evaluated));
|
||||||
return Err("Assign not implemented".into());
|
Primitive::unit()
|
||||||
},
|
},
|
||||||
Expression::Call { box f, args } => self.call_expression(f, args)?,
|
Expression::Call { box f, args } => self.call_expression(f, args)?,
|
||||||
Expression::Callable(func) => Primitive::Callable(func),
|
Expression::Callable(func) => Primitive::Callable(func),
|
||||||
|
@ -20,7 +20,7 @@ fn eval_assert(input: &str, expected: &str) {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_basic_eval() {
|
fn test_basic_eval() {
|
||||||
eval_assert("1 + 2", "3");
|
eval_assert("1 + 2", "3");
|
||||||
//eval_assert("let mut a = 1; a = 2", "()");
|
eval_assert("let mut a = 1; a = 2", "()");
|
||||||
/*
|
/*
|
||||||
test_in_fresh_env!("let mut a = 1; a = 2; a", "2");
|
test_in_fresh_env!("let mut a = 1; a = 2; a", "2");
|
||||||
test_in_fresh_env!(r#"("a", 1 + 2)"#, r#"("a", 3)"#);
|
test_in_fresh_env!(r#"("a", 1 + 2)"#, r#"("a", 3)"#);
|
||||||
|
Loading…
Reference in New Issue
Block a user