diff --git a/src/codegen_x86_64.rs b/src/codegen_x86_64.rs index 9fecc46..dd6ad99 100644 --- a/src/codegen_x86_64.rs +++ b/src/codegen_x86_64.rs @@ -564,7 +564,7 @@ _builtin_environ: } else { let var = match env.get_var(&name.lexeme) { Some(x) => x, - None => unreachable!(), + None => unreachable!("this should be caught in the typechecker"), }; emit!( &mut self.output, diff --git a/src/typechecker.rs b/src/typechecker.rs index 3ec74a4..07fb7a7 100644 --- a/src/typechecker.rs +++ b/src/typechecker.rs @@ -219,7 +219,7 @@ impl<'a> TypeChecker<'a> { Ok(()) } - pub fn typecheck_expr(&mut self, env: &mut Env, expr: &Expr) -> Result { + pub fn typecheck_expr(&self, env: &mut Env, expr: &Expr) -> Result { match expr { Expr::Binary { left, op, right } => { let left_type = self.typecheck_expr(env, left)?; @@ -370,7 +370,7 @@ impl<'a> TypeChecker<'a> { } => { if let Expr::Variable(callee_name) = &**callee { if self.analyzer.functions.contains_key(&callee_name.lexeme) { - let fn_type = &self.analyzer.functions[&callee_name.lexeme].clone(); + let fn_type = &self.analyzer.functions[&callee_name.lexeme]; // its a function (defined/builtin/extern) if let Some(params) = fn_type.params.clone() { for (i, arg) in args.iter().enumerate() {