From d290aeb20ecce08dd40b62a1da413e463924397a Mon Sep 17 00:00:00 2001 From: Wang Renxin Date: Sun, 17 Jan 2016 15:33:10 +0800 Subject: [PATCH] +added source file information to error handling; *fixed a memory leak. --- HISTORY | 4 + core/my_basic.c | 537 +++++++++++++++++++++++++++----------------- output/my_basic_mac | Bin 183576 -> 183856 bytes shell/main.c | 7 +- 4 files changed, 342 insertions(+), 206 deletions(-) diff --git a/HISTORY b/HISTORY index 0316056..38decf1 100755 --- a/HISTORY +++ b/HISTORY @@ -1,3 +1,7 @@ +Jan. 17 2016 +Added source file information to error handling +Fixed a memory leak with sub routine which returns a string + Jan. 16 2016 Added a range of integer syntax for the LIST statement, eg. LIST(m TO n) Added extra importing directories support to shell diff --git a/core/my_basic.c b/core/my_basic.c index 827c323..c4a27b2 100755 --- a/core/my_basic.c +++ b/core/my_basic.c @@ -302,6 +302,10 @@ typedef enum _data_e { _DT_OUTER_SCOPE, #endif /* MB_ENABLE_LAMBDA */ _DT_SEP, /* Separator */ +#ifdef MB_ENABLE_SOURCE_TRACE + _DT_PREV_IMPORT, + _DT_POST_IMPORT, +#endif /* MB_ENABLE_SOURCE_TRACE */ _DT_EOS /* End of statement */ } _data_e; @@ -471,6 +475,12 @@ typedef struct _routine_t { } func; } _routine_t; +#ifdef MB_ENABLE_SOURCE_TRACE +typedef struct _import_info_t { + char* source_file; +} _import_info_t; +#endif /* MB_ENABLE_SOURCE_TRACE */ + typedef union _raw_u { char c; int_t i; real_t r; void* p; mb_val_bytes_t b; } _raw_u; typedef unsigned char _raw_t[sizeof(_raw_u)]; @@ -499,6 +509,9 @@ typedef struct _object_t { #endif /* MB_ENABLE_CLASS */ _routine_t* routine; char separator; +#ifdef MB_ENABLE_SOURCE_TRACE + _import_info_t* import_info; +#endif /* MB_ENABLE_SOURCE_TRACE */ mb_val_bytes_t bytes; _raw_t raw; } data; @@ -646,6 +659,7 @@ typedef struct mb_interpreter_t { char* with_module; _ls_node_t* using_modules; #endif /* MB_ENABLE_MODULE */ + char* source_file; _ls_node_t* ast; _parsing_context_t* parsing_context; _running_context_t* running_context; @@ -667,7 +681,7 @@ typedef struct mb_interpreter_t { _ls_node_t* in_neg_expr; bool_t handled_error; mb_error_e last_error; - char* last_error_func; + char* last_error_file; int last_error_pos; unsigned short last_error_row; unsigned short last_error_col; @@ -884,7 +898,7 @@ static _object_t* _exp_assign = 0; val->type = _DT_REAL; \ _set_real_with_hex(val->data.float_point, MB_FINF); \ } \ - _handle_error_on_obj((__s), __kind, 0, ((__tuple) && *(__tuple)) ? ((_object_t*)(((_tuple3_t*)(*(__tuple)))->e1)) : 0, MB_FUNC_WARNING, __exit, __result); \ + _handle_error_on_obj((__s), __kind, (__s)->source_file, ((__tuple) && *(__tuple)) ? ((_object_t*)(((_tuple3_t*)(*(__tuple)))->e1)) : 0, MB_FUNC_WARNING, __exit, __result); \ } \ } while(0) @@ -905,7 +919,7 @@ static _object_t* _exp_assign = 0; (__a).value.float_point = (real_t)__f((__a).value.float_point); \ break; \ default: \ - _handle_error_on_obj(__s, SE_RN_NUMBER_EXPECTED, 0, ((__l) && *(__l)) ? ((_object_t*)(((_tuple3_t*)(*(__l)))->e1)) : 0, MB_FUNC_WARNING, __exit, __result); \ + _handle_error_on_obj(__s, SE_RN_NUMBER_EXPECTED, (__s)->source_file, ((__l) && *(__l)) ? ((_object_t*)(((_tuple3_t*)(*(__l)))->e1)) : 0, MB_FUNC_WARNING, __exit, __result); \ break; \ } \ mb_convert_to_int_if_posible(__a); @@ -913,7 +927,7 @@ static _object_t* _exp_assign = 0; #define _using_jump_set_of_instructional(__s, __obj, __exit, __result) \ do { \ if((__s)->jump_set & (~_JMP_INS)) { \ - _handle_error_on_obj(__s, SE_RN_DONT_MIX_INSTRUCTIONAL_AND_STRUCTURED, 0, DON(__obj), MB_FUNC_ERR, __exit, __result); \ + _handle_error_on_obj(__s, SE_RN_DONT_MIX_INSTRUCTIONAL_AND_STRUCTURED, (__s)->source_file, DON(__obj), MB_FUNC_ERR, __exit, __result); \ } else { \ (__s)->jump_set |= _JMP_INS; \ } \ @@ -922,7 +936,7 @@ static _object_t* _exp_assign = 0; #define _using_jump_set_of_structured(__s, __obj, __exit, __result) \ do { \ if((__s)->jump_set & (~_JMP_STR)) { \ - _handle_error_on_obj(__s, SE_RN_DONT_MIX_INSTRUCTIONAL_AND_STRUCTURED, 0, DON(__obj), MB_FUNC_ERR, __exit, __result); \ + _handle_error_on_obj(__s, SE_RN_DONT_MIX_INSTRUCTIONAL_AND_STRUCTURED, (__s)->source_file, DON(__obj), MB_FUNC_ERR, __exit, __result); \ } else { \ (__s)->jump_set |= _JMP_STR; \ } \ @@ -1084,7 +1098,7 @@ static bool_t _is_print_terminal(mb_interpreter_t* s, _object_t* obj); if((__s)->handled_error) break; \ (__s)->handled_error = true; \ ((__s)->error_handler)((__s), (__s)->last_error, (char*)mb_get_error_desc((__s)->last_error), \ - (__s)->last_error_func, \ + (__s)->last_error_file, \ (__s)->parsing_context ? (__s)->parsing_context->parsing_pos : (__s)->last_error_pos, \ (__s)->parsing_context ? (__s)->parsing_context->parsing_row : (__s)->last_error_row, \ (__s)->parsing_context ? (__s)->parsing_context->parsing_col : (__s)->last_error_col, \ @@ -1126,7 +1140,7 @@ static bool_t _is_print_terminal(mb_interpreter_t* s, _object_t* obj); #define _OUTTER_SCOPE(__s) ((__s)->prev ? (__s)->prev : (__s)) -static void _set_current_error(mb_interpreter_t* s, mb_error_e err, char* func); +static void _set_current_error(mb_interpreter_t* s, mb_error_e err, char* f); static mb_print_func_t _get_printer(mb_interpreter_t* s); static mb_input_func_t _get_inputer(mb_interpreter_t* s); @@ -1154,6 +1168,8 @@ static int _create_symbol(mb_interpreter_t* s, _ls_node_t* l, char* sym, _object static _data_e _get_symbol_type(mb_interpreter_t* s, char* sym, _raw_t* value); static int _parse_char(mb_interpreter_t* s, char c, int pos, unsigned short row, unsigned short col); static void _set_error_pos(mb_interpreter_t* s, int pos, unsigned short row, unsigned short col); +static char* _prev_import(mb_interpreter_t* s, char* lf, int* pos, unsigned short* row, unsigned short* col); +static char* _post_import(mb_interpreter_t* s, char* lf, int* pos, unsigned short* row, unsigned short* col); /** Object processors */ static int_t _get_size_of(_data_e type); @@ -2914,7 +2930,7 @@ _array: ast = ast->prev; result = _get_array_index(s, &ast, c, &arr_idx, 0); if(result != MB_FUNC_OK) { - _handle_error_on_obj(s, SE_RN_CALCULATION_ERROR, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CALCULATION_ERROR, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } ast = ast->next; _get_array_elem(s, c->data.array, arr_idx, &arr_val, &arr_type); @@ -2924,7 +2940,7 @@ _array: arr_elem->ref = true; _copy_bytes(arr_elem->data.bytes, arr_val.bytes); if(f) { - _handle_error_on_obj(s, SE_RN_OPERATOR_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_OPERATOR_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } _ls_pushback(opnd, arr_elem); f++; @@ -2946,7 +2962,7 @@ _array: running->calc_depth = calc_depth; } if(result != MB_FUNC_OK) { - _handle_error_on_obj(s, SE_RN_CALCULATION_ERROR, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CALCULATION_ERROR, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } c = _create_object(); _ls_pushback(garbage, c); @@ -2956,13 +2972,13 @@ _array: if(result != MB_FUNC_OK) goto _exit; if(f) { - _handle_error_on_obj(s, SE_RN_OPERATOR_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_OPERATOR_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } if(_is_array(c)) { goto _array; } else { if(ast && _IS_FUNC(ast->data, _core_open_bracket)) { - _handle_error_on_obj(s, SE_RN_SYNTAX, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_SYNTAX, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } } _ls_pushback(opnd, c); @@ -2974,7 +2990,7 @@ _routine: if(ast) ast = ast->prev; if(result != MB_FUNC_OK) { - _handle_error_on_obj(s, SE_RN_CALCULATION_ERROR, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CALCULATION_ERROR, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } c = _create_object(); _ls_pushback(garbage, c); @@ -2982,7 +2998,7 @@ _routine: if(result != MB_FUNC_OK) goto _exit; if(f) { - _handle_error_on_obj(s, SE_RN_OPERATOR_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_OPERATOR_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } _ls_pushback(opnd, c); f++; @@ -2995,7 +3011,7 @@ _routine: ast = ast->prev; result = _get_array_index(s, &ast, 0, &arr_idx, 0); if(result != MB_FUNC_OK) { - _handle_error_on_obj(s, SE_RN_CALCULATION_ERROR, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CALCULATION_ERROR, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } ast = ast->next; _get_array_elem(s, c->data.variable->data->data.array, arr_idx, &arr_val, &arr_type); @@ -3015,7 +3031,7 @@ _routine: mb_assert(0 && "Unsupported."); } if(f) { - _handle_error_on_obj(s, SE_RN_OPERATOR_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_OPERATOR_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } _ls_pushback(opnd, arr_elem); f++; @@ -3058,7 +3074,7 @@ _routine: case _DT_LIST: mb_check(mb_pop_int(s, (void**)l, &idx)); if(!_at_list(ocoll->data.list, idx, &ret)) { - _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } break; @@ -3066,7 +3082,7 @@ _routine: mb_make_nil(key); mb_check(mb_pop_value(s, (void**)l, &key)); if(!_find_dict(ocoll->data.dict, &key, &ret)) { - _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } break; @@ -3087,13 +3103,13 @@ _routine: } #endif /* MB_ENABLE_COLLECTION_LIB */ if(_IS_FUNC(_err_or_bracket, _core_open_bracket)) { - _handle_error_on_obj(s, SE_RN_INVALID_ID_USAGE, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_ID_USAGE, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } } while(0); } } if(f) { - _handle_error_on_obj(s, SE_RN_OPERATOR_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_OPERATOR_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } _ls_pushback(opnd, c); f++; @@ -3105,7 +3121,7 @@ _routine: if(c->type == _DT_FUNC && !_is_operator(c->data.func->pointer) && !_is_flow(c->data.func->pointer)) { _ls_foreach(opnd, _remove_source_object); - _handle_error_on_obj(s, SE_RN_COLON_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLON_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } ast = ast->next; } else { @@ -3135,7 +3151,7 @@ _routine: r = _operate_operand(s, theta, a, b, &result); if(!r) { _ls_clear(optr); - _handle_error_on_obj(s, SE_RN_OPERATION_FAILED, 0, DON(errn), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_OPERATION_FAILED, s->source_file, DON(errn), MB_FUNC_ERR, _exit, result); } _ls_pushback(opnd, r); _ls_pushback(garbage, r); @@ -3148,7 +3164,7 @@ _routine: } if(errn) { - _handle_error_on_obj(s, SE_RN_CLOSE_BRACKET_EXPECTED, 0, DON(errn), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CLOSE_BRACKET_EXPECTED, s->source_file, DON(errn), MB_FUNC_ERR, _exit, result); } c = (_object_t*)(_ls_popback(opnd)); @@ -3288,7 +3304,7 @@ int _eval_routine(mb_interpreter_t* s, _ls_node_t** l, mb_value_t* va, unsigned } else if(r->type == _IT_NATIVE && r->func.native.entry) { result = _eval_native_routine(s, l, va, ca, r, has_arg, pop_arg); } else { - _handle_error_on_obj(s, SE_RN_INVALID_ROUTINE, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_ROUTINE, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } _exit: @@ -3353,7 +3369,7 @@ int _eval_script_routine(mb_interpreter_t* s, _ls_node_t** l, mb_value_t* va, un *l = r->func.basic.entry; if(!(*l)) { - _handle_error_on_obj(s, SE_RN_INVALID_ROUTINE, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_ROUTINE, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } do { @@ -3365,14 +3381,14 @@ int _eval_script_routine(mb_interpreter_t* s, _ls_node_t** l, mb_value_t* va, un break; } if(result == MB_FUNC_SUSPEND && s->error_handler) { - _handle_error_now(s, SE_RN_DONT_SUSPEND_IN_A_ROUTINE, s->last_error_func, result); + _handle_error_now(s, SE_RN_DONT_SUSPEND_IN_A_ROUTINE, s->last_error_file, result); goto _exit; } if(result != MB_FUNC_OK && s->error_handler) { if(result >= MB_EXTENDED_ABORT) s->last_error = SE_EA_EXTENDED_ABORT; - _handle_error_now(s, s->last_error, s->last_error_func, result); + _handle_error_now(s, s->last_error, s->last_error_file, result); goto _exit; } @@ -3444,7 +3460,7 @@ int _eval_lambda_routine(mb_interpreter_t* s, _ls_node_t** l, mb_value_t* va, un *l = r->func.lambda.entry; if(!(*l)) { - _handle_error_on_obj(s, SE_RN_INVALID_ROUTINE, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_ROUTINE, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } do { @@ -3456,14 +3472,14 @@ int _eval_lambda_routine(mb_interpreter_t* s, _ls_node_t** l, mb_value_t* va, un break; } if(result == MB_FUNC_SUSPEND && s->error_handler) { - _handle_error_now(s, SE_RN_DONT_SUSPEND_IN_A_ROUTINE, s->last_error_func, result); + _handle_error_now(s, SE_RN_DONT_SUSPEND_IN_A_ROUTINE, s->last_error_file, result); goto _exit; } if(result != MB_FUNC_OK && s->error_handler) { if(result >= MB_EXTENDED_ABORT) s->last_error = SE_EA_EXTENDED_ABORT; - _handle_error_now(s, s->last_error, s->last_error_func, result); + _handle_error_now(s, s->last_error, s->last_error_file, result); goto _exit; } @@ -3508,7 +3524,7 @@ int _eval_native_routine(mb_interpreter_t* s, _ls_node_t** l, mb_value_t* va, un entry = r->func.native.entry; if(!entry) { - _handle_error_on_obj(s, SE_RN_INVALID_ROUTINE, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_ROUTINE, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } result = entry(s, (void**)l, va, ca, r, has_arg, pop_arg); @@ -3578,13 +3594,13 @@ bool_t _is_print_terminal(mb_interpreter_t* s, _object_t* obj) { } /** Others */ -void _set_current_error(mb_interpreter_t* s, mb_error_e err, char* func) { +void _set_current_error(mb_interpreter_t* s, mb_error_e err, char* f) { /* Set current error information */ mb_assert(s && err >= 0 && err < _countof(_ERR_DESC)); if(s->last_error == SE_NO_ERR) { s->last_error = err; - s->last_error_func = func; + s->last_error_file = f; } } @@ -4129,6 +4145,7 @@ _data_e _get_symbol_type(mb_interpreter_t* s, char* sym, _raw_t* value) { context->last_symbol = 0; sym[_sl - 1] = '\0'; context->parsing_state = _PS_NORMAL; + /* Using a module */ if(_is_using_char(*(sym + 1))) { #ifdef MB_ENABLE_MODULE char* ns = mb_strdup(sym + 2, strlen(sym + 2) + 1); @@ -4140,20 +4157,25 @@ _data_e _get_symbol_type(mb_interpreter_t* s, char* sym, _raw_t* value) { goto _end_import; #else /* MB_ENABLE_MODULE */ - _handle_error_now(s, SE_RN_NOT_SUPPORTED, 0, MB_FUNC_ERR); + _handle_error_now(s, SE_RN_NOT_SUPPORTED, s->source_file, MB_FUNC_ERR); goto _end_import; #endif /* MB_ENABLE_MODULE */ } + /* Import another file */ buf = _load_file(s, sym + 1, ":"); if(buf) { if(buf != sym + 1) { + char* lf = (char*)(_ls_back(context->imported)->data); + int pos; unsigned short row, col; + lf = _prev_import(s, lf, &pos, &row, &col); mb_load_string(s, buf); safe_free(buf); + _post_import(s, lf, &pos, &row, &col); } } else { if(!s->import_handler || s->import_handler(s, sym + 1) != MB_FUNC_OK) { - _handle_error_now(s, SE_PS_FILE_OPEN_FAILED, 0, MB_FUNC_ERR); + _handle_error_now(s, SE_PS_FILE_OPEN_FAILED, s->source_file, MB_FUNC_ERR); } } @@ -4204,7 +4226,7 @@ _end_import: glbsyminscope = _search_identifier_in_scope_chain(s, 0, sym, 0, 0, 0); if(glbsyminscope && ((_object_t*)glbsyminscope->data)->type == _DT_CLASS) { if(_IS_FUNC(context->last_symbol, _core_class)) { - _handle_error_now(s, SE_RN_DUPLICATE_CLASS, 0, MB_FUNC_ERR); + _handle_error_now(s, SE_RN_DUPLICATE_CLASS, s->source_file, MB_FUNC_ERR); } result = _DT_CLASS; @@ -4212,7 +4234,7 @@ _end_import: } if(_IS_FUNC(context->last_symbol, _core_class)) { if(s->last_instance) { - _handle_error_now(s, SE_RN_DUPLICATE_CLASS, 0, MB_FUNC_ERR); + _handle_error_now(s, SE_RN_DUPLICATE_CLASS, s->source_file, MB_FUNC_ERR); goto _exit; } @@ -4223,13 +4245,13 @@ _end_import: goto _exit; } if(glbsyminscope && ((_object_t*)glbsyminscope->data)->type == _DT_VAR) { - _handle_error_now(s, SE_RN_INVALID_CLASS, 0, MB_FUNC_ERR); + _handle_error_now(s, SE_RN_INVALID_CLASS, s->source_file, MB_FUNC_ERR); goto _exit; } if(context->routine_state > 1) { - _handle_error_now(s, SE_RN_INVALID_CLASS, 0, MB_FUNC_ERR); + _handle_error_now(s, SE_RN_INVALID_CLASS, s->source_file, MB_FUNC_ERR); goto _exit; } @@ -4262,14 +4284,14 @@ _end_import: goto _exit; } if(glbsyminscope && ((_object_t*)glbsyminscope->data)->type == _DT_VAR) { - _handle_error_now(s, SE_RN_INVALID_ROUTINE, 0, MB_FUNC_ERR); + _handle_error_now(s, SE_RN_INVALID_ROUTINE, s->source_file, MB_FUNC_ERR); goto _exit; } if(_IS_FUNC(context->last_symbol, _core_def)) { if(context->routine_state > 1) { - _handle_error_now(s, SE_RN_INVALID_ROUTINE, 0, MB_FUNC_ERR); + _handle_error_now(s, SE_RN_INVALID_ROUTINE, s->source_file, MB_FUNC_ERR); goto _exit; } @@ -4425,7 +4447,7 @@ int _parse_char(mb_interpreter_t* s, char c, int pos, unsigned short row, unsign _mb_check(result = _append_char_to_symbol(s, c), _exit); } } else { - _handle_error(s, SE_PS_INVALID_CHAR, 0, pos, row, col, MB_FUNC_ERR, _exit, result); + _handle_error(s, SE_PS_INVALID_CHAR, s->source_file, pos, row, col, MB_FUNC_ERR, _exit, result); } } else if(context->symbol_state == _SS_OPERATOR) { if(_is_identifier_char(c)) { @@ -4437,7 +4459,7 @@ int _parse_char(mb_interpreter_t* s, char c, int pos, unsigned short row, unsign _mb_check(result = _cut_symbol(s, pos, row, col), _exit); _mb_check(result = _append_char_to_symbol(s, c), _exit); } else { - _handle_error(s, SE_PS_INVALID_CHAR, 0, pos, row, col, MB_FUNC_ERR, _exit, result); + _handle_error(s, SE_PS_INVALID_CHAR, s->source_file, pos, row, col, MB_FUNC_ERR, _exit, result); } } else { mb_assert(0 && "Impossible."); @@ -4474,6 +4496,94 @@ void _set_error_pos(mb_interpreter_t* s, int pos, unsigned short row, unsigned s s->last_error_col = col; } +char* _prev_import(mb_interpreter_t* s, char* lf, int* pos, unsigned short* row, unsigned short* col) { + /* Prev importing another file */ +#ifdef MB_ENABLE_SOURCE_TRACE + char* result = 0; + _parsing_context_t* context = 0; + _import_info_t* info = 0; + _object_t* obj = 0; + + mb_assert(s); + + context = s->parsing_context; + if(context) { + if(pos) *pos = context->parsing_pos; + if(row) *row = context->parsing_row; + if(col) *col = context->parsing_col; + context->parsing_pos = 0; + context->parsing_row = 1; + context->parsing_col = 0; + } + + result = s->source_file; + s->source_file = lf; + + obj = _create_object(); + obj->type = _DT_EOS; + obj->ref = false; + _ls_pushback(s->ast, obj); + + info = (_import_info_t*)mb_malloc(sizeof(_import_info_t)); + info->source_file = lf ? mb_strdup(lf, strlen(lf) + 1) : 0; + obj = _create_object(); + obj->type = _DT_PREV_IMPORT; + obj->ref = false; + obj->data.import_info = info; + _ls_pushback(s->ast, obj); + + return result; +#else /* MB_ENABLE_SOURCE_TRACE */ + mb_unrefvar(s); + mb_unrefvar(lf); + mb_unrefvar(pos); + mb_unrefvar(row); + mb_unrefvar(col); + + return 0; +#endif /* MB_ENABLE_SOURCE_TRACE */ +} + +char* _post_import(mb_interpreter_t* s, char* lf, int* pos, unsigned short* row, unsigned short* col) { + /* Post importing another file */ +#ifdef MB_ENABLE_SOURCE_TRACE + char* result = 0; + _parsing_context_t* context = 0; + _import_info_t* info = 0; + _object_t* obj = 0; + + mb_assert(s); + + context = s->parsing_context; + if(context) { + if(pos) context->parsing_pos = *pos; + if(row) context->parsing_row = *row; + if(col) context->parsing_col = *col; + } + + s->source_file = lf; + result = s->source_file; + + info = (_import_info_t*)mb_malloc(sizeof(_import_info_t)); + info->source_file = lf ? mb_strdup(lf, strlen(lf) + 1) : 0; + obj = _create_object(); + obj->type = _DT_POST_IMPORT; + obj->ref = false; + obj->data.import_info = info; + _ls_pushback(s->ast, obj); + + return result; +#else /* MB_ENABLE_SOURCE_TRACE */ + mb_unrefvar(s); + mb_unrefvar(lf); + mb_unrefvar(pos); + mb_unrefvar(row); + mb_unrefvar(col); + + return 0; +#endif /* MB_ENABLE_SOURCE_TRACE */ +} + int_t _get_size_of(_data_e type) { /* Get the size of a data type */ int_t result = 0; @@ -5184,7 +5294,7 @@ int _get_array_index(mb_interpreter_t* s, _ls_node_t** l, _object_t* c, unsigned if(!c && ast && _is_array(ast->data)) c = (_object_t*)ast->data; if(!_is_array(c)) { - _handle_error_on_obj(s, SE_RN_ARRAY_IDENTIFIER_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_ARRAY_IDENTIFIER_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } if(((_object_t*)c)->type == _DT_ARRAY) arr = (_object_t*)c; @@ -5198,14 +5308,14 @@ int _get_array_index(mb_interpreter_t* s, _ls_node_t** l, _object_t* c, unsigned } /* ( */ if(!ast->next || ((_object_t*)ast->next->data)->type != _DT_FUNC || ((_object_t*)ast->next->data)->data.func->pointer != _core_open_bracket) { - _handle_error_on_obj(s, SE_RN_OPEN_BRACKET_EXPECTED, 0, + _handle_error_on_obj(s, SE_RN_OPEN_BRACKET_EXPECTED, s->source_file, (ast && ast->next) ? ((_object_t*)ast->next->data) : 0, MB_FUNC_ERR, _exit, result); } ast = ast->next; /* Array subscript */ if(!ast->next) { - _handle_error_on_obj(s, SE_RN_ARRAY_SUBSCRIPT_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_ARRAY_SUBSCRIPT_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } ast = ast->next; while(((_object_t*)ast->data)->type != _DT_FUNC || ((_object_t*)ast->data)->data.func->pointer != _core_close_bracket) { @@ -5215,16 +5325,16 @@ int _get_array_index(mb_interpreter_t* s, _ls_node_t** l, _object_t* c, unsigned goto _exit; len = subscript_ptr; if(!_try_get_value(len, &val, _DT_INT)) { - _handle_error_on_obj(s, SE_RN_TYPE_NOT_MATCH, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_TYPE_NOT_MATCH, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } if(val.integer < 0) { - _handle_error_on_obj(s, SE_RN_ILLEGAL_BOUND, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_ILLEGAL_BOUND, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } if(dcount + 1 > arr->data.array->dimension_count) { - _handle_error_on_obj(s, SE_RN_DIMENSION_OUT_OF_BOUND, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_DIMENSION_OUT_OF_BOUND, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } if((int)val.integer >= arr->data.array->dimensions[dcount]) { - _handle_error_on_obj(s, SE_RN_ARRAY_OUT_OF_BOUND, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_ARRAY_OUT_OF_BOUND, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } if(idx) idx *= (unsigned int)val.integer; @@ -5238,7 +5348,7 @@ int _get_array_index(mb_interpreter_t* s, _ls_node_t** l, _object_t* c, unsigned } *index = idx; if(!arr->data.array->raw) { - _handle_error_on_obj(s, SE_RN_ARRAY_OUT_OF_BOUND, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_ARRAY_OUT_OF_BOUND, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } _exit: @@ -5303,7 +5413,7 @@ int _set_array_elem(mb_interpreter_t* s, _ls_node_t* ast, _array_t* arr, unsigne case _DT_STRING: { size_t _sl = 0; if(arr->type != _DT_STRING) { - _handle_error_on_obj(s, SE_RN_STRING_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_STRING_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } _sl = strlen(val->string); *((char**)rawptr) = (char*)mb_malloc(_sl + 1); @@ -5964,10 +6074,10 @@ bool_t _end_class(mb_interpreter_t* s) { context = s->parsing_context; if(context->routine_state) { - _handle_error_now(s, SE_RN_INVALID_ROUTINE, 0, MB_FUNC_ERR); + _handle_error_now(s, SE_RN_INVALID_ROUTINE, s->source_file, MB_FUNC_ERR); } if(context->class_state == _CLASS_STATE_NONE) { - _handle_error_now(s, SE_RN_INVALID_CLASS, 0, MB_FUNC_ERR); + _handle_error_now(s, SE_RN_INVALID_CLASS, s->source_file, MB_FUNC_ERR); return false; } @@ -6053,7 +6163,7 @@ bool_t _link_meta_class(mb_interpreter_t* s, _class_t* derived, _class_t* base) mb_assert(s && derived && base); if(_ls_find(derived->meta_list, base, (_ls_compare)_ht_cmp_intptr)) { - _handle_error_now(s, SE_RN_WRONG_META_CLASS, 0, MB_FUNC_ERR); + _handle_error_now(s, SE_RN_WRONG_META_CLASS, s->source_file, MB_FUNC_ERR); return false; } @@ -6292,7 +6402,7 @@ bool_t _end_routine(mb_interpreter_t* s) { context = s->parsing_context; if(!context->routine_state) { - _handle_error_now(s, SE_RN_INVALID_ROUTINE, 0, MB_FUNC_ERR); + _handle_error_now(s, SE_RN_INVALID_ROUTINE, s->source_file, MB_FUNC_ERR); return false; } @@ -7256,6 +7366,20 @@ int _dispose_object(_object_t* obj) { } break; +#ifdef MB_ENABLE_SOURCE_TRACE + case _DT_PREV_IMPORT: /* Fall through */ + case _DT_POST_IMPORT: + if(!obj->ref) { + if(obj->data.import_info) { + if(obj->data.import_info->source_file) { + safe_free(obj->data.import_info->source_file); + } + safe_free(obj->data.import_info); + } + } + + break; +#endif /* MB_ENABLE_SOURCE_TRACE */ case _DT_NIL: /* Fall through */ case _DT_UNKNOWN: /* Fall through */ case _DT_TYPE: /* Fall through */ @@ -8093,12 +8217,12 @@ _retry: case _DT_INT: /* Fall through */ case _DT_REAL: /* Fall through */ case _DT_STRING: - _handle_error_on_obj(s, SE_RN_INVALID_EXPRESSION, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_EXPRESSION, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); break; #ifdef MB_ENABLE_CLASS case _DT_CLASS: - _handle_error_on_obj(s, SE_RN_INVALID_EXPRESSION, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_EXPRESSION, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); break; #endif /* MB_ENABLE_CLASS */ @@ -8107,6 +8231,16 @@ _retry: result = _core_call(s, (void**)&ast); break; +#ifdef MB_ENABLE_SOURCE_TRACE + case _DT_PREV_IMPORT: + s->source_file = obj->data.import_info->source_file; + + break; + case _DT_POST_IMPORT: + s->source_file = obj->data.import_info->source_file; + + break; +#endif /* MB_ENABLE_SOURCE_TRACE */ default: /* Do nothing */ break; } @@ -8129,7 +8263,7 @@ _retry: skip_to_eoi = false; ast = ast->next; } else if(obj && obj->type == _DT_VAR) { - _handle_error_on_obj(s, SE_RN_COLON_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLON_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } else if(_IS_FUNC(obj, _core_enddef) && result != MB_SUB_RETURN) { ast = (_ls_node_t*)_ls_popback(sub_stack); #ifdef MB_ENABLE_LAMBDA @@ -8143,7 +8277,7 @@ _retry: } else if(obj && obj->type != _DT_FUNC) { ast = ast->next; } else { - _handle_error_on_obj(s, SE_RN_COLON_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLON_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } } @@ -8180,7 +8314,7 @@ int _skip_to(mb_interpreter_t* s, _ls_node_t** l, mb_func_t f, _data_e t) { mb_assert(ast && ast->prev); do { if(!ast) { - _handle_error_on_obj(s, SE_RN_SYNTAX, 0, DON(tmp), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_SYNTAX, s->source_file, DON(tmp), MB_FUNC_ERR, _exit, result); } tmp = ast; obj = (_object_t*)ast->data; @@ -8207,7 +8341,7 @@ int _skip_if_chunk(mb_interpreter_t* s, _ls_node_t** l) { mb_assert(ast && ast->prev); do { if(!ast) { - _handle_error_on_obj(s, SE_RN_SYNTAX, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_SYNTAX, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } tmp = ast; obj = (_object_t*)ast->data; @@ -8215,7 +8349,7 @@ int _skip_if_chunk(mb_interpreter_t* s, _ls_node_t** l) { ast = ast->next; if(ast && _IS_FUNC((_object_t*)ast->data, _core_if)) { if(++nested > sizeof(mask) * 8) { - _handle_error_on_obj(s, SE_RN_NESTED_TOO_DEEP, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_NESTED_TOO_DEEP, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } } else if(ast && nested && _IS_FUNC((_object_t*)ast->data, _core_then)) { if(!(ast && ast->next && _IS_EOS(ast->next->data))) @@ -8225,7 +8359,7 @@ int _skip_if_chunk(mb_interpreter_t* s, _ls_node_t** l) { (!(mask & (1 << (nested - 1))) && _IS_FUNC((_object_t*)ast->data, _core_endif))) ) { if(--nested < 0) { - _handle_error_on_obj(s, SE_RN_STRUCTURE_NOT_COMPLETED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_STRUCTURE_NOT_COMPLETED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } ast = ast->next; } @@ -8250,7 +8384,7 @@ int _skip_struct(mb_interpreter_t* s, _ls_node_t** l, mb_func_t open_func, mb_fu count = 1; do { if(!ast->next) { - _handle_error_on_obj(s, SE_RN_STRUCTURE_NOT_COMPLETED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_STRUCTURE_NOT_COMPLETED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } obj_prev = (_object_t*)ast->data; ast = ast->next; @@ -8858,7 +8992,7 @@ int mb_reset(struct mb_interpreter_t** s, bool_t clrf/* = false*/) { (*s)->last_routine = 0; (*s)->no_eat_comma_mark = 0; (*s)->last_error = SE_NO_ERR; - (*s)->last_error_func = 0; + (*s)->last_error_file = 0; running = (*s)->running_context; _ls_clear((*s)->sub_stack); @@ -8924,7 +9058,7 @@ int mb_begin_module(struct mb_interpreter_t* s, const char* n) { goto _exit; /* Avoid an unreferenced label warning */ #else /* MB_ENABLE_MODULE */ - _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, 0, (_object_t*)0, MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, s->source_file, (_object_t*)0, MB_FUNC_WARNING, _exit, result); #endif /* MB_ENABLE_MODULE */ _exit: @@ -8944,7 +9078,7 @@ int mb_end_module(struct mb_interpreter_t* s) { goto _exit; /* Avoid an unreferenced label warning */ #else /* MB_ENABLE_MODULE */ - _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, 0, (_object_t*)0, MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, s->source_file, (_object_t*)0, MB_FUNC_WARNING, _exit, result); #endif /* MB_ENABLE_MODULE */ _exit: @@ -8962,7 +9096,7 @@ int mb_attempt_func_begin(struct mb_interpreter_t* s, void** l) { ast = (_ls_node_t*)*l; obj = (_object_t*)ast->data; if(!(obj->type == _DT_FUNC)) { - _handle_error_on_obj(s, SE_RN_STRUCTURE_NOT_COMPLETED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_STRUCTURE_NOT_COMPLETED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } ast = ast->next; @@ -8997,7 +9131,7 @@ int mb_attempt_open_bracket(struct mb_interpreter_t* s, void** l) { ast = ast->next; obj = (_object_t*)ast->data; if(!_IS_FUNC(obj, _core_open_bracket)) { - _handle_error_on_obj(s, SE_RN_OPEN_BRACKET_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_OPEN_BRACKET_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } ast = ast->next; @@ -9017,11 +9151,11 @@ int mb_attempt_close_bracket(struct mb_interpreter_t* s, void** l) { ast = (_ls_node_t*)*l; if(!ast) { - _handle_error_on_obj(s, SE_RN_CLOSE_BRACKET_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CLOSE_BRACKET_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } obj = (_object_t*)ast->data; if(!_IS_FUNC(obj, _core_close_bracket)) { - _handle_error_on_obj(s, SE_RN_CLOSE_BRACKET_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CLOSE_BRACKET_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } ast = ast->next; @@ -9330,7 +9464,7 @@ int mb_begin_class(struct mb_interpreter_t* s, void** l, const char* n, mb_value var = obj->data.variable; } if(s->last_instance || (obj && !var)) { - _handle_error_on_obj(s, SE_RN_DUPLICATE_CLASS, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_DUPLICATE_CLASS, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } obj = _create_object(); @@ -9341,7 +9475,7 @@ int mb_begin_class(struct mb_interpreter_t* s, void** l, const char* n, mb_value for(i = 0; i < c; i++) { if(meta[i]->type != MB_DT_CLASS) { - _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } _MAKE_NIL(&mo); _public_value_to_internal_object(meta[i], &mo); @@ -9411,7 +9545,7 @@ int mb_get_class_userdata(struct mb_interpreter_t* s, void** l, void** d) { } else { if(d) *d = 0; - _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } _exit: @@ -9435,7 +9569,7 @@ int mb_set_class_userdata(struct mb_interpreter_t* s, void** l, void* d) { if(s && s->last_instance) { s->last_instance->userdata = d; } else { - _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } _exit: @@ -9488,7 +9622,7 @@ int mb_add_var(struct mb_interpreter_t* s, void** l, const char* n, mb_value_t v goto _exit; } else { - _handle_error_on_obj(s, SE_RN_DUPLICATE_ID, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_DUPLICATE_ID, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } } @@ -9714,13 +9848,13 @@ int mb_init_coll(struct mb_interpreter_t* s, void** l, mb_value_t* coll) { break; default: - _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); break; } #else /* MB_ENABLE_COLLECTION_LIB */ mb_unrefvar(coll); - _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); #endif /* MB_ENABLE_COLLECTION_LIB */ _exit: @@ -9745,19 +9879,19 @@ int mb_get_coll(struct mb_interpreter_t* s, void** l, mb_value_t coll, mb_value_ mb_int_val(idx, i); _public_value_to_internal_object(&coll, &ocoll); if(!_at_list(ocoll.data.list, i, &ret)) { - _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } break; case MB_DT_DICT: _public_value_to_internal_object(&coll, &ocoll); if(!_find_dict(ocoll.data.dict, &idx, &ret)) { - _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } break; default: - _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); break; } @@ -9765,7 +9899,7 @@ int mb_get_coll(struct mb_interpreter_t* s, void** l, mb_value_t coll, mb_value_ mb_unrefvar(idx); mb_unrefvar(coll); mb_unrefvar(i); - _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); #endif /* MB_ENABLE_COLLECTION_LIB */ _exit: @@ -9797,7 +9931,7 @@ int mb_set_coll(struct mb_interpreter_t* s, void** l, mb_value_t coll, mb_value_ if(!_set_list(ocoll.data.list, i, &val, &oval)) { _destroy_object(oval, 0); - _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } break; @@ -9807,7 +9941,7 @@ int mb_set_coll(struct mb_interpreter_t* s, void** l, mb_value_t coll, mb_value_ break; default: - _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); break; } @@ -9817,7 +9951,7 @@ int mb_set_coll(struct mb_interpreter_t* s, void** l, mb_value_t coll, mb_value_ mb_unrefvar(coll); mb_unrefvar(oval); mb_unrefvar(i); - _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); #endif /* MB_ENABLE_COLLECTION_LIB */ _exit: @@ -9842,19 +9976,19 @@ int mb_remove_coll(struct mb_interpreter_t* s, void** l, mb_value_t coll, mb_val mb_int_val(idx, i); _public_value_to_internal_object(&coll, &ocoll); if(!_remove_at_list(ocoll.data.list, i)) { - _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } break; case MB_DT_DICT: _public_value_to_internal_object(&coll, &ocoll); if(!_remove_dict(ocoll.data.dict, &idx)) { - _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } break; default: - _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); break; } @@ -9862,7 +9996,7 @@ int mb_remove_coll(struct mb_interpreter_t* s, void** l, mb_value_t coll, mb_val mb_unrefvar(coll); mb_unrefvar(idx); mb_unrefvar(i); - _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); #endif /* MB_ENABLE_COLLECTION_LIB */ _exit: @@ -9895,13 +10029,13 @@ int mb_count_coll(struct mb_interpreter_t* s, void** l, mb_value_t coll, int* c) break; default: - _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); break; } #else /* MB_ENABLE_COLLECTION_LIB */ mb_unrefvar(coll); - _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); #endif /* MB_ENABLE_COLLECTION_LIB */ _exit: @@ -9948,7 +10082,7 @@ int mb_get_ref_value(struct mb_interpreter_t* s, void** l, mb_value_t val, void* mb_assert(s && out); if(val.type != MB_DT_USERTYPE_REF) { - _handle_error_on_obj(s, SE_RN_TYPE_NOT_MATCH, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_TYPE_NOT_MATCH, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } if(out) { @@ -9986,7 +10120,7 @@ int mb_ref_value(struct mb_interpreter_t* s, void** l, mb_value_t val) { #endif /* MB_ENABLE_CLASS */ obj.type != _DT_ARRAY ) { - _handle_error_on_obj(s, SE_RN_REFERENCED_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_REFERENCED_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } _REF(&obj); @@ -10012,7 +10146,7 @@ int mb_unref_value(struct mb_interpreter_t* s, void** l, mb_value_t val) { #endif /* MB_ENABLE_CLASS */ obj.type != _DT_ARRAY ) { - _handle_error_on_obj(s, SE_RN_REFERENCED_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_REFERENCED_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } _UNREF(&obj); @@ -10051,7 +10185,7 @@ int mb_get_routine(struct mb_interpreter_t* s, void** l, const char* n, mb_value if(obj->type == _DT_ROUTINE) { _internal_object_to_public_value(obj, val); } else { - _handle_error_on_obj(s, SE_RN_ROUTINE_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_ROUTINE_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } } } @@ -10081,7 +10215,7 @@ int mb_set_routine(struct mb_interpreter_t* s, void** l, const char* n, mb_routi if(obj->type == _DT_VAR) var = obj->data.variable; } else { - _handle_error_on_obj(s, SE_RN_DUPLICATE_ROUTINE, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_DUPLICATE_ROUTINE, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } } @@ -10114,7 +10248,7 @@ int mb_eval_routine(struct mb_interpreter_t* s, void** l, mb_value_t val, mb_val _object_t obj; if(val.type != MB_DT_ROUTINE) { - _handle_error_on_obj(s, SE_RN_ROUTINE_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_ROUTINE_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } _MAKE_NIL(&obj); @@ -10154,7 +10288,7 @@ int mb_load_string(struct mb_interpreter_t* s, const char* l) { result = status; if(status) { _set_error_pos(s, context->parsing_pos, _row, _col); - _handle_error_now(s, s->last_error, s->last_error_func, result); + _handle_error_now(s, s->last_error, s->last_error_file, result); goto _exit; } @@ -10224,7 +10358,7 @@ int mb_run(struct mb_interpreter_t* s) { if(!ast) { result = MB_FUNC_ERR; _set_error_pos(s, 0, 0, 0); - _handle_error_now(s, SE_RN_EMPTY_PROGRAM, 0, result); + _handle_error_now(s, SE_RN_EMPTY_PROGRAM, s->source_file, result); goto _exit; } @@ -10236,7 +10370,7 @@ int mb_run(struct mb_interpreter_t* s) { if(result != MB_FUNC_SUSPEND && s->error_handler) { if(result >= MB_EXTENDED_ABORT) s->last_error = SE_EA_EXTENDED_ABORT; - _handle_error_now(s, s->last_error, s->last_error_func, result); + _handle_error_now(s, s->last_error, s->last_error_file, result); } goto _exit; @@ -10355,7 +10489,7 @@ int mb_debug_get_stack_trace(struct mb_interpreter_t* s, void** l, char** fs, un mb_unrefvar(fs); mb_unrefvar(fc); - _handle_error_on_obj(s, SE_RN_STACK_TRACE_DISABLED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_STACK_TRACE_DISABLED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); _exit: return result; @@ -10424,7 +10558,7 @@ int mb_raise_error(struct mb_interpreter_t* s, void** l, mb_error_e err, int ret mb_assert(s); - _handle_error_on_obj(s, err, 0, TON(l), ret, _exit, result); + _handle_error_on_obj(s, err, s->source_file, TON(l), ret, _exit, result); _exit: return result; @@ -10581,7 +10715,7 @@ int _core_add(mb_interpreter_t* s, void** l) { if(_is_string(((_tuple3_t*)*l)->e1) && _is_string(((_tuple3_t*)*l)->e2)) { _instruct_connect_strings(l); } else { - _handle_error_on_obj(s, SE_RN_STRING_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_STRING_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } } else { _instruct_num_op_num(+, l); @@ -10720,7 +10854,7 @@ int _core_neg(mb_interpreter_t* s, void** l) { break; default: - _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, 0, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); break; } @@ -10745,7 +10879,7 @@ int _core_equal(mb_interpreter_t* s, void** l) { _instruct_compare_strings(==, l); } else { _set_tuple3_result(l, 0); - _handle_error_on_obj(s, SE_RN_STRING_EXPECTED, 0, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_STRING_EXPECTED, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); } } else if(_is_number(((_tuple3_t*)*l)->e1) && _is_number(((_tuple3_t*)*l)->e2)) { _instruct_num_op_num(==, l); @@ -10778,7 +10912,7 @@ int _core_less(mb_interpreter_t* s, void** l) { } else { _set_tuple3_result(l, 1); } - _handle_error_on_obj(s, SE_RN_STRING_EXPECTED, 0, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_STRING_EXPECTED, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); } } else if(_is_number(((_tuple3_t*)*l)->e1) && _is_number(((_tuple3_t*)*l)->e2)) { _instruct_num_op_num(<, l); @@ -10811,7 +10945,7 @@ int _core_greater(mb_interpreter_t* s, void** l) { } else { _set_tuple3_result(l, 0); } - _handle_error_on_obj(s, SE_RN_STRING_EXPECTED, 0, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_STRING_EXPECTED, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); } } else if(_is_number(((_tuple3_t*)*l)->e1) && _is_number(((_tuple3_t*)*l)->e2)) { _instruct_num_op_num(>, l); @@ -10844,7 +10978,7 @@ int _core_less_equal(mb_interpreter_t* s, void** l) { } else { _set_tuple3_result(l, 1); } - _handle_error_on_obj(s, SE_RN_STRING_EXPECTED, 0, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_STRING_EXPECTED, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); } } else if(_is_number(((_tuple3_t*)*l)->e1) && _is_number(((_tuple3_t*)*l)->e2)) { _instruct_num_op_num(<=, l); @@ -10877,7 +11011,7 @@ int _core_greater_equal(mb_interpreter_t* s, void** l) { } else { _set_tuple3_result(l, 0); } - _handle_error_on_obj(s, SE_RN_STRING_EXPECTED, 0, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_STRING_EXPECTED, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); } } else if(_is_number(((_tuple3_t*)*l)->e1) && _is_number(((_tuple3_t*)*l)->e2)) { _instruct_num_op_num(>=, l); @@ -10906,7 +11040,7 @@ int _core_not_equal(mb_interpreter_t* s, void** l) { _instruct_compare_strings(!=, l); } else { _set_tuple3_result(l, 1); - _handle_error_on_obj(s, SE_RN_STRING_EXPECTED, 0, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_STRING_EXPECTED, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); } } else if(_is_number(((_tuple3_t*)*l)->e1) && _is_number(((_tuple3_t*)*l)->e2)) { _instruct_num_op_num(!=, l); @@ -11012,7 +11146,7 @@ int _core_is(mb_interpreter_t* s, void** l) { if(fst && fst->type == _DT_VAR) fst = fst->data.variable->data; if(scd && scd->type == _DT_VAR) scd = scd->data.variable->data; if(!fst || !scd) { - _handle_error_on_obj(s, SE_RN_SYNTAX, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_SYNTAX, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } if(scd->type == _DT_TYPE) { val->type = _DT_INT; @@ -11023,14 +11157,14 @@ int _core_is(mb_interpreter_t* s, void** l) { } else { #ifdef MB_ENABLE_CLASS if(!_IS_CLASS(fst) || !_IS_CLASS(scd)) { - _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } _traverse_class(fst->data.instance, 0, _is_class, _META_LIST_MAX_DEPTH, true, scd->data.instance, &is_a); val->type = _DT_INT; val->data.integer = (int_t)is_a; #else /* MB_ENABLE_CLASS */ mb_unrefvar(is_a); - _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); #endif /* MB_ENABLE_CLASS */ } @@ -11067,7 +11201,7 @@ int _core_let(mb_interpreter_t* s, void** l) { if(obj->type == _DT_FUNC) ast = ast->next; if(!ast || !ast->data) { - _handle_error_on_obj(s, SE_RN_SYNTAX, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_SYNTAX, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } obj = (_object_t*)ast->data; if(obj->type == _DT_ARRAY) { @@ -11087,12 +11221,12 @@ int _core_let(mb_interpreter_t* s, void** l) { var = _search_var_in_scope_chain(s, obj->data.variable); if(var == evar) evar = 0; } else { - _handle_error_on_obj(s, SE_RN_VAR_OR_ARRAY_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_VAR_OR_ARRAY_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } ast = ast->next; if(!ast || !ast->data) { - _handle_error_on_obj(s, SE_RN_SYNTAX, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_SYNTAX, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } #ifdef MB_ENABLE_COLLECTION_LIB if(var && _IS_COLL(var->data)) { @@ -11123,7 +11257,7 @@ int _core_let(mb_interpreter_t* s, void** l) { #endif /* MB_ENABLE_COLLECTION_LIB */ obj = (_object_t*)ast->data; if(obj->type != _DT_FUNC || strcmp(obj->data.func->name, "=") != 0) { - _handle_error_on_obj(s, SE_RN_ASSIGN_OPERATOR_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_ASSIGN_OPERATOR_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } ast = ast->next; @@ -11137,7 +11271,7 @@ int _core_let(mb_interpreter_t* s, void** l) { switch(var->data->type) { case _DT_LIST: if(!_set_list(var->data->data.list, idx, 0, &val)) { - _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } break; @@ -11216,7 +11350,7 @@ _proc_extra_var: break; default: safe_free(val); - _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); break; } @@ -11252,7 +11386,7 @@ int _core_dim(mb_interpreter_t* s, void** l) { /* Array name */ ast = (_ls_node_t*)*l; if(!ast->next || ((_object_t*)ast->next->data)->type != _DT_ARRAY) { - _handle_error_on_obj(s, SE_RN_ARRAY_IDENTIFIER_EXPECTED, 0, (ast && ast->next) ? ((_object_t*)ast->next->data) : 0, MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_ARRAY_IDENTIFIER_EXPECTED, s->source_file, (ast && ast->next) ? ((_object_t*)ast->next->data) : 0, MB_FUNC_ERR, _exit, result); } ast = ast->next; arr = (_object_t*)ast->data; @@ -11261,25 +11395,25 @@ int _core_dim(mb_interpreter_t* s, void** l) { dummy.name = arr->data.array->name; /* ( */ if(!ast->next || ((_object_t*)ast->next->data)->type != _DT_FUNC || ((_object_t*)ast->next->data)->data.func->pointer != _core_open_bracket) { - _handle_error_on_obj(s, SE_RN_OPEN_BRACKET_EXPECTED, 0, (ast && ast->next) ? ((_object_t*)ast->next->data) : 0, MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_OPEN_BRACKET_EXPECTED, s->source_file, (ast && ast->next) ? ((_object_t*)ast->next->data) : 0, MB_FUNC_ERR, _exit, result); } ast = ast->next; /* Array subscript */ if(!ast->next) { - _handle_error_on_obj(s, SE_RN_ARRAY_SUBSCRIPT_EXPECTED, 0, (ast && ast->next) ? ((_object_t*)ast->next->data) : 0, MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_ARRAY_SUBSCRIPT_EXPECTED, s->source_file, (ast && ast->next) ? ((_object_t*)ast->next->data) : 0, MB_FUNC_ERR, _exit, result); } ast = ast->next; while(((_object_t*)ast->data)->type != _DT_FUNC || ((_object_t*)ast->data)->data.func->pointer != _core_close_bracket) { /* Get an integer value */ len = (_object_t*)ast->data; if(!_try_get_value(len, &val, _DT_INT)) { - _handle_error_on_obj(s, SE_RN_TYPE_NOT_MATCH, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_TYPE_NOT_MATCH, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } if(val.integer <= 0) { - _handle_error_on_obj(s, SE_RN_ILLEGAL_BOUND, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_ILLEGAL_BOUND, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } if(dummy.dimension_count >= MB_MAX_DIMENSION_COUNT) { - _handle_error_on_obj(s, SE_RN_DIMENSION_TOO_MUCH, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_DIMENSION_TOO_MUCH, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } dummy.dimensions[dummy.dimension_count++] = (int)val.integer; if(dummy.count) @@ -11302,7 +11436,7 @@ int _core_dim(mb_interpreter_t* s, void** l) { arr->data.array->dimension_count = 0; arr->data.array->dimensions[0] = 0; arr->data.array->count = 0; - _handle_error_on_obj(s, SE_RN_OUT_OF_MEMORY, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_OUT_OF_MEMORY, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } _exit: @@ -11338,7 +11472,7 @@ _elseif: obj = (_object_t*)ast->data; if(val->data.integer) { if(!_IS_FUNC(obj, _core_then)) { - _handle_error_on_obj(s, SE_RN_INTEGER_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INTEGER_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } if(ast && ast->next && _IS_EOS(ast->next->data)) @@ -11396,7 +11530,7 @@ _elseif: obj = (_object_t*)ast->data; if(obj->type != _DT_EOS) { if(!_IS_FUNC(obj, _core_else)) { - _handle_error_on_obj(s, SE_RN_ELSE_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_ELSE_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } do { @@ -11501,7 +11635,7 @@ int _core_for(mb_interpreter_t* s, void** l) { obj = (_object_t*)ast->data; if(obj->type != _DT_VAR) { - _handle_error_on_obj(s, SE_RN_LOOP_VAR_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_LOOP_VAR_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } var_loop = obj->data.variable; @@ -11512,12 +11646,12 @@ int _core_for(mb_interpreter_t* s, void** l) { obj = (_object_t*)ast->data; if(!_IS_FUNC(obj, _core_to)) { - _handle_error_on_obj(s, SE_RN_TO_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_TO_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } ast = ast->next; if(!ast) { - _handle_error_on_obj(s, SE_RN_SYNTAX, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_SYNTAX, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } to_node = ast; @@ -11534,7 +11668,7 @@ _to: } else { ast = ast->next; if(!ast) { - _handle_error_on_obj(s, SE_RN_SYNTAX, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_SYNTAX, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } result = _calc_expression(s, &ast, &step_val_ptr); @@ -11580,7 +11714,7 @@ _to: } if(!ast) { - _handle_error_on_obj(s, SE_RN_NEXT_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_NEXT_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } obj = (_object_t*)ast->data; } @@ -11687,7 +11821,7 @@ _loop_begin: } if(!ast) { - _handle_error_on_obj(s, SE_RN_SYNTAX, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_SYNTAX, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } obj = (_object_t*)ast->data; } @@ -11734,7 +11868,7 @@ int _core_do(mb_interpreter_t* s, void** l) { obj = (_object_t*)ast->data; if(!_IS_EOS(obj)) { - _handle_error_on_obj(s, SE_RN_SYNTAX, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_SYNTAX, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } ast = ast->next; @@ -11765,7 +11899,7 @@ _loop_begin: obj = (_object_t*)ast->data; if(!_IS_FUNC(obj, _core_until)) { - _handle_error_on_obj(s, SE_RN_UNTIL_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_UNTIL_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } ast = ast->next; @@ -11831,14 +11965,14 @@ int _core_goto(mb_interpreter_t* s, void** l) { obj = (_object_t*)ast->data; if(obj->type != _DT_LABEL) { - _handle_error_on_obj(s, SE_RN_JUMP_LABEL_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_JUMP_LABEL_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } label = (_label_t*)obj->data.label; if(!label->node) { glbsyminscope = _ht_find(running->var_dict, label->name); if(!(glbsyminscope && ((_object_t*)glbsyminscope->data)->type == _DT_LABEL)) { - _handle_error_on_obj(s, SE_RN_LABEL_NOT_EXISTS, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_LABEL_NOT_EXISTS, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } label->node = ((_object_t*)glbsyminscope->data)->data.label->node; } @@ -11896,16 +12030,11 @@ int _core_return(mb_interpreter_t* s, void** l) { if(mb_has_arg(s, (void**)&ast)) { mb_check(mb_pop_value(s, (void**)&ast, &arg)); mb_check(mb_push_value(s, (void**)&ast, arg)); - - if(arg.type == MB_DT_STRING) { - _ls_foreach(s->temp_values, _destroy_object_capsule_only); - _ls_clear(s->temp_values); - } } } ast = (_ls_node_t*)_ls_popback(sub_stack); if(!ast) { - _handle_error_on_obj(s, SE_RN_NO_RETURN_POINT, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_NO_RETURN_POINT, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } *l = ast; @@ -11945,7 +12074,7 @@ _retry: } #endif /* MB_ENABLE_CLASS */ if(!obj || obj->type != _DT_ROUTINE) { - _handle_error_on_obj(s, SE_RN_ROUTINE_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_ROUTINE_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } ret.type = MB_DT_ROUTINE; ret.value.routine = obj->data.routine; @@ -12010,16 +12139,16 @@ int _core_def(mb_interpreter_t* s, void** l) { obj = (_object_t*)ast->data; if(!_IS_ROUTINE(obj)) { - _handle_error_on_obj(s, SE_RN_ROUTINE_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_ROUTINE_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } if(obj->data.routine->func.basic.entry) { - _handle_error_on_obj(s, SE_RN_DUPLICATE_ROUTINE, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_DUPLICATE_ROUTINE, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } routine = (_routine_t*)((_object_t*)ast->data)->data.routine; ast = ast->next; obj = (_object_t*)ast->data; if(!_IS_FUNC(obj, _core_open_bracket)) { - _handle_error_on_obj(s, SE_RN_OPEN_BRACKET_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_OPEN_BRACKET_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } ast = ast->next; obj = (_object_t*)ast->data; @@ -12062,7 +12191,7 @@ int _core_enddef(mb_interpreter_t* s, void** l) { ast = (_ls_node_t*)_ls_popback(sub_stack); if(!ast) { - _handle_error_on_obj(s, SE_RN_NO_RETURN_POINT, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_NO_RETURN_POINT, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } *l = ast; @@ -12093,7 +12222,7 @@ int _core_class(mb_interpreter_t* s, void** l) { obj = (_object_t*)ast->data; obj = _GET_CLASS(obj); if(!_IS_CLASS(obj)) { - _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } instance = obj->data.instance; ast = ast->next; @@ -12114,7 +12243,7 @@ int _core_class(mb_interpreter_t* s, void** l) { } obj = _GET_CLASS(obj); if(!_IS_CLASS(obj)) { - _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } inherit = obj->data.instance; _link_meta_class(s, instance, inherit); @@ -12124,7 +12253,7 @@ int _core_class(mb_interpreter_t* s, void** l) { if(_IS_FUNC(obj, _core_close_bracket)) { ast = ast->next; } else { - _handle_error_on_obj(s, SE_RN_CLOSE_BRACKET_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CLOSE_BRACKET_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } } @@ -12137,7 +12266,7 @@ int _core_class(mb_interpreter_t* s, void** l) { if(result != MB_FUNC_OK && s->error_handler) { if(result >= MB_EXTENDED_ABORT) s->last_error = SE_EA_EXTENDED_ABORT; - _handle_error_now(s, s->last_error, s->last_error_func, result); + _handle_error_now(s, s->last_error, s->last_error_file, result); goto _pop_exit; } @@ -12212,7 +12341,7 @@ int _core_new(mb_interpreter_t* s, void** l) { break; default: _default: - _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); break; } @@ -12236,7 +12365,7 @@ int _core_var(mb_interpreter_t* s, void** l) { ast = ast->next; if(!s->last_instance) { - _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, 0, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); } _exit: @@ -12283,7 +12412,7 @@ int _core_reflect(mb_interpreter_t* s, void** l) { break; default: _default: - _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); break; } @@ -12333,7 +12462,7 @@ int _core_lambda(mb_interpreter_t* s, void** l) { if(!routine->func.lambda.parameters) routine->func.lambda.parameters = _ls_create(); if(!v || ((_object_t*)v)->type != _DT_VAR) { - _handle_error_on_obj(s, SE_RN_INVALID_LAMBDA, 0, TON(l), MB_FUNC_ERR, _error, result); + _handle_error_on_obj(s, SE_RN_INVALID_LAMBDA, s->source_file, TON(l), MB_FUNC_ERR, _error, result); } var = ((_object_t*)v)->data.variable; @@ -12374,7 +12503,7 @@ int _core_lambda(mb_interpreter_t* s, void** l) { brackets--; if(ast && !_is_valid_lambda_body_node(s, &routine->func.lambda, (_object_t*)ast->data)) { - _handle_error_on_obj(s, SE_RN_INVALID_LAMBDA, 0, TON(l), MB_FUNC_ERR, _error, result); + _handle_error_on_obj(s, SE_RN_INVALID_LAMBDA, s->source_file, TON(l), MB_FUNC_ERR, _error, result); } /* Mark upvalues */ @@ -12513,7 +12642,7 @@ int _std_abs(mb_interpreter_t* s, void** l) { break; default: - _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, 0, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); break; } @@ -12550,7 +12679,7 @@ int _std_sgn(mb_interpreter_t* s, void** l) { break; default: - _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, 0, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); break; } @@ -12609,7 +12738,7 @@ int _std_floor(mb_interpreter_t* s, void** l) { break; default: - _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, 0, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); break; } @@ -12645,7 +12774,7 @@ int _std_ceil(mb_interpreter_t* s, void** l) { break; default: - _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, 0, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); break; } @@ -12681,7 +12810,7 @@ int _std_fix(mb_interpreter_t* s, void** l) { break; default: - _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, 0, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); break; } @@ -12717,7 +12846,7 @@ int _std_round(mb_interpreter_t* s, void** l) { break; default: - _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, 0, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); break; } @@ -12769,7 +12898,7 @@ int _std_rnd(mb_interpreter_t* s, void** l) { mb_check(mb_attempt_close_bracket(s, l)); if(lw >= hg) { - _handle_error_on_obj(s, SE_RN_ILLEGAL_BOUND, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_ILLEGAL_BOUND, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } rnd = (real_t)rand() / RAND_MAX * (hg - lw + (real_t)0.99999f) + lw; /* [low, high] */ @@ -13045,11 +13174,11 @@ int _std_left(mb_interpreter_t* s, void** l) { #ifdef MB_ENABLE_UNICODE switch(mb_uu_substr(arg, 0, count, &sub)) { case 0: - _handle_error_on_obj(s, SE_RN_INVALID_STRING, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_STRING, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); break; case -1: - _handle_error_on_obj(s, SE_RN_INDEX_OUT_OF_BOUND, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INDEX_OUT_OF_BOUND, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); break; } @@ -13091,11 +13220,11 @@ int _std_mid(mb_interpreter_t* s, void** l) { #ifdef MB_ENABLE_UNICODE switch(mb_uu_substr(arg, start, count, &sub)) { case 0: - _handle_error_on_obj(s, SE_RN_INVALID_STRING, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_STRING, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); break; case -1: - _handle_error_on_obj(s, SE_RN_INDEX_OUT_OF_BOUND, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INDEX_OUT_OF_BOUND, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); break; } @@ -13135,11 +13264,11 @@ int _std_right(mb_interpreter_t* s, void** l) { #ifdef MB_ENABLE_UNICODE switch(mb_uu_substr(arg, mb_uu_strlen(arg) - count, count, &sub)) { case 0: - _handle_error_on_obj(s, SE_RN_INVALID_STRING, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_STRING, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); break; case -1: - _handle_error_on_obj(s, SE_RN_INDEX_OUT_OF_BOUND, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INDEX_OUT_OF_BOUND, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); break; } @@ -13235,13 +13364,13 @@ int _std_val(mb_interpreter_t* s, void** l) { _internal_object_to_public_value((_object_t*)ocoi.data.dict_it->curr_node->data, &ret); mb_check(mb_push_value(s, l, ret)); } else { - _handle_error_on_obj(s, SE_RN_INVALID_ITERATOR, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_ITERATOR, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } break; #endif /* MB_ENABLE_COLLECTION_LIB */ default: - _handle_error_on_obj(s, SE_RN_TYPE_NOT_MATCH, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_TYPE_NOT_MATCH, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); break; } @@ -13302,7 +13431,7 @@ int _std_len(mb_interpreter_t* s, void** l) { break; #endif /* MB_ENABLE_COLLECTION_LIB */ default: - _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); break; } @@ -13328,7 +13457,7 @@ int _std_print(mb_interpreter_t* s, void** l) { ast = (_ls_node_t*)*l; ast = ast->next; if(!ast || !ast->data) { - _handle_error_on_obj(s, SE_RN_SYNTAX, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_SYNTAX, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } obj = (_object_t*)ast->data; @@ -13406,7 +13535,7 @@ _print: break; default: - _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); break; } @@ -13420,7 +13549,7 @@ _print: ast = ast->next; obj = (_object_t*)ast->data; } else { - _handle_error_on_obj(s, SE_RN_COMMA_OR_SEMICOLON_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COMMA_OR_SEMICOLON_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } } while(ast && !_IS_SEP(obj, ':') && !_IS_FUNC(obj, _core_close_bracket) && (obj->type == _DT_SEP || !_is_expression_terminal(s, obj))); @@ -13460,7 +13589,7 @@ int _std_input(mb_interpreter_t* s, void** l) { goto _exit; } if(obj->type != _DT_VAR) { - _handle_error_on_obj(s, SE_RN_VARIABLE_EXPECTED, 0, DON(ast), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_VARIABLE_EXPECTED, s->source_file, DON(ast), MB_FUNC_ERR, _exit, result); } if(obj->data.variable->data->type == _DT_INT || obj->data.variable->data->type == _DT_REAL) { _get_inputer(s)(line, sizeof(line)); @@ -13613,7 +13742,7 @@ int _coll_push(mb_interpreter_t* s, void** l) { mb_check(mb_pop_value(s, l, &lst)); if(lst.type != MB_DT_LIST) { - _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } _MAKE_NIL(&olst); _public_value_to_internal_object(&lst, &olst); @@ -13654,7 +13783,7 @@ int _coll_pop(mb_interpreter_t* s, void** l) { mb_check(mb_attempt_close_bracket(s, l)); if(lst.type != MB_DT_LIST) { - _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } _MAKE_NIL(&olst); @@ -13671,7 +13800,7 @@ int _coll_pop(mb_interpreter_t* s, void** l) { _assign_public_value(&lst, 0); - _handle_error_on_obj(s, SE_RN_EMPTY_COLLECTION, 0, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_EMPTY_COLLECTION, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); } _exit: @@ -13699,7 +13828,7 @@ int _coll_peek(mb_interpreter_t* s, void** l) { mb_check(mb_attempt_close_bracket(s, l)); if(lst.type != MB_DT_LIST) { - _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } _MAKE_NIL(&olst); @@ -13717,7 +13846,7 @@ int _coll_peek(mb_interpreter_t* s, void** l) { _assign_public_value(&lst, 0); - _handle_error_on_obj(s, SE_RN_EMPTY_COLLECTION, 0, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_EMPTY_COLLECTION, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); } _exit: @@ -13747,7 +13876,7 @@ int _coll_insert(mb_interpreter_t* s, void** l) { mb_check(mb_attempt_close_bracket(s, l)); if(lst.type != MB_DT_LIST) { - _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } _MAKE_NIL(&olst); _public_value_to_internal_object(&lst, &olst); @@ -13755,7 +13884,7 @@ int _coll_insert(mb_interpreter_t* s, void** l) { if(!_insert_list(olst.data.list, idx, &arg, &oval)) { _destroy_object(oval, 0); - _handle_error_on_obj(s, SE_RN_INDEX_OUT_OF_BOUND, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INDEX_OUT_OF_BOUND, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } mb_check(mb_push_value(s, l, lst)); @@ -13783,7 +13912,7 @@ int _coll_sort(mb_interpreter_t* s, void** l) { mb_check(mb_attempt_close_bracket(s, l)); if(lst.type != MB_DT_LIST) { - _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } _MAKE_NIL(&olst); _public_value_to_internal_object(&lst, &olst); @@ -13833,7 +13962,7 @@ int _coll_exist(mb_interpreter_t* s, void** l){ break; default: - _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); break; } @@ -13874,7 +14003,7 @@ int _coll_get(mb_interpreter_t* s, void** l) { _public_value_to_internal_object(&coi, &ocoi); mb_check(mb_pop_int(s, l, &index)); if(!_at_list(ocoi.data.list, index, &ret)) { - _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } break; @@ -13882,7 +14011,7 @@ int _coll_get(mb_interpreter_t* s, void** l) { _public_value_to_internal_object(&coi, &ocoi); mb_check(mb_pop_value(s, l, &arg)); if(!_find_dict(ocoi.data.dict, &arg, &ret)) { - _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } break; @@ -13891,7 +14020,7 @@ int _coll_get(mb_interpreter_t* s, void** l) { if(ocoi.data.list_it && ocoi.data.list_it->curr && ocoi.data.list_it->curr->data) { _internal_object_to_public_value((_object_t*)ocoi.data.list_it->curr->data, &ret); } else { - _handle_error_on_obj(s, SE_RN_INVALID_ITERATOR, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_ITERATOR, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } break; @@ -13900,7 +14029,7 @@ int _coll_get(mb_interpreter_t* s, void** l) { if(ocoi.data.dict_it && ocoi.data.dict_it->curr_node && ocoi.data.dict_it->curr_node->extra) { _internal_object_to_public_value((_object_t*)ocoi.data.dict_it->curr_node->extra, &ret); } else { - _handle_error_on_obj(s, SE_RN_INVALID_ITERATOR, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_ITERATOR, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } break; @@ -13918,7 +14047,7 @@ int _coll_get(mb_interpreter_t* s, void** l) { break; #endif /* MB_ENABLE_CLASS */ default: - _handle_error_on_obj(s, SE_RN_COLLECTION_OR_ITERATOR_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_OR_ITERATOR_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); break; } @@ -13963,7 +14092,7 @@ int _coll_set(mb_interpreter_t* s, void** l) { if(!_set_list(ocoll.data.list, idx, &val, &oval)) { _destroy_object(oval, 0); - _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } } @@ -13980,7 +14109,7 @@ int _coll_set(mb_interpreter_t* s, void** l) { break; default: - _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); break; } @@ -14019,7 +14148,7 @@ int _coll_remove(mb_interpreter_t* s, void** l) { mb_check(mb_pop_int(s, l, &idx)); if(!_remove_at_list(ocoll.data.list, idx)) { - _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } } @@ -14030,13 +14159,13 @@ int _coll_remove(mb_interpreter_t* s, void** l) { mb_check(mb_pop_value(s, l, &key)); if(!_remove_dict(ocoll.data.dict, &key)) { - _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } } break; default: - _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); break; } @@ -14080,7 +14209,7 @@ int _coll_clear(mb_interpreter_t* s, void** l) { break; default: - _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); break; } @@ -14129,7 +14258,7 @@ int _coll_clone(mb_interpreter_t* s, void** l) { break; default: - _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); break; } @@ -14179,7 +14308,7 @@ int _coll_iterator(mb_interpreter_t* s, void** l) { break; default: - _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); break; } @@ -14216,7 +14345,7 @@ int _coll_move_next(mb_interpreter_t* s, void** l) { _public_value_to_internal_object(&it, &oit); oit.data.list_it = _move_list_it_next(oit.data.list_it); if(_invalid_list_it(oit.data.list_it)) { - _handle_error_on_obj(s, SE_RN_INVALID_ITERATOR, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_ITERATOR, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } else if(oit.data.list_it) { ret.type = MB_DT_INT; ret.value.integer = 1; @@ -14229,7 +14358,7 @@ int _coll_move_next(mb_interpreter_t* s, void** l) { _public_value_to_internal_object(&it, &oit); oit.data.dict_it = _move_dict_it_next(oit.data.dict_it); if(_invalid_dict_it(oit.data.dict_it)) { - _handle_error_on_obj(s, SE_RN_INVALID_ITERATOR, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_ITERATOR, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } else if(oit.data.dict_it) { ret.type = MB_DT_INT; ret.value.integer = 1; @@ -14239,7 +14368,7 @@ int _coll_move_next(mb_interpreter_t* s, void** l) { break; default: - _handle_error_on_obj(s, SE_RN_ITERATOR_EXPECTED, 0, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_ITERATOR_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); break; } diff --git a/output/my_basic_mac b/output/my_basic_mac index 8004ef76d2caf63e6250cf3a91df25530cc2761e..cef624c88e73c84cd61ae14145afa5e890324348 100755 GIT binary patch literal 183856 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 Y#%{j8@^}>kHrgEw6=zRr6O(@a8zU1L0{{R3 literal 183576 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

P`2iPV=TiH{DCm&-755`Ev`soB}U5i)EVU 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 diff --git a/shell/main.c b/shell/main.c index 3e0f42e..8190940 100755 --- a/shell/main.c +++ b/shell/main.c @@ -1077,10 +1077,13 @@ static void _on_stepped(struct mb_interpreter_t* s, int p, unsigned short row, u static void _on_error(struct mb_interpreter_t* s, mb_error_e e, char* m, char* f, int p, unsigned short row, unsigned short col, int abort_code) { mb_unrefvar(s); - mb_unrefvar(f); mb_unrefvar(p); if(SE_NO_ERR != e) { - _printf("Error:\n [LINE] %d, [COL] %d,\n [CODE] %d, [MESSAGE] %s, [ABORT CODE] %d.\n", row, col, e, m, abort_code); + if(f) { + _printf("Error:\n [LINE] %d, [COL] %d, [FILE] %s,\n [CODE] %d, [MESSAGE] %s, [ABORT CODE] %d.\n", row, col, f, e, m, abort_code); + } else { + _printf("Error:\n [LINE] %d, [COL] %d,\n [CODE] %d, [MESSAGE] %s, [ABORT CODE] %d.\n", row, col, e, m, abort_code); + } } }