*fixed a stepping bug in the if statement.

This commit is contained in:
Wang Renxin 2018-03-10 14:06:34 +08:00
parent ae4053c687
commit 35944a5565
3 changed files with 8 additions and 1 deletions

View File

@ -1,5 +1,6 @@
Mar. 9 2018 Mar. 9 2018
Fixed a GC bug with ranged FOR loop Fixed a GC bug with ranged FOR loop
Fixed a stepping bug in the IF statement
Jan. 15 2018 Jan. 15 2018
Fixed a crash bug with invalid collection index Fixed a crash bug with invalid collection index

View File

@ -293,6 +293,7 @@ MBCONST static const char* const _ERR_DESC[] = {
"Operation failed", "Operation failed",
"Operator expected", "Operator expected",
"Assign operator expected", "Assign operator expected",
"THEN statement expected",
"ELSE statement expected", "ELSE statement expected",
"ENDIF statement expected", "ENDIF statement expected",
"TO statement expected", "TO statement expected",
@ -15654,7 +15655,11 @@ _elseif:
skip = true; skip = true;
if(!_IS_FUNC(obj, _core_then)) { 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)) { if(ast && ast->next && _IS_EOS(ast->next->data)) {

View File

@ -434,6 +434,7 @@ typedef enum mb_error_e {
SE_RN_OPERATION_FAILED, SE_RN_OPERATION_FAILED,
SE_RN_OPERATOR_EXPECTED, SE_RN_OPERATOR_EXPECTED,
SE_RN_ASSIGN_OPERATOR_EXPECTED, SE_RN_ASSIGN_OPERATOR_EXPECTED,
SE_RN_THEN_EXPECTED,
SE_RN_ELSE_EXPECTED, SE_RN_ELSE_EXPECTED,
SE_RN_ENDIF_EXPECTED, SE_RN_ENDIF_EXPECTED,
SE_RN_TO_EXPECTED, SE_RN_TO_EXPECTED,