--- parser3/src/main/execute.C 2001/03/12 09:41:00 1.93 +++ parser3/src/main/execute.C 2001/03/12 18:13:50 1.96 @@ -3,7 +3,7 @@ Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com) Author: Alexander Petrosyan (http://design.ru/paf) - $Id: execute.C,v 1.93 2001/03/12 09:41:00 paf Exp $ + $Id: execute.C,v 1.96 2001/03/12 18:13:50 paf Exp $ */ #include "pa_array.h" @@ -17,6 +17,7 @@ #include "pa_vobject.h" #include "pa_vdouble.h" #include "pa_vbool.h" +#include "pa_vtable.h" #include @@ -274,7 +275,7 @@ void Request::execute(const Array& ops) if(!junction) THROW(0,0, &value->name(), - "type is '%s', can not call it (must be method or junction)", + "(%s) uncallable, must be method or junction", value->type()); VMethodFrame *frame=NEW VMethodFrame(pool(), *junction); @@ -308,8 +309,11 @@ void Request::execute(const Array& ops) self=rcontext; // class dynamic call else // no, not me or relative of mine (total stranger) if(wcontext->constructing()) { // constructing? - // yes, constructor call: $some(^class:method(..)) - self=NEW VObject(pool(), *called_class); + // yes, constructor call: $some[^class:method[..]] + if(called_class->name()==TABLE_CLASS_NAME) + self=NEW VTable(pool()); + else + self=NEW VObject(pool(), *called_class); frame->write(*self, String::Untaint_lang::NO // not used, always an object, not string );