From a1f2db9aa92f8ca7bbbbe0a58d45eb679f8b4e1b Mon Sep 17 00:00:00 2001 From: cozis Date: Mon, 1 Nov 2021 16:22:34 +0000 Subject: [PATCH] bugfix --- samples/if-else.noja | 16 +++++----------- src/main.c | 24 ++---------------------- src/runtime/runtime.c | 4 ++++ 3 files changed, 11 insertions(+), 33 deletions(-) diff --git a/samples/if-else.noja b/samples/if-else.noja index 38f7d08..57b328e 100644 --- a/samples/if-else.noja +++ b/samples/if-else.noja @@ -1,12 +1,6 @@ -p = 1; -return p; - -if true - { - x = 7; - 2; - } -else - 4; -return x; \ No newline at end of file +if false + a = 1; +else + a = 2; +return a; \ No newline at end of file diff --git a/src/main.c b/src/main.c index eaaab31..e7ae31c 100644 --- a/src/main.c +++ b/src/main.c @@ -198,7 +198,7 @@ int main(int argc, char **argv) Object *result = run(runtime, (Error*) &error, exe, 0, NULL, 0); - if(result == NULL) + if(result == NULL || !Object_Print(result, stderr, (Error*) &error)) { fprintf(stderr, "RUNTIME ERROR: %s.\n", error.base.message); @@ -213,28 +213,8 @@ int main(int argc, char **argv) Runtime_Free(runtime); return 1; } - else - { - if(Object_IsInt(result)) - { - long long int val = Object_ToInt(result, (Error*) &error); - assert(error.base.occurred == 0); - - fprintf(stderr, "%lld\n", val); - } - else if(Object_IsFloat(result)) - { - double val = Object_ToFloat(result, (Error*) &error); - assert(error.base.occurred == 0); - - fprintf(stderr, "%f\n", val); - } - else - { - fprintf(stderr, "Not printing returned value since it's not an int or a float.\n"); - } - } + fprintf(stderr, "\n"); Runtime_Free(runtime); } diff --git a/src/runtime/runtime.c b/src/runtime/runtime.c index f66d744..ae5d993 100644 --- a/src/runtime/runtime.c +++ b/src/runtime/runtime.c @@ -462,6 +462,10 @@ static _Bool step(Runtime *runtime, Error *error) Error_Report(error, 1, "Reference to undefined variable \"%s\"", ops[0].as_string); return 0; } + + if(!Runtime_Push(runtime, error, obj)) + return 0; + return 1; }