--- parser3/src/main/execute.C 2002/08/12 14:24:58 1.250 +++ parser3/src/main/execute.C 2002/08/15 09:07:49 1.255 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char* IDENT_EXECUTE_C="$Date: 2002/08/12 14:24:58 $"; +static const char* IDENT_EXECUTE_C="$Date: 2002/08/15 09:07:49 $"; #include "pa_opcode.h" #include "pa_array.h" @@ -231,7 +231,7 @@ void Request::execute(const Array& ops) value=POP(); const String& name=POP_NAME(); Value *ncontext=POP(); - ncontext->put_element(name, value); + ncontext->put_element(name, value, false); break; } case OP_CONSTRUCT_EXPR: @@ -242,7 +242,7 @@ void Request::execute(const Array& ops) value=POP(); const String& name=POP_NAME(); Value *ncontext=POP(); - ncontext->put_element(name, value->as_expr_result()); + ncontext->put_element(name, value->as_expr_result(), false); break; } case OP_CURLY_CODE__CONSTRUCT: @@ -263,7 +263,7 @@ void Request::execute(const Array& ops) value=NEW VJunction(j); const String& name=POP_NAME(); Value *ncontext=POP(); - ncontext->put_element(name, value); + ncontext->put_element(name, value, false); break; } case OP_NESTED_CODE: @@ -824,7 +824,7 @@ void Request::execute(const Array& ops) case OP_IS: { b=POP(); a=POP(); - value=NEW VBool(pool(), a->as(b->as_string().cstr())!=0); + value=NEW VBool(pool(), a->is(b->as_string().cstr())); PUSH(value); break; } @@ -858,12 +858,12 @@ Value *Request::get_element(const String if(read_class->derived_from(*called_class)) // current derived from called if(Value *base_object=self->base_object()) { // doing DYNAMIC call Temp_derived(*base_object, 0); // temporarily prevent go-back-down virtual calls - value=base_object->get_element(name); // virtual-up lookup starting from parent + value=base_object->get_element(name, base_object, false); // virtual-up lookup starting from parent goto _void; } } if(!value) - value=ncontext->get_element(name); + value=ncontext->get_element(name, ncontext, false); _void: if(value) @@ -1032,7 +1032,7 @@ void Request::execute_nonvirtual_method( const String *Request::execute_virtual_method(Value& aself, const String& method_name) { - if(Value *value=aself.get_element(method_name)) + if(Value *value=aself.get_element(method_name, &aself, false)) if(Junction *junction=value->get_junction()) if(const Method *method=junction->method) { const String *result;