From a8149f6eb41d1dccf82e1c9e0ff0f8e94df56864 Mon Sep 17 00:00:00 2001 From: paladin-t Date: Thu, 14 Jan 2016 17:48:58 +0800 Subject: [PATCH] *fixed a missing assignment bug with class field accessor; *polished code. --- HISTORY | 1 + core/my_basic.c | 31 +++++++++++++++++++++++-------- output/my_basic.exe | Bin 348160 -> 348672 bytes 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/HISTORY b/HISTORY index 31c17f1..66294a8 100755 --- a/HISTORY +++ b/HISTORY @@ -2,6 +2,7 @@ Jan. 14 2016 Fixed a collection accessing bug in an assignment statement Fixed a lambda unreferencing issue Fixed a routine disposing issue +Fixed a missing assignment bug with class field accessor Fixed an issue with lambda when a class instance went out of use Removed support of storing a literal instance in a variable Simplified variable creation diff --git a/core/my_basic.c b/core/my_basic.c index b20c7d1..6883e9c 100755 --- a/core/my_basic.c +++ b/core/my_basic.c @@ -411,7 +411,7 @@ typedef struct _class_t { #endif /* MB_ENABLE_CLASS */ typedef enum _invokable_e { - _IT_BASIC, + _IT_SCRIPT, #ifdef MB_ENABLE_LAMBDA _IT_LAMBDA, #endif /* MB_ENABLE_LAMBDA */ @@ -3263,7 +3263,7 @@ int _eval_routine(mb_interpreter_t* s, _ls_node_t** l, mb_value_t* va, unsigned _ls_pushback(s->stack_frames, r->name); #endif /* MB_ENABLE_STACK_TRACE */ - if(r->type == _IT_BASIC && r->func.basic.entry) { + 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 } else if(r->type == _IT_LAMBDA && r->func.lambda.entry) { @@ -4183,8 +4183,9 @@ _end_import: if(context->last_symbol) { 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)) - _begin_class(s); + if(_IS_FUNC(context->last_symbol, _core_class)) { + _handle_error_now(s, SE_RN_DUPLICATE_CLASS, 0, MB_FUNC_ERR); + } result = _DT_CLASS; goto _exit; @@ -6152,14 +6153,14 @@ void _init_routine(mb_interpreter_t* s, _routine_t* routine, char* n, mb_routine if(n && f) routine->type = _IT_NATIVE; else if(n && !f) - routine->type = _IT_BASIC; + routine->type = _IT_SCRIPT; #ifdef MB_ENABLE_LAMBDA else if(!n && !f) routine->type = _IT_LAMBDA; #endif /* MB_ENABLE_LAMBDA */ switch(routine->type) { - case _IT_BASIC: + case _IT_SCRIPT: routine->func.basic.scope = _create_running_context(true); break; @@ -6277,7 +6278,7 @@ void _destroy_routine(mb_interpreter_t* s, _routine_t* r) { } if(!r->is_cloned) { switch(r->type) { - case _IT_BASIC: + case _IT_SCRIPT: if(r->func.basic.scope) { _destroy_scope(s, r->func.basic.scope); r->func.basic.scope = 0; @@ -10916,6 +10917,8 @@ int _core_let(mb_interpreter_t* s, void** l) { _object_t* obj = 0; _running_context_t* running = 0; _var_t* var = 0; + _var_t* evar = 0; + int refc = 1; _array_t* arr = 0; _object_t* arr_obj = 0; unsigned int arr_idx = 0; @@ -10952,7 +10955,9 @@ int _core_let(mb_interpreter_t* s, void** l) { if(result != MB_FUNC_OK) goto _exit; } else if(obj->type == _DT_VAR) { + evar = obj->data.variable; 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); } @@ -11018,6 +11023,7 @@ int _core_let(mb_interpreter_t* s, void** l) { goto _exit; } +_proc_extra_var: #endif /* MB_ENABLE_COLLECTION_LIB */ _dispose_object(var->data); var->data->type = val->type; @@ -11041,6 +11047,13 @@ int _core_let(mb_interpreter_t* s, void** l) { } else { var->data->ref = val->ref; } + if(evar && evar->pathing) { + var = evar; + evar = 0; + refc++; + + goto _proc_extra_var; + } } } else if(arr && literally) { if(val->type != _DT_UNKNOWN) { @@ -11080,7 +11093,9 @@ int _core_let(mb_interpreter_t* s, void** l) { safe_free(val->data.string); } } - _REF(val) + while(refc--) { + _REF(val) + } safe_free(val); _exit: diff --git a/output/my_basic.exe b/output/my_basic.exe index c9090ee8739760646b44048fa0d41753ca7b737b..239847ea5f9e6b4903e866c9f8031050d2922e75 100755 GIT binary patch delta 20097 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