diff options
Diffstat (limited to 'src/semantic')
| -rw-r--r-- | src/semantic/analysis.rs | 2 | ||||
| -rw-r--r-- | src/semantic/ir.rs | 4 | ||||
| -rw-r--r-- | src/semantic/translate.rs | 5 | 
3 files changed, 6 insertions, 5 deletions
diff --git a/src/semantic/analysis.rs b/src/semantic/analysis.rs index 4c936f3..973e703 100644 --- a/src/semantic/analysis.rs +++ b/src/semantic/analysis.rs @@ -222,7 +222,7 @@ fn trans_exp<'a, 'b, F: frame::Frame>(                  &Add => {                      match (left_ty, right_ty) {                          (Ty::Int, Ty::Int) => { -                            Ok((tr.make_binop(ir::Binop::Plus, left_exp, right_exp), +                            Ok((tr.make_binop(ir::BinOp::Plus, left_exp, right_exp),                                  Ty::Int))                          }                          (Ty::String, Ty::String) => { diff --git a/src/semantic/ir.rs b/src/semantic/ir.rs index be358c4..f92cf27 100644 --- a/src/semantic/ir.rs +++ b/src/semantic/ir.rs @@ -1,7 +1,7 @@  use super::temp;  #[derive(Debug)] -pub enum Binop { +pub enum BinOp {      Plus,  } @@ -10,7 +10,7 @@ pub enum Expression {      Const(u64),      Name(temp::TempLabel),      Temp(temp::TempName), -    Binop(Binop, Box<Expression>, Box<Expression>), +    BinOp(BinOp, Box<Expression>, Box<Expression>),      Memory(Box<Expression>),      Call(Box<Expression>, Vec<Expression>),      Seq(Vec<Statement>, Box<Expression>), diff --git a/src/semantic/translate.rs b/src/semantic/translate.rs index 4a2b6c5..57581a4 100644 --- a/src/semantic/translate.rs +++ b/src/semantic/translate.rs @@ -50,11 +50,12 @@ impl<F: frame::Frame> Translate<F> {          Expression::Exp(ir::Expression::Const(num))      } -    pub fn make_binop(&mut self, op: ir::Binop, +    pub fn make_binop(&mut self, op: ir::BinOp,                        left: Expression, right: Expression) -> Expression {          match (left, right) {              (Expression::Exp(left), Expression::Exp(right)) => -                Expression::Exp(ir::Expression::Binop(op, Box::new(left), Box::new(right))), +                Expression::Exp(ir::Expression::BinOp(op, Box::new(left), Box::new(right))), +            // TODO: return Result              _ => panic!("Can't make binop from Void"),          }      }  | 
