--- parser3/src/classes/reflection.C 2009/09/18 10:12:08 1.14 +++ parser3/src/classes/reflection.C 2010/08/01 14:49:33 1.17 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char * const IDENT_REFLECTION_C="$Date: 2009/09/18 10:12:08 $"; +static const char * const IDENT_REFLECTION_C="$Date: 2010/08/01 14:49:33 $"; #include "pa_vmethod_frame.h" #include "pa_request.h" @@ -95,7 +95,8 @@ static void _create(Request& r, MethodPa max_params_count, nparams); - VMethodFrame frame(*junction, r.get_method_frame()); + Value &object = r.construct(*class_value, *method); + VConstructorFrame frame(*method, r.get_method_frame(), object); Value* v[100]; if(nparams>0){ @@ -105,8 +106,8 @@ static void _create(Request& r, MethodPa } else { frame.empty_params(); } - r.op_call(frame, true/*constructing*/); - r.write_pass_lang(frame.result()); + r.op_call(frame); + r.write_pass_lang(object); } @@ -258,6 +259,9 @@ static void _method_info(Request& r, Met hash->put(method_call_type, call_type); } else { // parser code + const String* filespec = r.get_method_filename(method); + if( filespec ) + hash->put("file", new VString(*filespec)); if(method->params_names) for(size_t i=0; iparams_names->count(); i++) hash->put(String::Body::Format(i), new VString(*method->params_names->get(i)));