JSObject *Error::create(ExecState *exec, ErrorType errtype, const UString &message, int lineno, int sourceId, const UString &sourceURL) { #ifdef KJS_VERBOSE // message could be 0L. Don't enable this on Solaris ;) fprintf(stderr, "WARNING: KJS %s: %s\n", errorNamesArr[errtype], message.ascii()); #endif Interpreter* interp = exec->lexicalInterpreter(); JSObject *cons; switch (errtype) { case EvalError: cons = interp->builtinEvalError(); break; case RangeError: cons = interp->builtinRangeError(); break; case ReferenceError: cons = interp->builtinReferenceError(); break; case SyntaxError: cons = interp->builtinSyntaxError(); break; case TypeError: cons = interp->builtinTypeError(); break; case URIError: cons = interp->builtinURIError(); break; default: cons = interp->builtinError(); break; } List args; if (message.isEmpty()) args.append(jsString(errorNames[errtype])); else args.append(jsString(message)); JSObject *err = static_cast<JSObject *>(cons->construct(exec,args)); if (lineno != -1) err->put(exec, "line", jsNumber(lineno)); if (sourceId != -1) err->put(exec, "sourceId", jsNumber(sourceId)); if(!sourceURL.isNull()) err->put(exec, "sourceURL", jsString(sourceURL)); return err; /* #ifndef NDEBUG const char *msg = err->get(messagePropertyName)->toString().value().ascii(); if (l >= 0) fprintf(stderr, "KJS: %s at line %d. %s\n", estr, l, msg); else fprintf(stderr, "KJS: %s. %s\n", estr, msg); #endif return err; */ }