--- parser3/src/classes/reflection.C 2016/11/29 23:25:59 1.69 +++ parser3/src/classes/reflection.C 2016/11/30 21:30:24 1.71 @@ -10,7 +10,7 @@ #include "pa_vbool.h" #include "pa_vobject.h" -volatile const char * IDENT_REFLECTION_C="$Id: reflection.C,v 1.69 2016/11/29 23:25:59 moko Exp $"; +volatile const char * IDENT_REFLECTION_C="$Id: reflection.C,v 1.71 2016/11/30 21:30:24 moko Exp $"; static const String class_type_methoded("methoded"); @@ -18,6 +18,7 @@ static const String method_type_native(" static const String method_type_parser("parser"); static const String method_name("name"); +static const String method_class_name("class"); static const String method_call_type("call_type"); static const String method_inherited("inherited"); static const String method_overridden("overridden"); @@ -62,27 +63,11 @@ static void _create(Request& r, MethodPa int max_params_count; if(method->native_code){ - if(nparamsmin_numbered_params_count) - throw Exception(PARSER_RUNTIME, - &constructor_name, - "native method of class '%s' accepts minimum %d parameter(s) (%d passed)", - vclass->type(), - method->min_numbered_params_count, - nparams); - max_params_count=method->max_numbered_params_count; } else { max_params_count=method->params_count; } - if(nparams>max_params_count) - throw Exception(PARSER_RUNTIME, - &constructor_name, - "method of class '%s' accepts maximum %d parameter(s) (%d passed)", - vclass->type(), - max_params_count, - nparams); - Value &object = r.construct(*vclass, *method); CONSTRUCTOR_FRAME_ACTION(*method, r.get_method_frame(), object, { @@ -262,6 +247,8 @@ static void _method_info(Request& r, Met throw Exception(PARSER_RUNTIME, 0, "param must be class name or method junction"); hash->put(method_name, new VString(*method->name)); + hash->put(method_class_name, new VString(*new String(j->self.type()))); + } else { const String& class_name=params.as_string(0, "param must be class name or method junction"); VStateless_class* vclass=r.get_class(class_name);