From 0b3c2af998e8d928da237f573bad4bb344ec9a93 Mon Sep 17 00:00:00 2001 From: paladin-t Date: Fri, 29 Jan 2016 15:03:03 +0800 Subject: [PATCH] *fixed lookup bugs with sub routine. --- HISTORY | 1 + core/my_basic.c | 57 +++++++++++++++++++++++++++++++++++++------- output/my_basic.exe | Bin 357888 -> 357888 bytes 3 files changed, 49 insertions(+), 9 deletions(-) diff --git a/HISTORY b/HISTORY index 5a23d2b..9a5845d 100755 --- a/HISTORY +++ b/HISTORY @@ -1,4 +1,5 @@ Jan. 29 2016 +Fixed lookup bugs with sub routine Fixed a member accessing bug with class instance Jan. 28 2016 diff --git a/core/my_basic.c b/core/my_basic.c index c542039..2580481 100755 --- a/core/my_basic.c +++ b/core/my_basic.c @@ -1490,6 +1490,7 @@ static bool_t _end_routine(mb_interpreter_t* s); static void _begin_routine_parameter_list(mb_interpreter_t* s); static void _end_routine_parameter_list(mb_interpreter_t* s); static _object_t* _duplicate_parameter(void* data, void* extra, _running_context_t* running); +static _routine_t* _clone_routine(_routine_t* sub, void* c); #ifdef MB_ENABLE_LAMBDA static _running_context_t* _init_lambda(mb_interpreter_t* s, _routine_t* routine); static void _unref_routine(_ref_t* ref, void* data); @@ -6621,13 +6622,7 @@ int _clone_clsss_field(void* data, void* extra, void* n) { case _DT_ROUTINE: sub = (_routine_t*)obj->data.routine; if(!_search_identifier_in_scope_chain(instance->ref.s, instance->scope, sub->name, 0, 0, 0)) { - _routine_t* routine = (_routine_t*)mb_malloc(sizeof(_routine_t)); - memset(routine, 0, sizeof(_routine_t)); - routine->name = mb_strdup(sub->name, 0); - routine->instance = instance; - routine->is_cloned = true; - routine->type = sub->type; - routine->func = sub->func; + _routine_t* routine = _clone_routine(sub, instance); ret = _create_object(); ret->type = _DT_ROUTINE; ret->data.routine = routine; @@ -6867,6 +6862,38 @@ _object_t* _duplicate_parameter(void* data, void* extra, _running_context_t* run return obj; } +_routine_t* _clone_routine(_routine_t* sub, void* c) { + /* Clone a routine */ + _routine_t* result = 0; +#ifdef MB_ENABLE_CLASS + _class_t* instance = (_class_t*)c; +#else /* MB_ENABLE_CLASS */ + mb_unrefvar(c); +#endif /* MB_ENABLE_CLASS */ + + mb_assert(sub); + +#ifdef MB_ENABLE_LAMBDA + if(sub->type == _IT_LAMBDA) + result = sub; +#endif /* MB_ENABLE_LAMBDA */ + + if(!result) { + result = (_routine_t*)mb_malloc(sizeof(_routine_t)); + memset(result, 0, sizeof(_routine_t)); + if(sub->name) + result->name = mb_strdup(sub->name, 0); +#ifdef MB_ENABLE_CLASS + result->instance = instance; +#endif /* MB_ENABLE_CLASS */ + result->is_cloned = true; + result->type = sub->type; + result->func = sub->func; + } + + return result; +} + #ifdef MB_ENABLE_LAMBDA _running_context_t* _init_lambda(mb_interpreter_t* s, _routine_t* routine) { /* Initialize a lambda */ @@ -7706,7 +7733,14 @@ int _clone_object(mb_interpreter_t* s, _object_t* obj, _object_t* tgt) { break; #endif /* MB_ENABLE_CLASS */ case _DT_ROUTINE: - tgt->data.routine = obj->data.routine; + tgt->data.routine = _clone_routine( + obj->data.routine, +#ifdef MB_ENABLE_CLASS + obj->data.routine->instance +#else /* MB_ENABLE_CLASS */ + 0 +#endif /* MB_ENABLE_CLASS */ + ); break; case _DT_NIL: /* Fall through */ @@ -12723,6 +12757,8 @@ _retry: mb_check(mb_attempt_close_bracket(s, l)); mb_check(mb_push_value(s, l, ret)); + + ast = (_ls_node_t*)*l; } break; @@ -12749,7 +12785,10 @@ _retry: #else /* MB_ENABLE_LAMBDA */ { #endif /* MB_ENABLE_LAMBDA */ - pathed = _search_identifier_in_scope_chain(s, 0, routine->name, 0, 0, 0); + if(routine->instance && (!s->last_instance || (s->last_instance && routine->instance && strcmp(s->last_instance->name, routine->instance->name)))) + pathed = _search_identifier_in_class(s, routine->instance, routine->name, 0, 0); + else + pathed = _search_identifier_in_scope_chain(s, 0, routine->name, 0, 0, 0); if(pathed && pathed->data) { obj = (_object_t*)pathed->data; obj = _GET_ROUTINE(obj); diff --git a/output/my_basic.exe b/output/my_basic.exe index 49e081fc3d493fe75111278a3082dd2bc4496af4..ce1b50e77423363504df096d204bdd5927bfd9e9 100755 GIT binary patch delta 18810 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