From e25e5ecbf1ce7cbb064a10d4b7afc69687bef8e9 Mon Sep 17 00:00:00 2001 From: Kyle Gunger Date: Thu, 28 Mar 2024 15:29:02 -0400 Subject: fix reference bug --- compiler.c | 7 +++++-- tests/run.sh | 10 +++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/compiler.c b/compiler.c index cd11b0d..6bcb201 100644 --- a/compiler.c +++ b/compiler.c @@ -5022,9 +5022,12 @@ Variable _eval(Scope *s, CompData *data, Vector *tokens, size_t start, size_t en return rhs; } - if (op != 10 && !scope_is_tmp(&out)) { + if (op != 10 && (!scope_is_tmp(&out) || _var_ptr_type(&out) == PTYPE_REF)) { Variable tmp = scope_mk_tmp(s, data, &out); - var_end(&out); + if (scope_is_tmp(&out)) + scope_free_tmp(s, data, &out); + else + var_end(&out); out = tmp; } diff --git a/tests/run.sh b/tests/run.sh index 0fbb196..5c33f73 100755 --- a/tests/run.sh +++ b/tests/run.sh @@ -1,13 +1,21 @@ #!/bin/bash -make +FAILURE=0 for i in out/*.out; do ./$i if [[ $? -ne 69 ]]; then echo "[FAILED] $i" + FAILURE=1 else echo "[ OK ] $i" fi done +echo "==============" +if [[ $FAILURE -ne 0 ]]; then + echo " TESTS FAILED " +else + echo " TESTS PASSED " +fi +echo "==============" -- cgit v1.2.3