From 86061cb74e902692c192aa2580914a05712cd281 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Sat, 3 Sep 2022 16:04:18 +0100 Subject: [PATCH] Fixed an argument list bug, found a casting bug --- scripts/fib.toy | 12 ++++++++++++ source/interpreter.c | 7 +++++++ 2 files changed, 19 insertions(+) create mode 100644 scripts/fib.toy diff --git a/scripts/fib.toy b/scripts/fib.toy new file mode 100644 index 0000000..1020a13 --- /dev/null +++ b/scripts/fib.toy @@ -0,0 +1,12 @@ +fn fib(n : int) { + if (n < 2) { + return n; + } + + return fib(n-1) + fib(n-2); +} + +for (var i = 0; i < 40; i++) { + var res = fib(i); + print (string)i + ": " + (string)res; +} \ No newline at end of file diff --git a/source/interpreter.c b/source/interpreter.c index 0e59365..11727b8 100644 --- a/source/interpreter.c +++ b/source/interpreter.c @@ -1450,6 +1450,13 @@ static bool execFnCall(Interpreter* interpreter) { } Literal arg = popLiteralArray(&arguments); + + if (IS_IDENTIFIER(arg)) { + Literal idn = arg; + parseIdentifierToValue(interpreter, &arg); + freeLiteral(idn); + } + if (!setScopeVariable(inner.scope, paramArray->literals[i], arg, false)) { printf(ERROR "[internal] Could not define parameter (bad type?)\n" RESET); //free, and skip out