diff --git a/src/compile.rs b/src/compile.rs index 943d2a5..e61a6fe 100644 --- a/src/compile.rs +++ b/src/compile.rs @@ -475,7 +475,6 @@ impl<'bc, 'gc> Compiler<'bc, 'gc> { for param in params.iter() { self.compile_expr(param)?; - todo!("no params yet") } self.push_instr(Instr::Load(offset), StackChange::Grow, call.span); diff --git a/tests/functions.rs b/tests/functions.rs index cc23c3a..d4c8a55 100644 --- a/tests/functions.rs +++ b/tests/functions.rs @@ -41,3 +41,47 @@ test2(); print "correct3"; "# ); + +run_test!( + parameters, + r#" +fn fancy_print(str) { + print str; +} + +fancy_print("correct"); +"# +); + +run_test!( + parameters_and_return, + r#" +fn add(a, b) { + return a + b; +} + +let added = add(1, 5); + +if added == 6 { + print "correct"; +} else { + print "FAILED"; +} +"# +); + +run_test!( + fib5, + r#" +fn fib(n) { + if n < 2 { + return n; + } else { + return fib(n - 1) + fib(n - 2); + } +} + +let fib5 = fib(5); +print fib5; +"# +);