From 21014877f4dbf568ce9cd669b5392152bd4953ab Mon Sep 17 00:00:00 2001 From: paladin-t Date: Fri, 19 Feb 2016 17:16:54 +0800 Subject: [PATCH] +added source tracing for sub routine invoking; *fixed a lexical object convertion issue. --- HISTORY | 4 + core/my_basic.c | 188 +++++++++++++++++++++++++------------------- output/my_basic.exe | Bin 359424 -> 359936 bytes 3 files changed, 111 insertions(+), 81 deletions(-) diff --git a/HISTORY b/HISTORY index f49c45a..96cb7c9 100755 --- a/HISTORY +++ b/HISTORY @@ -1,3 +1,7 @@ +Feb. 19 2016 +Added source tracing for sub routine invoking +Fixed a lexical object convertion issue + Feb. 18 2016 Added a generic iterator type Added a SYS statement to the shell diff --git a/core/my_basic.c b/core/my_basic.c index 710d77b..ab8b822 100755 --- a/core/my_basic.c +++ b/core/my_basic.c @@ -130,6 +130,7 @@ extern "C" { #define _mb_check_mark(__expr, __result, __exit) do { __result = (__expr); if(__result != MB_FUNC_OK) goto __exit; } while(0) #define DON(__o) ((__o) ? ((_object_t*)((__o)->data)) : 0) +#define DON2(__a) (((__a) && *(__a)) ? (_object_t*)((*((_ls_node_t**)(__a)))->data) : 0) #define TON(__t) (((__t) && *(__t)) ? ((_object_t*)(((_tuple3_t*)(*(__t)))->e1)) : 0) #define _IS_VAR_ARGS(__v) ((__v) == &_VAR_ARGS) @@ -488,6 +489,9 @@ typedef struct _routine_t { } native; } func; char* name; +#ifdef MB_ENABLE_SOURCE_TRACE + char* source_file; +#endif /* MB_ENABLE_SOURCE_TRACE */ #ifdef MB_ENABLE_CLASS _class_t* instance; #endif /* MB_ENABLE_CLASS */ @@ -3625,11 +3629,19 @@ static int _proc_args(mb_interpreter_t* s, _ls_node_t** l, _running_context_t* r static int _eval_routine(mb_interpreter_t* s, _ls_node_t** l, mb_value_t* va, unsigned ca, _routine_t* r, mb_has_routine_arg_func_t has_arg, mb_pop_routine_arg_func_t pop_arg) { /* Evaluate a routine */ int result = MB_FUNC_OK; +#ifdef MB_ENABLE_SOURCE_TRACE + char* src = 0; +#endif /* MB_ENABLE_SOURCE_TRACE */ #ifdef MB_ENABLE_STACK_TRACE _ls_pushback(s->stack_frames, r->name); #endif /* MB_ENABLE_STACK_TRACE */ +#ifdef MB_ENABLE_SOURCE_TRACE + src = s->source_file; + s->source_file = r->source_file; +#endif /* MB_ENABLE_SOURCE_TRACE */ + if(r->type == _IT_SCRIPT && r->func.basic.entry) { result = _eval_script_routine(s, l, va, ca, r, has_arg, pop_arg); #ifdef MB_ENABLE_LAMBDA @@ -3639,10 +3651,14 @@ static int _eval_routine(mb_interpreter_t* s, _ls_node_t** l, mb_value_t* va, un } 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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_ROUTINE, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } _exit: +#ifdef MB_ENABLE_SOURCE_TRACE + s->source_file = src; +#endif /* MB_ENABLE_SOURCE_TRACE */ + #ifdef MB_ENABLE_STACK_TRACE _ls_popback(s->stack_frames); #endif /* MB_ENABLE_STACK_TRACE */ @@ -3899,7 +3915,7 @@ static int _eval_native_routine(mb_interpreter_t* s, _ls_node_t** l, mb_value_t* entry = r->func.native.entry; if(!entry) { - _handle_error_on_obj(s, SE_RN_INVALID_ROUTINE, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_ROUTINE, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } result = entry(s, (void**)l, va, ca, r, has_arg, pop_arg); @@ -6879,6 +6895,11 @@ static void _init_routine(mb_interpreter_t* s, _routine_t* routine, char* n, mb_ break; } + +#ifdef MB_ENABLE_SOURCE_TRACE + if(s->source_file) + routine->source_file = mb_strdup(s->source_file, 0); +#endif /* MB_ENABLE_SOURCE_TRACE */ } static void _begin_routine(mb_interpreter_t* s) { @@ -7011,6 +7032,11 @@ static void _destroy_routine(mb_interpreter_t* s, _routine_t* r) { if(r->name) { safe_free(r->name); } +#ifdef MB_ENABLE_SOURCE_TRACE + if(r->source_file) { + safe_free(r->source_file); + } +#endif /* MB_ENABLE_SOURCE_TRACE */ if(!r->is_cloned) { switch(r->type) { case _IT_SCRIPT: @@ -9134,7 +9160,7 @@ static 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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_SYNTAX, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } tmp = ast; obj = (_object_t*)ast->data; @@ -9142,7 +9168,7 @@ static 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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_NESTED_TOO_DEEP, s->source_file, DON2(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))) @@ -9152,7 +9178,7 @@ static 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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_STRUCTURE_NOT_COMPLETED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } ast = ast->next; } @@ -10253,7 +10279,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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_DUPLICATE_CLASS, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } obj = _create_object(); @@ -10264,7 +10290,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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } _MAKE_NIL(&mo); _public_value_to_internal_object(meta[i], &mo); @@ -10334,7 +10360,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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } _exit: @@ -10358,7 +10384,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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } _exit: @@ -10411,7 +10437,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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_DUPLICATE_ID, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } } @@ -10637,13 +10663,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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); break; } #else /* MB_ENABLE_COLLECTION_LIB */ mb_unrefvar(coll); - _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); #endif /* MB_ENABLE_COLLECTION_LIB */ _exit: @@ -10668,19 +10694,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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, s->source_file, DON2(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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } break; default: - _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); break; } @@ -10688,7 +10714,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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); #endif /* MB_ENABLE_COLLECTION_LIB */ _exit: @@ -10720,7 +10746,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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } break; @@ -10730,7 +10756,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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); break; } @@ -10740,7 +10766,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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); #endif /* MB_ENABLE_COLLECTION_LIB */ _exit: @@ -10765,19 +10791,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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, s->source_file, DON2(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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } break; default: - _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); break; } @@ -10785,7 +10811,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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); #endif /* MB_ENABLE_COLLECTION_LIB */ _exit: @@ -10818,13 +10844,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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); break; } #else /* MB_ENABLE_COLLECTION_LIB */ mb_unrefvar(coll); - _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); #endif /* MB_ENABLE_COLLECTION_LIB */ _exit: @@ -10871,7 +10897,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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_TYPE_NOT_MATCH, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } if(out) { @@ -10912,7 +10938,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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_REFERENCED_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } _REF(&obj); @@ -10941,7 +10967,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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_REFERENCED_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } _UNREF(&obj); @@ -10980,7 +11006,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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_ROUTINE_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } } } @@ -11010,7 +11036,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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_DUPLICATE_ROUTINE, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } } @@ -11043,7 +11069,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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_ROUTINE_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } _MAKE_NIL(&obj); @@ -11285,7 +11311,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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_STACK_TRACE_DISABLED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); _exit: return result; @@ -11359,7 +11385,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, s->source_file, TON(l), ret, _exit, result); + _handle_error_on_obj(s, err, s->source_file, DON2(l), ret, _exit, result); _exit: return result; @@ -12087,7 +12113,7 @@ static 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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } break; @@ -12165,7 +12191,7 @@ _proc_extra_var: break; default: safe_free(val); - _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_NOT_SUPPORTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); break; } @@ -13182,7 +13208,7 @@ static int _core_new(mb_interpreter_t* s, void** l) { break; default: _default: - _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); break; } @@ -13206,7 +13232,7 @@ static 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, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, s->source_file, DON2(l), MB_FUNC_WARNING, _exit, result); } _exit: @@ -13253,7 +13279,7 @@ static int _core_reflect(mb_interpreter_t* s, void** l) { break; default: _default: - _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); break; } @@ -13303,7 +13329,7 @@ static 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, s->source_file, TON(l), MB_FUNC_ERR, _error, result); + _handle_error_on_obj(s, SE_RN_INVALID_LAMBDA, s->source_file, DON2(l), MB_FUNC_ERR, _error, result); } var = ((_object_t*)v)->data.variable; @@ -13344,7 +13370,7 @@ static 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, s->source_file, TON(l), MB_FUNC_ERR, _error, result); + _handle_error_on_obj(s, SE_RN_INVALID_LAMBDA, s->source_file, DON2(l), MB_FUNC_ERR, _error, result); } /* Mark upvalues */ @@ -13508,7 +13534,7 @@ static int _std_abs(mb_interpreter_t* s, void** l) { break; default: - _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, s->source_file, DON2(l), MB_FUNC_WARNING, _exit, result); break; } @@ -13545,7 +13571,7 @@ static int _std_sgn(mb_interpreter_t* s, void** l) { break; default: - _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, s->source_file, DON2(l), MB_FUNC_WARNING, _exit, result); break; } @@ -13604,7 +13630,7 @@ static int _std_floor(mb_interpreter_t* s, void** l) { break; default: - _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, s->source_file, DON2(l), MB_FUNC_WARNING, _exit, result); break; } @@ -13640,7 +13666,7 @@ static int _std_ceil(mb_interpreter_t* s, void** l) { break; default: - _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, s->source_file, DON2(l), MB_FUNC_WARNING, _exit, result); break; } @@ -13676,7 +13702,7 @@ static int _std_fix(mb_interpreter_t* s, void** l) { break; default: - _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, s->source_file, DON2(l), MB_FUNC_WARNING, _exit, result); break; } @@ -13712,7 +13738,7 @@ static int _std_round(mb_interpreter_t* s, void** l) { break; default: - _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_NUMBER_EXPECTED, s->source_file, DON2(l), MB_FUNC_WARNING, _exit, result); break; } @@ -13764,7 +13790,7 @@ static 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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_ILLEGAL_BOUND, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } rnd = (real_t)rand() / RAND_MAX * (hg - lw + (real_t)0.99999f) + lw; /* [low, high] */ @@ -14040,11 +14066,11 @@ static int _std_left(mb_interpreter_t* s, void** l) { #ifdef MB_ENABLE_UNICODE switch(mb_uu_substr(arg, 0, (int)count, &sub)) { case 0: - _handle_error_on_obj(s, SE_RN_INVALID_STRING, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_STRING, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); break; case -1: - _handle_error_on_obj(s, SE_RN_INDEX_OUT_OF_BOUND, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INDEX_OUT_OF_BOUND, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); break; } @@ -14086,11 +14112,11 @@ static int _std_mid(mb_interpreter_t* s, void** l) { #ifdef MB_ENABLE_UNICODE switch(mb_uu_substr(arg, start, (int)count, &sub)) { case 0: - _handle_error_on_obj(s, SE_RN_INVALID_STRING, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_STRING, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); break; case -1: - _handle_error_on_obj(s, SE_RN_INDEX_OUT_OF_BOUND, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INDEX_OUT_OF_BOUND, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); break; } @@ -14130,11 +14156,11 @@ static int _std_right(mb_interpreter_t* s, void** l) { #ifdef MB_ENABLE_UNICODE switch(mb_uu_substr(arg, (int)(mb_uu_strlen(arg) - count), (int)count, &sub)) { case 0: - _handle_error_on_obj(s, SE_RN_INVALID_STRING, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_STRING, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); break; case -1: - _handle_error_on_obj(s, SE_RN_INDEX_OUT_OF_BOUND, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INDEX_OUT_OF_BOUND, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); break; } @@ -14230,13 +14256,13 @@ static 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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_ITERATOR, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } break; #endif /* MB_ENABLE_COLLECTION_LIB */ default: - _handle_error_on_obj(s, SE_RN_TYPE_NOT_MATCH, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_TYPE_NOT_MATCH, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); break; } @@ -14348,7 +14374,7 @@ static int _std_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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } break; @@ -14356,7 +14382,7 @@ static int _std_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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } break; @@ -14367,7 +14393,7 @@ static int _std_get(mb_interpreter_t* s, void** l) { } else if(ocoi.data.list_it && ocoi.data.list_it->list->range_begin) { mb_make_int(ret, ocoi.data.list_it->curr.ranging); } else { - _handle_error_on_obj(s, SE_RN_INVALID_ITERATOR, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_ITERATOR, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } break; @@ -14376,7 +14402,7 @@ static int _std_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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_ITERATOR, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } break; @@ -14395,7 +14421,7 @@ static int _std_get(mb_interpreter_t* s, void** l) { break; #endif /* MB_ENABLE_CLASS */ default: - _handle_error_on_obj(s, SE_RN_COLLECTION_OR_ITERATOR_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_OR_ITERATOR_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); break; } @@ -14740,7 +14766,7 @@ static 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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } _MAKE_NIL(&olst); _public_value_to_internal_object(&lst, &olst); @@ -14781,7 +14807,7 @@ static 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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } _MAKE_NIL(&olst); @@ -14798,7 +14824,7 @@ static int _coll_pop(mb_interpreter_t* s, void** l) { _assign_public_value(&lst, 0); - _handle_error_on_obj(s, SE_RN_EMPTY_COLLECTION, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_EMPTY_COLLECTION, s->source_file, DON2(l), MB_FUNC_WARNING, _exit, result); } _exit: @@ -14826,7 +14852,7 @@ static 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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } _MAKE_NIL(&olst); @@ -14844,7 +14870,7 @@ static int _coll_peek(mb_interpreter_t* s, void** l) { _assign_public_value(&lst, 0); - _handle_error_on_obj(s, SE_RN_EMPTY_COLLECTION, s->source_file, TON(l), MB_FUNC_WARNING, _exit, result); + _handle_error_on_obj(s, SE_RN_EMPTY_COLLECTION, s->source_file, DON2(l), MB_FUNC_WARNING, _exit, result); } _exit: @@ -14874,7 +14900,7 @@ static 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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } _MAKE_NIL(&olst); _public_value_to_internal_object(&lst, &olst); @@ -14882,7 +14908,7 @@ static 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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INDEX_OUT_OF_BOUND, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } mb_check(mb_push_value(s, l, lst)); @@ -14910,7 +14936,7 @@ static 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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } _MAKE_NIL(&olst); _public_value_to_internal_object(&lst, &olst); @@ -14960,7 +14986,7 @@ static int _coll_exist(mb_interpreter_t* s, void** l){ break; default: - _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); break; } @@ -15003,7 +15029,7 @@ static int _coll_index_of(mb_interpreter_t* s, void** l) { break; default: - _handle_error_on_obj(s, SE_RN_LIST_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_LIST_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); break; } @@ -15048,7 +15074,7 @@ static 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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } } @@ -15065,7 +15091,7 @@ static int _coll_set(mb_interpreter_t* s, void** l) { break; default: - _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); break; } @@ -15104,7 +15130,7 @@ static 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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } } @@ -15115,13 +15141,13 @@ static 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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_CANNOT_FIND_WITH_GIVEN_INDEX, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } } break; default: - _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); break; } @@ -15165,7 +15191,7 @@ static int _coll_clear(mb_interpreter_t* s, void** l) { break; default: - _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); break; } @@ -15214,7 +15240,7 @@ static int _coll_clone(mb_interpreter_t* s, void** l) { break; default: - _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); break; } @@ -15264,7 +15290,7 @@ static int _coll_iterator(mb_interpreter_t* s, void** l) { break; default: - _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_COLLECTION_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); break; } @@ -15301,7 +15327,7 @@ static 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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_ITERATOR, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } else if(oit.data.list_it) { ret.type = MB_DT_INT; ret.value.integer = 1; @@ -15314,7 +15340,7 @@ static 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, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_INVALID_ITERATOR, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); } else if(oit.data.dict_it) { ret.type = MB_DT_INT; ret.value.integer = 1; @@ -15324,7 +15350,7 @@ static int _coll_move_next(mb_interpreter_t* s, void** l) { break; default: - _handle_error_on_obj(s, SE_RN_ITERATOR_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); + _handle_error_on_obj(s, SE_RN_ITERATOR_EXPECTED, s->source_file, DON2(l), MB_FUNC_ERR, _exit, result); break; } diff --git a/output/my_basic.exe b/output/my_basic.exe index 9ae3b7e3b0917142fca8090ed69352da5084adda..876f033f2977a41124ffcc47c31dfae4340d4ada 100755 GIT binary patch delta 27922 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 delta 27695 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