From c19a51424f760ed482a0f2955dedde0fb8146fbc Mon Sep 17 00:00:00 2001 From: Jeremy Wall Date: Mon, 29 Jul 2019 18:37:24 -0500 Subject: [PATCH] DEV: Not expressions compile --- src/build/opcode/test.rs | 8 ++++++++ src/build/opcode/translate.rs | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/build/opcode/test.rs b/src/build/opcode/test.rs index 3740824..c16e360 100644 --- a/src/build/opcode/test.rs +++ b/src/build/opcode/test.rs @@ -559,3 +559,11 @@ fn simple_binary_expr() { //"true && false;" => P(Bool(false)), ) } + +#[test] +fn simple_not_expr() { + assert_parse_cases!( + "not 1==1;" => P(Bool(false)), + "not 1!=1;" => P(Bool(true)), + ) +} diff --git a/src/build/opcode/translate.rs b/src/build/opcode/translate.rs index 783ac02..bc9b206 100644 --- a/src/build/opcode/translate.rs +++ b/src/build/opcode/translate.rs @@ -105,7 +105,10 @@ impl AST { Expression::Import(_) => unimplemented!("Import expressions are not implmented yet"), Expression::Include(_) => unimplemented!("Include expressions are not implmented yet"), Expression::Module(_) => unimplemented!("Module expressions are not implmented yet"), - Expression::Not(_) => unimplemented!("Not expressions are not implmented yet"), + Expression::Not(def) => { + Self::translate_expr(*def.expr, &mut ops); + ops.push(Op::Not); + } Expression::Range(_) => unimplemented!("Range expressions are not implmented yet"), Expression::Select(_) => unimplemented!("Select expressions are not implmented yet"), Expression::Call(_) => unimplemented!("Call expressions are not implmented yet"),