--- parser3/src/main/execute.C 2016/11/03 16:17:37 1.397 +++ parser3/src/main/execute.C 2016/11/29 23:25:59 1.401 @@ -21,7 +21,7 @@ #include "pa_vimage.h" #include "pa_wwrapper.h" -volatile const char * IDENT_EXECUTE_C="$Id: execute.C,v 1.397 2016/11/03 16:17:37 moko Exp $" IDENT_PA_OPCODE_H IDENT_PA_OPERATION_H IDENT_PA_VCODE_FRAME_H IDENT_PA_WWRAPPER_H; +volatile const char * IDENT_EXECUTE_C="$Id: execute.C,v 1.401 2016/11/29 23:25:59 moko Exp $" IDENT_PA_OPCODE_H IDENT_PA_OPERATION_H IDENT_PA_VCODE_FRAME_H IDENT_PA_WWRAPPER_H; //#define DEBUG_EXECUTE @@ -686,7 +686,7 @@ void Request::execute(ArrayOperation& op execute(local_ops); - stack.push(wcontext->result()); + stack.push((Value&)wcontext->result()); wcontext=saved_wcontext; break; } @@ -1229,12 +1229,10 @@ Value& Request::construct(VStateless_cla // some stateless_class creatable derivates return *result; } else - throw Exception(PARSER_RUNTIME, - 0, //&frame.name(), - "is not a constructor, system class '%s' can be constructed only implicitly", - called_class.type()); + throw Exception(PARSER_RUNTIME, method.name, + "is not a constructor, system class '%s' can be constructed only implicitly", called_class.type()); } else - throw Exception(PARSER_RUNTIME, 0, "method is static and can not be used as constructor"); + throw Exception(PARSER_RUNTIME, method.name, "method of %s is static and can not be used as constructor", called_class.type()); } Value& Request::get_element(Value& ncontext, const String& name) { @@ -1338,8 +1336,7 @@ Value& Request::process(Value& input_val // for code in [] and () wcontext is set 0 // using the fact in decision "which wrapper to use" - bool using_code_frame=junction->wcontext; - if(using_code_frame) { + if(junction->wcontext) { // {} code wrapper VCodeFrame local(*junction->wcontext); wcontext=&local; @@ -1471,7 +1468,7 @@ const String* Request::execute_virtual_m return 0; } -const String* Request::get_method_filename(const Method* method){ +const String* Request::get_method_filespec(const Method* method){ if(ArrayOperation* code=method->parser_code) if(code){ Operation::Origin origin={0, 0, 0}; @@ -1541,7 +1538,7 @@ const String* Request::get_method_filena default: break; } if(origin.file_no) - return get_used_filename(origin.file_no); + return get_used_filespec(origin.file_no); } } return 0;