From 35944a5565c0708e5c082fd4ad234ae1890ae68e Mon Sep 17 00:00:00 2001 From: Wang Renxin Date: Sat, 10 Mar 2018 14:06:34 +0800 Subject: [PATCH] *fixed a stepping bug in the `if` statement. --- HISTORY | 1 + core/my_basic.c | 7 ++++++- core/my_basic.h | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/HISTORY b/HISTORY index fc3785b..2bf5235 100755 --- a/HISTORY +++ b/HISTORY @@ -1,5 +1,6 @@ Mar. 9 2018 Fixed a GC bug with ranged FOR loop +Fixed a stepping bug in the IF statement Jan. 15 2018 Fixed a crash bug with invalid collection index diff --git a/core/my_basic.c b/core/my_basic.c index c246e81..79f1467 100755 --- a/core/my_basic.c +++ b/core/my_basic.c @@ -293,6 +293,7 @@ MBCONST static const char* const _ERR_DESC[] = { "Operation failed", "Operator expected", "Assign operator expected", + "THEN statement expected", "ELSE statement expected", "ENDIF statement expected", "TO statement expected", @@ -15654,7 +15655,11 @@ _elseif: skip = true; if(!_IS_FUNC(obj, _core_then)) { - _handle_error_on_obj(s, SE_RN_INTEGER_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); + if(ast->prev && _IS_FUNC(ast->prev->data, _core_then)) { + ast = ast->prev; + } else { + _handle_error_on_obj(s, SE_RN_THEN_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); + } } if(ast && ast->next && _IS_EOS(ast->next->data)) { diff --git a/core/my_basic.h b/core/my_basic.h index db4b318..8cfa9b2 100755 --- a/core/my_basic.h +++ b/core/my_basic.h @@ -434,6 +434,7 @@ typedef enum mb_error_e { SE_RN_OPERATION_FAILED, SE_RN_OPERATOR_EXPECTED, SE_RN_ASSIGN_OPERATOR_EXPECTED, + SE_RN_THEN_EXPECTED, SE_RN_ELSE_EXPECTED, SE_RN_ENDIF_EXPECTED, SE_RN_TO_EXPECTED,