From 131229686ae4d9c7d0936ad0b98d86ccaead4235 Mon Sep 17 00:00:00 2001 From: Nilstrieb <48135649+Nilstrieb@users.noreply.github.com> Date: Sun, 31 Oct 2021 21:04:46 +0100 Subject: [PATCH] fix return error --- src/lib.rs | 2 +- src/parse/mod.rs | 4 ++++ test.sl | 25 +++++++++++++++++-------- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 7ff5530..2da15a3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -19,7 +19,7 @@ pub fn run_program(program: &str) { let ast = parse::parse(tokens); match ast { - Ok(ast) => println!("{:#?}", ast), + Ok(ast) => println!("{:?}", ast), Err(err) => errors::display_error(program, err), } } else { diff --git a/src/parse/mod.rs b/src/parse/mod.rs index c1b498e..5bbf9c8 100644 --- a/src/parse/mod.rs +++ b/src/parse/mod.rs @@ -103,7 +103,11 @@ impl<'code> Parser<'code> { let keyword_span = self.expect(TokenType::Fn)?.span; let name = self.ident()?; let args = self.fn_args()?; + + self.inside_fn_depth += 1; let body = self.block()?; + self.inside_fn_depth -= 1; + Ok(Stmt::FnDecl(FnDecl { span: keyword_span.extend(body.span), name, diff --git a/test.sl b/test.sl index a74e57b..f08179e 100644 --- a/test.sl +++ b/test.sl @@ -1,9 +1,18 @@ -fn test() { - if true { - print; - } else if false { - dont_print; - } else { - "uwu"; +fn fizzbuzz() { + let i = 0; + while i < 100 { + # don't have function calls yet :( } -} \ No newline at end of file +} + +fn single_fizzbuzz(n) { + if n % 15 == 0 { + return "FizzBuzz"; + } else if n % 5 == 0 { + return "Buzz"; + } else if n % 3 == 0 { + return "Fizz"; + } else { + return n; + } +}