--- parser3/src/main/execute.C 2001/04/05 19:35:16 1.138 +++ parser3/src/main/execute.C 2001/04/09 10:08:30 1.142 @@ -5,7 +5,7 @@ Author: Alexander Petrosyan (http://design.ru/paf) - $Id: execute.C,v 1.138 2001/04/05 19:35:16 paf Exp $ + $Id: execute.C,v 1.142 2001/04/09 10:08:30 paf Exp $ */ #include "pa_config_includes.h" @@ -177,7 +177,7 @@ void Request::execute(const Array& ops) if(!value) THROW(0,0, &name, - ": undefined class"); + "class undefined"); PUSH(value); break; @@ -655,7 +655,7 @@ void Request::execute(const Array& ops) default: THROW(0,0, 0, - "unhandled '%s' opcode", opcode_name[op.code]); + "invalid opcode %d", op.code); } } } @@ -664,7 +664,13 @@ Value *Request::get_element() { const String& name=POP_NAME(); Value *ncontext=POP(); Value *value=ncontext->get_element(name); - + if(!value) + if(Method* method=OP.get_method(name)) { // operator? + // as if that method were in self and we have normal dynamic method here + Junction& junction=*NEW Junction(pool(), + *self, self->get_class(), method, 0,0,0,0); + value=NEW VJunction(junction); + } if(value) value=&process(*value, &name); // process possible code-junction else {