+2006-02-20 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Geoff and Darin.
+
+ Patch from Maks Orlovich, based on work by David Faure, hand-applied and
+ significantly reworked by me.
+
+ - Patch: give internal function names (KJS merge)
+ http://bugzilla.opendarwin.org/show_bug.cgi?id=6279
+
+ * tests/mozilla/expected.html: Updated for newly fixed test.
+
+ * kjs/array_object.cpp:
+ (ArrayProtoFunc::ArrayProtoFunc):
+ * kjs/array_object.h:
+ * kjs/bool_object.cpp:
+ (BooleanPrototype::BooleanPrototype):
+ (BooleanProtoFunc::BooleanProtoFunc):
+ * kjs/bool_object.h:
+ * kjs/date_object.cpp:
+ (KJS::DateProtoFunc::DateProtoFunc):
+ (KJS::DateObjectImp::DateObjectImp):
+ (KJS::DateObjectFuncImp::DateObjectFuncImp):
+ * kjs/error_object.cpp:
+ (ErrorPrototype::ErrorPrototype):
+ (ErrorProtoFunc::ErrorProtoFunc):
+ * kjs/error_object.h:
+ * kjs/function.cpp:
+ (KJS::FunctionImp::FunctionImp):
+ (KJS::GlobalFuncImp::GlobalFuncImp):
+ * kjs/function.h:
+ * kjs/function_object.cpp:
+ (FunctionPrototype::FunctionPrototype):
+ (FunctionProtoFunc::FunctionProtoFunc):
+ (FunctionProtoFunc::callAsFunction):
+ * kjs/function_object.h:
+ * kjs/internal.cpp:
+ (KJS::InterpreterImp::initGlobalObject):
+ (KJS::InternalFunctionImp::InternalFunctionImp):
+ * kjs/internal.h:
+ (KJS::InternalFunctionImp::functionName):
+ * kjs/lookup.h:
+ (KJS::staticFunctionGetter):
+ (KJS::HashEntryFunction::HashEntryFunction):
+ (KJS::HashEntryFunction::implementsCall):
+ (KJS::HashEntryFunction::toBoolean):
+ (KJS::HashEntryFunction::implementsHasInstance):
+ (KJS::HashEntryFunction::hasInstance):
+ * kjs/math_object.cpp:
+ (MathFuncImp::MathFuncImp):
+ * kjs/math_object.h:
+ * kjs/number_object.cpp:
+ (NumberPrototype::NumberPrototype):
+ (NumberProtoFunc::NumberProtoFunc):
+ * kjs/number_object.h:
+ * kjs/object.cpp:
+ (KJS::JSObject::putDirectFunction):
+ (KJS::Error::create):
+ * kjs/object.h:
+ * kjs/object_object.cpp:
+ (ObjectPrototype::ObjectPrototype):
+ (ObjectProtoFunc::ObjectProtoFunc):
+ * kjs/object_object.h:
+ * kjs/regexp_object.cpp:
+ (RegExpPrototype::RegExpPrototype):
+ (RegExpProtoFunc::RegExpProtoFunc):
+ * kjs/regexp_object.h:
+ * kjs/string_object.cpp:
+ (StringProtoFunc::StringProtoFunc):
+ (StringObjectImp::StringObjectImp):
+ (StringObjectFuncImp::StringObjectFuncImp):
+ * kjs/string_object.h:
+
2006-02-20 Geoffrey Garen <ggaren@apple.com>
Reviewed by Darin, with help from Eric, Maciej.
// ------------------------------ ArrayProtoFunc ----------------------------
-ArrayProtoFunc::ArrayProtoFunc(ExecState *exec, int i, int len)
- : InternalFunctionImp(
- static_cast<FunctionPrototype*>(exec->lexicalInterpreter()->builtinFunctionPrototype())
- ), id(i)
+ArrayProtoFunc::ArrayProtoFunc(ExecState *exec, int i, int len, const Identifier& name)
+ : InternalFunctionImp(static_cast<FunctionPrototype*>
+ (exec->lexicalInterpreter()->builtinFunctionPrototype()), name)
+ , id(i)
{
put(exec,lengthPropertyName,jsNumber(len),DontDelete|ReadOnly|DontEnum);
}
#ifndef _ARRAY_OBJECT_H_
#define _ARRAY_OBJECT_H_
+#include "array_instance.h"
#include "internal.h"
#include "function_object.h"
class ArrayProtoFunc : public InternalFunctionImp {
public:
- ArrayProtoFunc(ExecState *exec, int i, int len);
+ ArrayProtoFunc(ExecState *exec, int i, int len, const Identifier& name);
virtual bool implementsCall() const;
virtual JSValue *callAsFunction(ExecState *exec, JSObject *thisObj, const List &args);
// ECMA 15.6.4
-BooleanPrototype::BooleanPrototype(ExecState *exec,
- ObjectPrototype *objectProto,
- FunctionPrototype *funcProto)
+BooleanPrototype::BooleanPrototype(ExecState* exec, ObjectPrototype* objectProto, FunctionPrototype* funcProto)
: BooleanInstance(objectProto)
{
// The constructor will be added later by InterpreterImp::InterpreterImp()
- putDirect(toStringPropertyName, new BooleanProtoFunc(exec,funcProto,BooleanProtoFunc::ToString,0), DontEnum);
- putDirect(valueOfPropertyName, new BooleanProtoFunc(exec,funcProto,BooleanProtoFunc::ValueOf,0), DontEnum);
+ putDirectFunction(new BooleanProtoFunc(exec, funcProto, BooleanProtoFunc::ToString, 0, toStringPropertyName), DontEnum);
+ putDirectFunction(new BooleanProtoFunc(exec, funcProto, BooleanProtoFunc::ValueOf, 0, valueOfPropertyName), DontEnum);
setInternalValue(jsBoolean(false));
}
// ------------------------------ BooleanProtoFunc --------------------------
-BooleanProtoFunc::BooleanProtoFunc(ExecState *exec,
- FunctionPrototype *funcProto, int i, int len)
- : InternalFunctionImp(funcProto), id(i)
+BooleanProtoFunc::BooleanProtoFunc(ExecState*, FunctionPrototype* funcProto, int i, int len, const Identifier& name)
+ : InternalFunctionImp(funcProto, name)
+ , id(i)
{
putDirect(lengthPropertyName, len, DontDelete|ReadOnly|DontEnum);
}
*/
class BooleanProtoFunc : public InternalFunctionImp {
public:
- BooleanProtoFunc(ExecState *exec,
- FunctionPrototype *funcProto, int i, int len);
+ BooleanProtoFunc(ExecState*, FunctionPrototype*, int i, int len, const Identifier&);
virtual bool implementsCall() const;
virtual JSValue *callAsFunction(ExecState *exec, JSObject *thisObj, const List &args);
*/
class DateProtoFunc : public InternalFunctionImp {
public:
- DateProtoFunc(ExecState *, int i, int len);
+ DateProtoFunc(ExecState *, int i, int len, const Identifier& date);
virtual bool implementsCall() const;
virtual JSValue *callAsFunction(ExecState *, JSObject *thisObj, const List &args);
*/
class DateObjectFuncImp : public InternalFunctionImp {
public:
- DateObjectFuncImp(ExecState *, FunctionPrototype *, int i, int len);
+ DateObjectFuncImp(ExecState *, FunctionPrototype *, int i, int len, const Identifier& );
virtual bool implementsCall() const;
virtual JSValue *callAsFunction(ExecState *, JSObject *thisObj, const List &args);
// ------------------------------ DateProtoFunc -----------------------------
-DateProtoFunc::DateProtoFunc(ExecState *exec, int i, int len)
- : InternalFunctionImp(static_cast<FunctionPrototype*>(exec->lexicalInterpreter()->builtinFunctionPrototype())),
- id(abs(i)), utc(i<0)
+DateProtoFunc::DateProtoFunc(ExecState *exec, int i, int len, const Identifier& name)
+ : InternalFunctionImp(static_cast<FunctionPrototype*>(exec->lexicalInterpreter()->builtinFunctionPrototype()), name)
+ , id(abs(i))
+ , utc(i < 0)
// We use a negative ID to denote the "UTC" variant.
{
putDirect(lengthPropertyName, len, DontDelete|ReadOnly|DontEnum);
putDirect(prototypePropertyName, dateProto, DontEnum|DontDelete|ReadOnly);
static const Identifier parsePropertyName("parse");
- putDirect(parsePropertyName, new DateObjectFuncImp(exec,funcProto,DateObjectFuncImp::Parse, 1), DontEnum);
+ putDirectFunction(new DateObjectFuncImp(exec, funcProto, DateObjectFuncImp::Parse, 1, parsePropertyName), DontEnum);
static const Identifier UTCPropertyName("UTC");
- putDirect(UTCPropertyName, new DateObjectFuncImp(exec,funcProto,DateObjectFuncImp::UTC, 7), DontEnum);
+ putDirectFunction(new DateObjectFuncImp(exec, funcProto, DateObjectFuncImp::UTC, 7, UTCPropertyName), DontEnum);
// no. of arguments for constructor
putDirect(lengthPropertyName, 7, ReadOnly|DontDelete|DontEnum);
// ------------------------------ DateObjectFuncImp ----------------------------
-DateObjectFuncImp::DateObjectFuncImp(ExecState *exec, FunctionPrototype *funcProto, int i, int len)
- : InternalFunctionImp(funcProto), id(i)
+DateObjectFuncImp::DateObjectFuncImp(ExecState *exec, FunctionPrototype *funcProto, int i, int len, const Identifier& name)
+ : InternalFunctionImp(funcProto, name), id(i)
{
putDirect(lengthPropertyName, len, DontDelete|ReadOnly|DontEnum);
}
put(exec, namePropertyName, jsString("Error"), DontEnum);
put(exec, messagePropertyName, jsString("Unknown error"), DontEnum);
- putDirect(toStringPropertyName, new ErrorProtoFunc(exec,funcProto), DontEnum);
+ putDirectFunction(new ErrorProtoFunc(exec, funcProto, toStringPropertyName), DontEnum);
}
// ------------------------------ ErrorProtoFunc ----------------------------
-ErrorProtoFunc::ErrorProtoFunc(ExecState *exec, FunctionPrototype *funcProto)
- : InternalFunctionImp(funcProto)
+ErrorProtoFunc::ErrorProtoFunc(ExecState*, FunctionPrototype* funcProto, const Identifier& name)
+ : InternalFunctionImp(funcProto, name)
{
putDirect(lengthPropertyName, jsNumber(0), DontDelete|ReadOnly|DontEnum);
}
class ErrorProtoFunc : public InternalFunctionImp {
public:
- ErrorProtoFunc(ExecState *exec, FunctionPrototype *funcProto);
+ ErrorProtoFunc(ExecState*, FunctionPrototype*, const Identifier&);
virtual bool implementsCall() const;
virtual JSValue *callAsFunction(ExecState *exec, JSObject *thisObj, const List &args);
};
};
FunctionImp::FunctionImp(ExecState *exec, const Identifier &n)
- : InternalFunctionImp(
- static_cast<FunctionPrototype*>(exec->lexicalInterpreter()->builtinFunctionPrototype())
- ), param(0L), ident(n)
+ : InternalFunctionImp(static_cast<FunctionPrototype*>
+ (exec->lexicalInterpreter()->builtinFunctionPrototype()), n)
+ , param(0L)
{
}
// ------------------------------ GlobalFunc -----------------------------------
-GlobalFuncImp::GlobalFuncImp(ExecState *exec, FunctionPrototype *funcProto, int i, int len)
- : InternalFunctionImp(funcProto), id(i)
+GlobalFuncImp::GlobalFuncImp(ExecState*, FunctionPrototype* funcProto, int i, int len, const Identifier& name)
+ : InternalFunctionImp(funcProto, name)
+ , id(i)
{
putDirect(lengthPropertyName, len, DontDelete|ReadOnly|DontEnum);
}
#ifndef KJS_FUNCTION_H
#define KJS_FUNCTION_H
-#include "array_instance.h"
#include "internal.h"
#include <kxmlcore/OwnPtr.h>
virtual CodeType codeType() const = 0;
virtual Completion execute(ExecState *exec) = 0;
- Identifier name() const { return ident; }
virtual const ClassInfo *classInfo() const { return &info; }
static const ClassInfo info;
protected:
OwnPtr<Parameter> param;
- Identifier ident;
private:
static JSValue *argumentsGetter(ExecState *, JSObject *, const Identifier &, const PropertySlot&);
Identifier& operator[](int index);
Identifier& operator[](const Identifier &indexIdentifier);
bool isMapped(const Identifier &index) const;
- void IndexToNameMap::unMap(const Identifier &index);
+ void unMap(const Identifier &index);
private:
IndexToNameMap(); // prevent construction w/o parameters
class GlobalFuncImp : public InternalFunctionImp {
public:
- GlobalFuncImp(ExecState *exec, FunctionPrototype *funcProto, int i, int len);
+ GlobalFuncImp(ExecState*, FunctionPrototype*, int i, int len, const Identifier&);
virtual bool implementsCall() const;
virtual JSValue *callAsFunction(ExecState *exec, JSObject *thisObj, const List &args);
virtual CodeType codeType() const;
FunctionPrototype::FunctionPrototype(ExecState *exec)
{
- putDirect(lengthPropertyName, jsNumber(0), DontDelete|ReadOnly|DontEnum);
- putDirect(toStringPropertyName, new FunctionProtoFunc(exec, this, FunctionProtoFunc::ToString, 0), DontEnum);
+ putDirect(lengthPropertyName, jsNumber(0), DontDelete|ReadOnly|DontEnum);
+ putDirectFunction(new FunctionProtoFunc(exec, this, FunctionProtoFunc::ToString, 0, toStringPropertyName), DontEnum);
static const Identifier applyPropertyName("apply");
- putDirect(applyPropertyName, new FunctionProtoFunc(exec, this, FunctionProtoFunc::Apply, 2), DontEnum);
+ putDirectFunction(new FunctionProtoFunc(exec, this, FunctionProtoFunc::Apply, 2, applyPropertyName), DontEnum);
static const Identifier callPropertyName("call");
- putDirect(callPropertyName, new FunctionProtoFunc(exec, this, FunctionProtoFunc::Call, 1), DontEnum);
+ putDirectFunction(new FunctionProtoFunc(exec, this, FunctionProtoFunc::Call, 1, callPropertyName), DontEnum);
}
FunctionPrototype::~FunctionPrototype()
// ------------------------------ FunctionProtoFunc -------------------------
-FunctionProtoFunc::FunctionProtoFunc(ExecState *exec,
- FunctionPrototype *funcProto, int i, int len)
- : InternalFunctionImp(funcProto), id(i)
+FunctionProtoFunc::FunctionProtoFunc(ExecState*, FunctionPrototype* funcProto, int i, int len, const Identifier& name)
+ : InternalFunctionImp(funcProto, name)
+ , id(i)
{
putDirect(lengthPropertyName, len, DontDelete|ReadOnly|DontEnum);
}
JSValue *result = NULL;
switch (id) {
- case ToString: {
- // ### also make this work for internal functions
+ case ToString:
if (!thisObj || !thisObj->inherits(&InternalFunctionImp::info)) {
#ifndef NDEBUG
fprintf(stderr,"attempted toString() call on null or non-function object\n");
return throwError(exec, TypeError);
}
if (thisObj->inherits(&DeclaredFunctionImp::info)) {
- DeclaredFunctionImp *fi = static_cast<DeclaredFunctionImp*>
- (thisObj);
- return jsString("function " + fi->name().ustring() + "(" +
- fi->parameterString() + ") " + fi->body->toString());
- } else if (thisObj->inherits(&FunctionImp::info) &&
- !static_cast<FunctionImp*>(thisObj)->name().isNull()) {
- result = jsString("function " + static_cast<FunctionImp*>(thisObj)->name().ustring() + "()");
- }
- else {
- result = jsString("(Internal Function)");
- }
+ DeclaredFunctionImp *fi = static_cast<DeclaredFunctionImp*>(thisObj);
+ return jsString("function " + fi->functionName().ustring() + "(" +
+ fi->parameterString() + ") " + fi->body->toString());
+ } else if (thisObj->inherits(&InternalFunctionImp::info) &&
+ !static_cast<InternalFunctionImp*>(thisObj)->functionName().isNull()) {
+ result = jsString("\nfunction " + static_cast<InternalFunctionImp*>(thisObj)->functionName().ustring() + "() {\n"
+ " [native code]\n}\n");
+ } else {
+ result = jsString("[function]");
}
break;
case Apply: {
*/
class FunctionProtoFunc : public InternalFunctionImp {
public:
- FunctionProtoFunc(ExecState *exec,
- FunctionPrototype *funcProto, int i, int len);
+ FunctionProtoFunc(ExecState*, FunctionPrototype*, int i, int len, const Identifier&);
virtual bool implementsCall() const;
virtual JSValue *callAsFunction(ExecState *exec, JSObject *thisObj, const List &args);
b_uriError = new NativeErrorImp(&globExec, funcProto, b_uriErrorPrototype);
// ECMA 15.3.4.1
- funcProto->put(&globExec, "constructor", b_Function, DontEnum);
+ funcProto->put(&globExec, constructorPropertyName, b_Function, DontEnum);
global->put(&globExec, "Object", b_Object, DontEnum);
global->put(&globExec, "Function", b_Function, DontEnum);
global->put(&globExec, "TypeError",b_typeError, Internal);
global->put(&globExec, "URIError",b_uriError, Internal);
- // Set the "constructor" property of all builtin constructors
- objProto->put(&globExec, "constructor", b_Object, DontEnum | DontDelete | ReadOnly);
- funcProto->put(&globExec, "constructor", b_Function, DontEnum | DontDelete | ReadOnly);
- arrayProto->put(&globExec, "constructor", b_Array, DontEnum | DontDelete | ReadOnly);
- booleanProto->put(&globExec, "constructor", b_Boolean, DontEnum | DontDelete | ReadOnly);
- stringProto->put(&globExec, "constructor", b_String, DontEnum | DontDelete | ReadOnly);
- numberProto->put(&globExec, "constructor", b_Number, DontEnum | DontDelete | ReadOnly);
- dateProto->put(&globExec, "constructor", b_Date, DontEnum | DontDelete | ReadOnly);
- regexpProto->put(&globExec, "constructor", b_RegExp, DontEnum | DontDelete | ReadOnly);
- errorProto->put(&globExec, "constructor", b_Error, DontEnum | DontDelete | ReadOnly);
- b_evalErrorPrototype->put(&globExec, "constructor", b_evalError, DontEnum | DontDelete | ReadOnly);
- b_rangeErrorPrototype->put(&globExec, "constructor", b_rangeError, DontEnum | DontDelete | ReadOnly);
- b_referenceErrorPrototype->put(&globExec, "constructor", b_referenceError, DontEnum | DontDelete | ReadOnly);
- b_syntaxErrorPrototype->put(&globExec, "constructor", b_syntaxError, DontEnum | DontDelete | ReadOnly);
- b_typeErrorPrototype->put(&globExec, "constructor", b_typeError, DontEnum | DontDelete | ReadOnly);
- b_uriErrorPrototype->put(&globExec, "constructor", b_uriError, DontEnum | DontDelete | ReadOnly);
+ // Set the constructorPropertyName property of all builtin constructors
+ objProto->put(&globExec, constructorPropertyName, b_Object, DontEnum | DontDelete | ReadOnly);
+ funcProto->put(&globExec, constructorPropertyName, b_Function, DontEnum | DontDelete | ReadOnly);
+ arrayProto->put(&globExec, constructorPropertyName, b_Array, DontEnum | DontDelete | ReadOnly);
+ booleanProto->put(&globExec, constructorPropertyName, b_Boolean, DontEnum | DontDelete | ReadOnly);
+ stringProto->put(&globExec, constructorPropertyName, b_String, DontEnum | DontDelete | ReadOnly);
+ numberProto->put(&globExec, constructorPropertyName, b_Number, DontEnum | DontDelete | ReadOnly);
+ dateProto->put(&globExec, constructorPropertyName, b_Date, DontEnum | DontDelete | ReadOnly);
+ regexpProto->put(&globExec, constructorPropertyName, b_RegExp, DontEnum | DontDelete | ReadOnly);
+ errorProto->put(&globExec, constructorPropertyName, b_Error, DontEnum | DontDelete | ReadOnly);
+ b_evalErrorPrototype->put(&globExec, constructorPropertyName, b_evalError, DontEnum | DontDelete | ReadOnly);
+ b_rangeErrorPrototype->put(&globExec, constructorPropertyName, b_rangeError, DontEnum | DontDelete | ReadOnly);
+ b_referenceErrorPrototype->put(&globExec, constructorPropertyName, b_referenceError, DontEnum | DontDelete | ReadOnly);
+ b_syntaxErrorPrototype->put(&globExec, constructorPropertyName, b_syntaxError, DontEnum | DontDelete | ReadOnly);
+ b_typeErrorPrototype->put(&globExec, constructorPropertyName, b_typeError, DontEnum | DontDelete | ReadOnly);
+ b_uriErrorPrototype->put(&globExec, constructorPropertyName, b_uriError, DontEnum | DontDelete | ReadOnly);
// built-in values
global->put(&globExec, "NaN", jsNaN(), DontEnum|DontDelete);
global->put(&globExec, "undefined", jsUndefined(), DontEnum|DontDelete);
// built-in functions
- global->put(&globExec, "eval", new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::Eval, 1), DontEnum);
- global->put(&globExec, "parseInt", new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::ParseInt, 2), DontEnum);
- global->put(&globExec, "parseFloat", new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::ParseFloat, 1), DontEnum);
- global->put(&globExec, "isNaN", new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::IsNaN, 1), DontEnum);
- global->put(&globExec, "isFinite", new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::IsFinite, 1), DontEnum);
- global->put(&globExec, "escape", new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::Escape, 1), DontEnum);
- global->put(&globExec, "unescape", new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::UnEscape, 1), DontEnum);
- global->put(&globExec, "decodeURI", new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::DecodeURI, 1), DontEnum);
- global->put(&globExec, "decodeURIComponent", new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::DecodeURIComponent, 1), DontEnum);
- global->put(&globExec, "encodeURI", new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::EncodeURI, 1), DontEnum);
- global->put(&globExec, "encodeURIComponent", new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::EncodeURIComponent, 1), DontEnum);
+ global->putDirectFunction(new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::Eval, 1, "eval"), DontEnum);
+ global->putDirectFunction(new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::ParseInt, 2, "parseInt"), DontEnum);
+ global->putDirectFunction(new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::ParseFloat, 1, "parseFloat"), DontEnum);
+ global->putDirectFunction(new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::IsNaN, 1, "isNaN"), DontEnum);
+ global->putDirectFunction(new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::IsFinite, 1, "isFinite"), DontEnum);
+ global->putDirectFunction(new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::Escape, 1, "escape"), DontEnum);
+ global->putDirectFunction(new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::UnEscape, 1, "unescape"), DontEnum);
+ global->putDirectFunction(new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::DecodeURI, 1, "decodeURI"), DontEnum);
+ global->putDirectFunction(new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::DecodeURIComponent, 1, "decodeURIComponent"), DontEnum);
+ global->putDirectFunction(new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::EncodeURI, 1, "encodeURI"), DontEnum);
+ global->putDirectFunction(new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::EncodeURIComponent, 1, "encodeURIComponent"), DontEnum);
#ifndef NDEBUG
- global->put(&globExec, "kjsprint", new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::KJSPrint, 1), DontEnum);
+ global->putDirectFunction(new GlobalFuncImp(&globExec, funcProto, GlobalFuncImp::KJSPrint, 1, "kjsprint"), DontEnum);
#endif
// built-in objects
{
}
-InternalFunctionImp::InternalFunctionImp(FunctionPrototype *funcProto)
+InternalFunctionImp::InternalFunctionImp(FunctionPrototype* funcProto)
: JSObject(funcProto)
{
}
+InternalFunctionImp::InternalFunctionImp(FunctionPrototype* funcProto, const Identifier& name)
+ : JSObject(funcProto)
+ , m_name(name)
+{
+}
+
bool InternalFunctionImp::implementsHasInstance() const
{
return true;
class InternalFunctionImp : public JSObject {
public:
InternalFunctionImp();
- InternalFunctionImp(FunctionPrototype *funcProto);
+ InternalFunctionImp(FunctionPrototype*);
+ InternalFunctionImp(FunctionPrototype*, const Identifier&);
bool implementsHasInstance() const;
bool hasInstance(ExecState *exec, JSValue *value);
virtual const ClassInfo *classInfo() const { return &info; }
static const ClassInfo info;
+ const Identifier& functionName() const { return m_name; }
+ private:
+ Identifier m_name;
};
// helper function for toInteger, toInt32, toUInt32 and toUInt16
namespace KJS {
+ class FunctionPrototype;
+
/**
* An entry in a hash table.
*/
return cachedVal;
const HashEntry *entry = slot.staticEntry();
- JSValue *val = new FuncImp(exec, entry->value, entry->params);
+ JSValue *val = new FuncImp(exec, entry->value, entry->params, propertyName);
thisObj->putDirect(propertyName, val, entry->attr);
return val;
}
else
thisObj->putValueProperty(exec, entry->value, value, attr);
}
-
+
} // namespace
/*
}
#define KJS_IMPLEMENT_PROTOFUNC(ClassFunc) \
- class ClassFunc : public DOMFunction { \
+ class ClassFunc : public InternalFunctionImp { \
public: \
- ClassFunc(ExecState *exec, int i, int len) : id(i) \
+ ClassFunc(ExecState* exec, int i, int len, const Identifier& name) \
+ : InternalFunctionImp(static_cast<FunctionPrototype*>(exec->lexicalInterpreter()->builtinFunctionPrototype()), name) \
+ , id(i) \
{ \
put(exec, lengthPropertyName, jsNumber(len), DontDelete|ReadOnly|DontEnum); \
} \
static bool randomSeeded = false;
-MathFuncImp::MathFuncImp(ExecState *exec, int i, int l)
- : InternalFunctionImp(
- static_cast<FunctionPrototype*>(exec->lexicalInterpreter()->builtinFunctionPrototype())
- ), id(i)
+MathFuncImp::MathFuncImp(ExecState* exec, int i, int l, const Identifier& name)
+ : InternalFunctionImp(static_cast<FunctionPrototype*>(exec->lexicalInterpreter()->builtinFunctionPrototype()), name)
+ , id(i)
{
putDirect(lengthPropertyName, l, DontDelete|ReadOnly|DontEnum);
}
class MathFuncImp : public InternalFunctionImp {
public:
- MathFuncImp(ExecState *exec, int i, int l);
+ MathFuncImp(ExecState *exec, int i, int l, const Identifier&);
virtual bool implementsCall() const;
virtual JSValue *callAsFunction(ExecState *exec, JSObject *thisObj, const List &args);
private:
// The constructor will be added later, after NumberObjectImp has been constructed
- putDirect(toStringPropertyName, new NumberProtoFunc(exec,funcProto,NumberProtoFunc::ToString, 1), DontEnum);
- putDirect(toLocaleStringPropertyName, new NumberProtoFunc(exec,funcProto,NumberProtoFunc::ToLocaleString, 0), DontEnum);
- putDirect(valueOfPropertyName, new NumberProtoFunc(exec,funcProto,NumberProtoFunc::ValueOf, 0), DontEnum);
- putDirect(toFixedPropertyName, new NumberProtoFunc(exec,funcProto,NumberProtoFunc::ToFixed, 1), DontEnum);
- putDirect(toExponentialPropertyName, new NumberProtoFunc(exec,funcProto,NumberProtoFunc::ToExponential, 1), DontEnum);
- putDirect(toPrecisionPropertyName, new NumberProtoFunc(exec,funcProto,NumberProtoFunc::ToPrecision, 1), DontEnum);
+ putDirectFunction(new NumberProtoFunc(exec, funcProto, NumberProtoFunc::ToString, 1, toStringPropertyName), DontEnum);
+ putDirectFunction(new NumberProtoFunc(exec, funcProto, NumberProtoFunc::ToLocaleString, 0, toLocaleStringPropertyName), DontEnum);
+ putDirectFunction(new NumberProtoFunc(exec, funcProto, NumberProtoFunc::ValueOf, 0, valueOfPropertyName), DontEnum);
+ putDirectFunction(new NumberProtoFunc(exec, funcProto, NumberProtoFunc::ToFixed, 1, toFixedPropertyName), DontEnum);
+ putDirectFunction(new NumberProtoFunc(exec, funcProto, NumberProtoFunc::ToExponential, 1, toExponentialPropertyName), DontEnum);
+ putDirectFunction(new NumberProtoFunc(exec, funcProto, NumberProtoFunc::ToPrecision, 1, toPrecisionPropertyName), DontEnum);
}
// ------------------------------ NumberProtoFunc ---------------------------
-NumberProtoFunc::NumberProtoFunc(ExecState *exec,
- FunctionPrototype *funcProto, int i, int len)
- : InternalFunctionImp(funcProto), id(i)
+NumberProtoFunc::NumberProtoFunc(ExecState*, FunctionPrototype* funcProto, int i, int len, const Identifier& name)
+ : InternalFunctionImp(funcProto, name)
+ , id(i)
{
putDirect(lengthPropertyName, len, DontDelete|ReadOnly|DontEnum);
}
*/
class NumberProtoFunc : public InternalFunctionImp {
public:
- NumberProtoFunc(ExecState *exec, FunctionPrototype *funcProto,
- int i, int len);
+ NumberProtoFunc(ExecState*, FunctionPrototype*, int i, int len, const Identifier&);
virtual bool implementsCall() const;
virtual JSValue *callAsFunction(ExecState *exec, JSObject *thisObj, const List &args);
_prop.put(propertyName, jsNumber(value), attr);
}
+void JSObject::putDirectFunction(InternalFunctionImp* func, int attr)
+{
+ putDirect(func->functionName(), func, attr);
+}
+
void JSObject::fillGetterPropertySlot(PropertySlot& slot, JSValue **location)
{
GetterSetterImp *gs = static_cast<GetterSetterImp *>(*location);
/*
#ifndef NDEBUG
- const char *msg = err->get("message")->toString().value().ascii();
+ 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
class HashTable;
class HashEntry;
class ListImp;
+ class InternalFunctionImp;
// ECMA 262-3 8.6.1
// Property attributes
void putDirect(const Identifier &propertyName, JSValue *value, int attr = 0);
void putDirect(const Identifier &propertyName, int value, int attr = 0);
+ // convenience to add a function property under the function's own built-in name
+ void putDirectFunction(InternalFunctionImp*, int attr = 0);
+
void fillGetterPropertySlot(PropertySlot& slot, JSValue **location);
void defineGetter(ExecState *exec, const Identifier& propertyName, JSObject *getterFunc);
// ------------------------------ ObjectPrototype --------------------------------
-ObjectPrototype::ObjectPrototype(ExecState *exec,
- FunctionPrototype *funcProto)
+ObjectPrototype::ObjectPrototype(ExecState* exec, FunctionPrototype* funcProto)
: JSObject() // [[Prototype]] is null
{
- putDirect(toStringPropertyName, new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::ToString, 0), DontEnum);
- putDirect(toLocaleStringPropertyName, new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::ToLocaleString, 0), DontEnum);
- putDirect(valueOfPropertyName, new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::ValueOf, 0), DontEnum);
- putDirect("hasOwnProperty", new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::HasOwnProperty, 1), DontEnum);
- putDirect("propertyIsEnumerable", new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::PropertyIsEnumerable, 1), DontEnum);
- putDirect("isPrototypeOf", new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::IsPrototypeOf, 1), DontEnum);
+ putDirectFunction(new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::ToString, 0, toStringPropertyName), DontEnum);
+ putDirectFunction(new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::ToLocaleString, 0, toLocaleStringPropertyName), DontEnum);
+ putDirectFunction(new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::ValueOf, 0, valueOfPropertyName), DontEnum);
+ static Identifier hasOwnPropertyPropertyName("hasOwnProperty");
+ static Identifier propertyIsEnumerablePropertyName("propertyIsEnumerable");
+ static Identifier isPrototypeOfPropertyName("isPrototypeOf");
+ putDirectFunction(new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::HasOwnProperty, 1, hasOwnPropertyPropertyName), DontEnum);
+ putDirectFunction(new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::PropertyIsEnumerable, 1, propertyIsEnumerablePropertyName), DontEnum);
+ putDirectFunction(new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::IsPrototypeOf, 1, isPrototypeOfPropertyName), DontEnum);
+
// Mozilla extensions
- putDirect("__defineGetter__", new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::DefineGetter, 2), DontEnum);
- putDirect("__defineSetter__", new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::DefineSetter, 2), DontEnum);
- putDirect("__lookupGetter__", new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::LookupGetter, 1), DontEnum);
- putDirect("__lookupSetter__", new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::LookupSetter, 1), DontEnum);
+ static const Identifier defineGetterPropertyName("__defineGetter__");
+ static const Identifier defineSetterPropertyName("__defineSetter__");
+ static const Identifier lookupGetterPropertyName("__lookupGetter__");
+ static const Identifier lookupSetterPropertyName("__lookupSetter__");
+ putDirectFunction(new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::DefineGetter, 2, defineGetterPropertyName), DontEnum);
+ putDirectFunction(new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::DefineSetter, 2, defineSetterPropertyName), DontEnum);
+ putDirectFunction(new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::LookupGetter, 1, lookupGetterPropertyName), DontEnum);
+ putDirectFunction(new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::LookupSetter, 1, lookupSetterPropertyName), DontEnum);
}
// ------------------------------ ObjectProtoFunc --------------------------------
-ObjectProtoFunc::ObjectProtoFunc(ExecState *exec,
- FunctionPrototype *funcProto,
- int i, int len)
- : InternalFunctionImp(funcProto), id(i)
+ObjectProtoFunc::ObjectProtoFunc(ExecState*, FunctionPrototype* funcProto, int i, int len, const Identifier& name)
+ : InternalFunctionImp(funcProto, name)
+ , id(i)
{
putDirect(lengthPropertyName, len, DontDelete|ReadOnly|DontEnum);
}
*/
class ObjectProtoFunc : public InternalFunctionImp {
public:
- ObjectProtoFunc(ExecState *exec, FunctionPrototype *funcProto, int i, int len);
+ ObjectProtoFunc(ExecState* exec, FunctionPrototype* funcProto, int i, int len, const Identifier&);
virtual bool implementsCall() const;
virtual JSValue *callAsFunction(ExecState *, JSObject *, const List &args);
// The constructor will be added later in RegExpObject's constructor (?)
static const Identifier execPropertyName("exec");
- putDirect(execPropertyName, new RegExpProtoFunc(exec,funcProto,RegExpProtoFunc::Exec, 0), DontEnum);
static const Identifier testPropertyName("test");
- putDirect(testPropertyName, new RegExpProtoFunc(exec,funcProto,RegExpProtoFunc::Test, 0), DontEnum);
- putDirect(toStringPropertyName, new RegExpProtoFunc(exec,funcProto,RegExpProtoFunc::ToString, 0), DontEnum);
+ putDirectFunction(new RegExpProtoFunc(exec, funcProto, RegExpProtoFunc::Exec, 0, execPropertyName), DontEnum);
+ putDirectFunction(new RegExpProtoFunc(exec, funcProto, RegExpProtoFunc::Test, 0, testPropertyName), DontEnum);
+ putDirectFunction(new RegExpProtoFunc(exec, funcProto, RegExpProtoFunc::ToString, 0, toStringPropertyName), DontEnum);
}
// ------------------------------ RegExpProtoFunc ---------------------------
-RegExpProtoFunc::RegExpProtoFunc(ExecState *exec,
- FunctionPrototype *funcProto, int i, int len)
- : InternalFunctionImp(funcProto), id(i)
+RegExpProtoFunc::RegExpProtoFunc(ExecState*, FunctionPrototype* funcProto, int i, int len, const Identifier& name)
+ : InternalFunctionImp(funcProto, name), id(i)
{
putDirect(lengthPropertyName, len, DontDelete|ReadOnly|DontEnum);
}
class RegExpProtoFunc : public InternalFunctionImp {
public:
- RegExpProtoFunc(ExecState *exec,
- FunctionPrototype *funcProto, int i, int len);
+ RegExpProtoFunc(ExecState*, FunctionPrototype*, int i, int len, const Identifier&);
virtual bool implementsCall() const;
virtual JSValue *callAsFunction(ExecState *exec, JSObject *thisObj, const List &args);
// ------------------------------ StringProtoFunc ---------------------------
-StringProtoFunc::StringProtoFunc(ExecState *exec, int i, int len)
- : InternalFunctionImp(
- static_cast<FunctionPrototype*>(exec->lexicalInterpreter()->builtinFunctionPrototype())
- ), id(i)
+StringProtoFunc::StringProtoFunc(ExecState *exec, int i, int len, const Identifier& name)
+ : InternalFunctionImp(static_cast<FunctionPrototype*>(exec->lexicalInterpreter()->builtinFunctionPrototype()), name)
+ , id(i)
{
putDirect(lengthPropertyName, len, DontDelete|ReadOnly|DontEnum);
}
// ECMA 15.5.3.1 String.prototype
putDirect(prototypePropertyName, stringProto, DontEnum|DontDelete|ReadOnly);
- putDirect(fromCharCodePropertyName, new StringObjectFuncImp(exec, funcProto), DontEnum);
+ putDirectFunction(new StringObjectFuncImp(exec, funcProto, fromCharCodePropertyName), DontEnum);
// no. of arguments for constructor
putDirect(lengthPropertyName, jsNumber(1), ReadOnly|DontDelete|DontEnum);
// ------------------------------ StringObjectFuncImp --------------------------
// ECMA 15.5.3.2 fromCharCode()
-StringObjectFuncImp::StringObjectFuncImp(ExecState *exec, FunctionPrototype *funcProto)
- : InternalFunctionImp(funcProto)
+StringObjectFuncImp::StringObjectFuncImp(ExecState*, FunctionPrototype* funcProto, const Identifier& name)
+ : InternalFunctionImp(funcProto, name)
{
putDirect(lengthPropertyName, jsNumber(1), DontDelete|ReadOnly|DontEnum);
}
*/
class StringProtoFunc : public InternalFunctionImp {
public:
- StringProtoFunc(ExecState *exec, int i, int len);
+ StringProtoFunc(ExecState *exec, int i, int len, const Identifier&);
virtual bool implementsCall() const;
virtual JSValue *callAsFunction(ExecState *exec, JSObject *thisObj, const List &args);
*/
class StringObjectFuncImp : public InternalFunctionImp {
public:
- StringObjectFuncImp(ExecState *exec, FunctionPrototype *funcProto);
+ StringObjectFuncImp(ExecState*, FunctionPrototype*, const Identifier&);
virtual bool implementsCall() const;
virtual JSValue *callAsFunction(ExecState *exec, JSObject *thisObj, const List &args);
};
<p class='results_summary'>
Test List: All tests<br>
Skip List: (none)<br>
-1135 test(s) selected, 1127 test(s) completed, 76 failures reported (6.74% failed)<br>
-Engine command line: /Users/ggaren/symroots/Development/testkjs <br>
-OS type: Darwin geoffrey-garens-powerbook-g4-17.local 8.4.0 Darwin Kernel Version 8.4.0: Thu Dec 8 09:27:51 PST 2005; root:xnu-792.6.55.obj~1/RELEASE_PPC Power Macintosh powerpc<br>
-Testcase execution time: 5 minutes, 49 seconds.<br>
-Tests completed on Wed Jan 4 13:27:34 2006.<br><br>
+1135 test(s) selected, 1127 test(s) completed, 75 failures reported (6.65% failed)<br>
+Engine command line: /Users/mjs/Work/symroots/Release/testkjs <br>
+OS type: Darwin maciej-stachowiaks-powerbook-g4-17.local 8.3.0 Darwin Kernel Version 8.3.0: Mon Oct 3 20:04:04 PDT 2005; root:xnu-792.6.22.obj~2/RELEASE_PPC Power Macintosh powerpc<br>
+Testcase execution time: 2 minutes, 5 seconds.<br>
+Tests completed on Mon Feb 20 05:11:05 2006.<br><br>
[ <a href='#fail_detail'>Failure Details</a> | <a href='#retest_list'>Retest List</a> | <a href='menu.html'>Test Selection Page</a> ]<br>
<hr>
<a name='fail_detail'></a>
--> parseFloat("1e2000") = NaN FAILED! expected: Infinity<br>
--> -s2 == -Infinity || -s2 == -1.7976931348623157e+308 = false FAILED! expected: true<br>
--> -s3 == -Infinity || -s3 == -1.7976931348623157e+308 = false FAILED! expected: true<br>
---> parseInt(s1,10) == 1.7976931348623157e+308 || parseInt(s1,10) == Infinity = false FAILED! expected: true<br>
---> parseInt(s2,10) == Infinity || parseInt(s2,10) == 1.7976931348623157e+308 = false FAILED! expected: true<br>
---> parseInt(s1) == 1.7976931348623157e+308 || parseInt(s1) == Infinity = false FAILED! expected: true<br>
---> parseInt(s2) == Infinity || parseInt(s2) == 1.7976931348623157e+308 = false FAILED! expected: true<br>
--> 0x1000000000000081 = 1152921504606847000 FAILED! expected: 1152921504606847200<br>
--> 0x1000000000000281 = 1152921504606847500 FAILED! expected: 1152921504606847700<br>
--> parseInt("0000001000000001001000110100010101100111100010011010101111011",2) = 18054430506169720 FAILED! expected: 18054430506169724<br>
Complete testcase output was:<br>
--> RegExp/hex-001.js JS regexp anchoring on empty match bug<br>
--> BUGNUMBER: http://bugzilla.mozilla.org/show_bug.cgi?id=2157<br>
-Exception, line 19: TypeError: Object /a||b/ (result of expression a||b) does not allow calls.<br>
+Exception, line 19: <br>
</tt><br>
<a name='failure6'></a><dd><b>Testcase <a target='other_window' href='./ecma_2/RegExp/unicode-001.js'>ecma_2/RegExp/unicode-001.js</a> failed</b> <br>
[ <a href='#failure5'>Previous Failure</a> | <a href='#failure7'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
--> RegExp/unicode-001.js new RegExp( pattern, flags )<br>
-KJS: pcre_compile() failed with 'PCRE does not support \L, \l, \N, \U, or \u'<br>
-Exception, line 34: TypeError: Null value<br>
+Exception, line 34: <br>
</tt><br>
<a name='failure7'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Date/15.9.5.7.js'>ecma_3/Date/15.9.5.7.js</a> failed</b> <br>
[ <a href='#failure6'>Previous Failure</a> | <a href='#failure8'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
--> (Mon Feb 28 2000 16:00:00 GMT-0800).toLocaleTimeString() = 4:00:00 PM PST FAILED! expected: 16:00:00<br>
--> (Mon Feb 28 2000 15:59:59 GMT-0800).toLocaleTimeString() = 3:59:59 PM PST FAILED! expected: 15:59:59<br>
--> (Tue Feb 29 2000 00:00:00 GMT-0800).toLocaleTimeString() = 12:00:00 AM PST FAILED! expected: 00:00:00<br>
---> (Wed Jan 04 2006 13:26:46 GMT-0800).toLocaleTimeString() = 1:26:46 PM PST FAILED! expected: 13:26:46<br>
---> (Wed Jan 04 2006 21:26:46 GMT-0800).toLocaleTimeString() = 9:26:46 PM PST FAILED! expected: 21:26:46<br>
+--> (Mon Feb 20 2006 05:10:39 GMT-0800).toLocaleTimeString() = 5:10:39 AM PST FAILED! expected: 05:10:39<br>
+--> (Mon Feb 20 2006 13:10:39 GMT-0800).toLocaleTimeString() = 1:10:39 PM PST FAILED! expected: 13:10:39<br>
--> (Fri Dec 31 2004 16:00:00 GMT-0800).toLocaleTimeString() = 4:00:00 PM PST FAILED! expected: 16:00:00<br>
--> (Fri Dec 31 2004 15:59:59 GMT-0800).toLocaleTimeString() = 3:59:59 PM PST FAILED! expected: 15:59:59<br>
--> (Sat Jan 01 2005 00:00:00 GMT-0800).toLocaleTimeString() = 12:00:00 AM PST FAILED! expected: 00:00:00<br>
<tt>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
-Exception, line 26: SyntaxError: Parse error<br>
+Exception, line 26: <br>
</tt><br>
<a name='failure9'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/RegExp/15.10.2-1.js'>ecma_3/RegExp/15.10.2-1.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=(none)' target='other_window'>Bug Number (none)</a><br>
[ <a href='#failure8'>Previous Failure</a> | <a href='#failure10'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
Failure messages were:<br>
--> FAILED!: [reported from test()] Section 3 of test -<br>
--> FAILED!: [reported from test()] regexp = /[\S]+/<br>
---> FAILED!: [reported from test()] string = '<br>
+--> FAILED!: [reported from test()] string = '一가七一'<br>
--> FAILED!: [reported from test()] ERROR !!! regexp FAILED to match anything !!!<br>
---> FAILED!: [reported from test()] Expect: ["<br>
+--> FAILED!: [reported from test()] Expect: ["一가七一"]<br>
--> FAILED!: [reported from test()] Actual: null<br>
--> FAILED!: [reported from test()] <br>
--> FAILED!: [reported from test()] Section 4 of test -<br>
--> FAILED!: [reported from test()] regexp = /[\S]+/<br>
---> FAILED!: [reported from test()] string = '<br>
+--> FAILED!: [reported from test()] string = '一가 七一'<br>
--> FAILED!: [reported from test()] ERROR !!! regexp FAILED to match anything !!!<br>
---> FAILED!: [reported from test()] Expect: ["<br>
+--> FAILED!: [reported from test()] Expect: ["一가"]<br>
--> FAILED!: [reported from test()] Actual: null<br>
--> FAILED!: [reported from test()] <br>
</tt><br>
<tt>--> STATUS: Performance: execution of regular expression<br>
Failure messages were:<br>
--> FAILED!: Section 4 of test -<br>
---> FAILED!: regexp = /[ ]*(?:\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\))[^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\)[ ]*)*(?:(?:[^( <>@,;:".\\\[\]<br>
---> FAILED!:
-"]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-"]*)*")[^()<>@,;:".\\\[\]\80-ÿ<br>
---> FAILED!: -\1f]*(?:(?:\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\))[^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\)|"[^\\\80-ÿ<br>
---> FAILED!:
-"]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-"]*)*")[^()<>@,;:".\\\[\]\80-ÿ<br>
---> FAILED!: -\1f]*)*<[ ]*(?:\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\))[^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\)[ ]*)*(?:@[ ]*(?:\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\))[^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br>
---> FAILED!:
-\[\]]|\\[^\80-ÿ])*\])[ ]*(?:\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\))[^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\)[ ]*)*(?:.[ ]*(?:\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\))[^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br>
---> FAILED!:
-\[\]]|\\[^\80-ÿ])*\])[ ]*(?:\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\))[^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\)[ ]*)*)*(?:,[ ]*(?:\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\))[^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\)[ ]*)*@[ ]*(?:\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\))[^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br>
---> FAILED!:
-\[\]]|\\[^\80-ÿ])*\])[ ]*(?:\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\))[^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\)[ ]*)*(?:.[ ]*(?:\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\))[^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br>
---> FAILED!:
-\[\]]|\\[^\80-ÿ])*\])[ ]*(?:\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\))[^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\)[ ]*)*)*)*:[ ]*(?:\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\))[^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\)[ ]*)*)?(?:[^( <>@,;:".\\\[\]<br>
---> FAILED!:
-"]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-"]*)*")[ ]*(?:\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\))[^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\)[ ]*)*@[ ]*(?:\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\))[^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br>
---> FAILED!:
-\[\]]|\\[^\80-ÿ])*\])[ ]*(?:\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\))[^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\)[ ]*)*(?:.[ ]*(?:\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\))[^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br>
---> FAILED!:
-\[\]]|\\[^\80-ÿ])*\])[ ]*(?:\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\))[^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\)[ ]*)*)*>|(?:[^( <>@,;:".\\\[\]<br>
---> FAILED!:
-"]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-"]*)*")[ ]*(?:\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\))[^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\)[ ]*)*@[ ]*(?:\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\))[^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br>
---> FAILED!:
-\[\]]|\\[^\80-ÿ])*\])[ ]*(?:\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\))[^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\)[ ]*)*(?:.[ ]*(?:\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\))[^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br>
---> FAILED!:
-\[\]]|\\[^\80-ÿ])*\])[ ]*(?:\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
---> FAILED!:
-()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\))[^\\\80-ÿ<br>
---> FAILED!:
-()]*)*\)[ ]*)*)*)/g<br>
+--> FAILED!: regexp = /[ ]*(?:\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\))[^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\)[ ]*)*(?:(?:[^( <>@,;:".\\\[\]<br>
+--> FAILED!: \r"]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r"]*)*")[^()<>@,;:".\\\[\]\80-ÿ<br>
+--> FAILED!: -\1f]*(?:(?:\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\))[^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\)|"[^\\\80-ÿ<br>
+--> FAILED!: \r"]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r"]*)*")[^()<>@,;:".\\\[\]\80-ÿ<br>
+--> FAILED!: -\1f]*)*<[ ]*(?:\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\))[^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\)[ ]*)*(?:@[ ]*(?:\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\))[^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br>
+--> FAILED!: \r\[\]]|\\[^\80-ÿ])*\])[ ]*(?:\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\))[^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\)[ ]*)*(?:.[ ]*(?:\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\))[^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br>
+--> FAILED!: \r\[\]]|\\[^\80-ÿ])*\])[ ]*(?:\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\))[^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\)[ ]*)*)*(?:,[ ]*(?:\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\))[^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\)[ ]*)*@[ ]*(?:\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\))[^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br>
+--> FAILED!: \r\[\]]|\\[^\80-ÿ])*\])[ ]*(?:\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\))[^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\)[ ]*)*(?:.[ ]*(?:\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\))[^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br>
+--> FAILED!: \r\[\]]|\\[^\80-ÿ])*\])[ ]*(?:\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\))[^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\)[ ]*)*)*)*:[ ]*(?:\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\))[^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\)[ ]*)*)?(?:[^( <>@,;:".\\\[\]<br>
+--> FAILED!: \r"]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r"]*)*")[ ]*(?:\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\))[^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\)[ ]*)*@[ ]*(?:\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\))[^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br>
+--> FAILED!: \r\[\]]|\\[^\80-ÿ])*\])[ ]*(?:\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\))[^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\)[ ]*)*(?:.[ ]*(?:\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\))[^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br>
+--> FAILED!: \r\[\]]|\\[^\80-ÿ])*\])[ ]*(?:\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\))[^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\)[ ]*)*)*>|(?:[^( <>@,;:".\\\[\]<br>
+--> FAILED!: \r"]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r"]*)*")[ ]*(?:\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\))[^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\)[ ]*)*@[ ]*(?:\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\))[^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br>
+--> FAILED!: \r\[\]]|\\[^\80-ÿ])*\])[ ]*(?:\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\))[^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\)[ ]*)*(?:.[ ]*(?:\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\))[^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\)[ ]*)*(?:[^( <>@,;:".\\\[\]<br>
+--> FAILED!: \r\[\]]|\\[^\80-ÿ])*\])[ ]*(?:\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:(?:\\[^\80-ÿ]|\([^\\\80-ÿ<br>
+--> FAILED!: \r()]*(?:\\[^\80-ÿ][^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\))[^\\\80-ÿ<br>
+--> FAILED!: \r()]*)*\)[ ]*)*)*)/g<br>
--> FAILED!: string = 'Jeffy<"That Tall Guy"@ora.com (this address is no longer acti\ve)>'<br>
--> FAILED!: ERROR !!! regexp FAILED to match anything !!!<br>
--> FAILED!: Expect: ["Jeffy<"That Tall Guy"@ora.com (this address is no longer active)>"]<br>
<tt>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
-Exception, line 1: SyntaxError: Parse error<br>
+Exception, line 1: <br>
</tt><br>
<a name='failure20'></a><dd><b>Testcase <a target='other_window' href='./ecma_3/Unicode/uc-002.js'>ecma_3/Unicode/uc-002.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=23613' target='other_window'>Bug Number 23613</a><br>
[ <a href='#failure19'>Previous Failure</a> | <a href='#failure21'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
--> JS1_2 Object.toString()<br>
-Exception, line 104: TypeError: Object /^\{(.*)\}$/ (result of expression ^\{(.*)\}$) does not allow calls.<br>
+Exception, line 104: <br>
</tt><br>
<a name='failure22'></a><dd><b>Testcase <a target='other_window' href='./js1_2/String/concat.js'>js1_2/String/concat.js</a> failed</b> <br>
[ <a href='#failure21'>Previous Failure</a> | <a href='#failure23'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
--> JS_1.2 The variable statment<br>
-Exception, line 81: TypeError: Object /abc/ (result of expression x) does not allow calls.<br>
+Exception, line 81: <br>
</tt><br>
<a name='failure28'></a><dd><b>Testcase <a target='other_window' href='./js1_2/function/tostring-1.js'>js1_2/function/tostring-1.js</a> failed</b> <br>
[ <a href='#failure27'>Previous Failure</a> | <a href='#failure29'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
Complete testcase output was:<br>
--> Executing script: compile.js<br>
--> As described in Netscape doc "Whats new in JavaScript 1.2" RegExp: compile<br>
-Exception, line 44: TypeError: Value undefined (result of expression regularExpression.compile) is not object.<br>
+Exception, line 44: <br>
</tt><br>
<a name='failure36'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/endLine.js'>js1_2/regexp/endLine.js</a> failed</b> <br>
[ <a href='#failure35'>Previous Failure</a> | <a href='#failure37'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
--> BUGNUMBER: http://bugzilla.mozilla.org/show_bug.cgi?id=6359<br>
-Exception, line 57: TypeError: Object /(a*)b\1+/ (result of expression (a*)b\1+) does not allow calls.<br>
+Exception, line 57: <br>
</tt><br>
<a name='failure38'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/regress-9141.js'>js1_2/regexp/regress-9141.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=http://bugzilla.mozilla.org/show_bug.cgi?id=9141' target='other_window'>Bug Number http://bugzilla.mozilla.org/show_bug.cgi?id=9141</a><br>
[ <a href='#failure37'>Previous Failure</a> | <a href='#failure39'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
--> BUGNUMBER: http://bugzilla.mozilla.org/show_bug.cgi?id=9141<br>
-Exception, line 74: TypeError: Object /(?:xx|x)*/ (result of expression (?:xx|x)*) does not allow calls.<br>
+Exception, line 74: <br>
</tt><br>
<a name='failure39'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/simple_form.js'>js1_2/regexp/simple_form.js</a> failed</b> <br>
[ <a href='#failure38'>Previous Failure</a> | <a href='#failure40'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
Complete testcase output was:<br>
--> Executing script: simple_form.js<br>
--> As described in Netscape doc "Whats new in JavaScript 1.2" RegExp: simple form<br>
-Exception, line 44: TypeError: Object /[0-9]{3}/ (result of expression [0-9]{3}) does not allow calls.<br>
+Exception, line 44: <br>
</tt><br>
<a name='failure40'></a><dd><b>Testcase <a target='other_window' href='./js1_2/regexp/special_characters.js'>js1_2/regexp/special_characters.js</a> failed</b> <br>
[ <a href='#failure39'>Previous Failure</a> | <a href='#failure41'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
--> script-001 NativeScript<br>
-Exception, line 134: ReferenceError: Can't find variable: Script<br>
+Exception, line 134: <br>
</tt><br>
<a name='failure46'></a><dd><b>Testcase <a target='other_window' href='./js1_3/regress/function-001-n.js'>js1_3/regress/function-001-n.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=10278' target='other_window'>Bug Number 10278</a><br>
[ <a href='#failure45'>Previous Failure</a> | <a href='#failure47'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
--> eval("function f(){}function g(){}") = undefined FAILED! expected: error<br>
OK.<br>
</tt><br>
-<a name='failure47'></a><dd><b>Testcase <a target='other_window' href='./js1_4/Regress/function-003.js'>js1_4/Regress/function-003.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=310514' target='other_window'>Bug Number 310514</a><br>
+<a name='failure47'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/catchguard-001.js'>js1_5/Exceptions/catchguard-001.js</a> failed</b> <br>
[ <a href='#failure46'>Previous Failure</a> | <a href='#failure48'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
-<tt><br>
-Failure messages were:<br>
---> StripSpaces(Array.prototype.concat.toString()).substring(0,17) = (InternalFunction FAILED! expected: functionconcat(){<br>
+<tt>Expected exit code 0, got 3<br>
+Testcase terminated with signal 0<br>
+Complete testcase output was:<br>
+Exception, line 42: <br>
</tt><br>
-<a name='failure48'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/catchguard-001.js'>js1_5/Exceptions/catchguard-001.js</a> failed</b> <br>
+<a name='failure48'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/catchguard-002.js'>js1_5/Exceptions/catchguard-002.js</a> failed</b> <br>
[ <a href='#failure47'>Previous Failure</a> | <a href='#failure49'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
-Exception, line 42: SyntaxError: Parse error<br>
+Exception, line 42: <br>
</tt><br>
-<a name='failure49'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/catchguard-002.js'>js1_5/Exceptions/catchguard-002.js</a> failed</b> <br>
+<a name='failure49'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/catchguard-003.js'>js1_5/Exceptions/catchguard-003.js</a> failed</b> <br>
[ <a href='#failure48'>Previous Failure</a> | <a href='#failure50'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
-Exception, line 42: SyntaxError: Parse error<br>
+Exception, line 42: <br>
</tt><br>
-<a name='failure50'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/catchguard-003.js'>js1_5/Exceptions/catchguard-003.js</a> failed</b> <br>
+<a name='failure50'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/errstack-001.js'>js1_5/Exceptions/errstack-001.js</a> failed</b> <br>
[ <a href='#failure49'>Previous Failure</a> | <a href='#failure51'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
-Exception, line 42: SyntaxError: Parse error<br>
+Exception, line 248: <br>
</tt><br>
-<a name='failure51'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/errstack-001.js'>js1_5/Exceptions/errstack-001.js</a> failed</b> <br>
+<a name='failure51'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/regress-50447.js'>js1_5/Exceptions/regress-50447.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=50447' target='other_window'>Bug Number 50447</a><br>
[ <a href='#failure50'>Previous Failure</a> | <a href='#failure52'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
-Exception, line 248: TypeError: Undefined value<br>
+--> BUGNUMBER: 50447<br>
+--> STATUS: Test (non-ECMA) Error object properties fileName, lineNumber<br>
+Exception, line 66: <br>
</tt><br>
-<a name='failure52'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Exceptions/regress-50447.js'>js1_5/Exceptions/regress-50447.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=50447' target='other_window'>Bug Number 50447</a><br>
+<a name='failure52'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-001.js'>js1_5/GetSet/getset-001.js</a> failed</b> <br>
[ <a href='#failure51'>Previous Failure</a> | <a href='#failure53'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
---> BUGNUMBER: 50447<br>
---> STATUS: Test (non-ECMA) Error object properties fileName, lineNumber<br>
-Exception, line 66: TypeError: Undefined value<br>
+Exception, line 33: <br>
</tt><br>
-<a name='failure53'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-001.js'>js1_5/GetSet/getset-001.js</a> failed</b> <br>
+<a name='failure53'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-002.js'>js1_5/GetSet/getset-002.js</a> failed</b> <br>
[ <a href='#failure52'>Previous Failure</a> | <a href='#failure54'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
-Exception, line 33: SyntaxError: Parse error<br>
+Exception, line 29: <br>
</tt><br>
-<a name='failure54'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-002.js'>js1_5/GetSet/getset-002.js</a> failed</b> <br>
+<a name='failure54'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-003.js'>js1_5/GetSet/getset-003.js</a> failed</b> <br>
[ <a href='#failure53'>Previous Failure</a> | <a href='#failure55'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
-Exception, line 29: SyntaxError: Parse error<br>
+Exception, line 48: <br>
</tt><br>
-<a name='failure55'></a><dd><b>Testcase <a target='other_window' href='./js1_5/GetSet/getset-003.js'>js1_5/GetSet/getset-003.js</a> failed</b> <br>
+<a name='failure55'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-90596-001.js'>js1_5/Object/regress-90596-001.js</a> failed</b> <br>
[ <a href='#failure54'>Previous Failure</a> | <a href='#failure56'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
-Exception, line 48: SyntaxError: Parse error<br>
+Exception, line 49: <br>
</tt><br>
-<a name='failure56'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-90596-001.js'>js1_5/Object/regress-90596-001.js</a> failed</b> <br>
+<a name='failure56'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-90596-002.js'>js1_5/Object/regress-90596-002.js</a> failed</b> <br>
[ <a href='#failure55'>Previous Failure</a> | <a href='#failure57'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
-Exception, line 49: TypeError: Value undefined (result of expression obj.toSource) is not object.<br>
+Exception, line 49: <br>
</tt><br>
-<a name='failure57'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-90596-002.js'>js1_5/Object/regress-90596-002.js</a> failed</b> <br>
+<a name='failure57'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-96284-001.js'>js1_5/Object/regress-96284-001.js</a> failed</b> <br>
[ <a href='#failure56'>Previous Failure</a> | <a href='#failure58'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
-Exception, line 49: ReferenceError: Can't find variable: uneval<br>
+Exception, line 50: <br>
</tt><br>
-<a name='failure58'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-96284-001.js'>js1_5/Object/regress-96284-001.js</a> failed</b> <br>
+<a name='failure58'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-96284-002.js'>js1_5/Object/regress-96284-002.js</a> failed</b> <br>
[ <a href='#failure57'>Previous Failure</a> | <a href='#failure59'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
-Exception, line 50: TypeError: Value undefined (result of expression obj1.toSource) is not object.<br>
+Exception, line 50: <br>
</tt><br>
-<a name='failure59'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Object/regress-96284-002.js'>js1_5/Object/regress-96284-002.js</a> failed</b> <br>
+<a name='failure59'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-44009.js'>js1_5/Regress/regress-44009.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=44009' target='other_window'>Bug Number 44009</a><br>
[ <a href='#failure58'>Previous Failure</a> | <a href='#failure60'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
-Exception, line 50: ReferenceError: Can't find variable: uneval<br>
-</tt><br>
-<a name='failure60'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-44009.js'>js1_5/Regress/regress-44009.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=44009' target='other_window'>Bug Number 44009</a><br>
- [ <a href='#failure59'>Previous Failure</a> | <a href='#failure61'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
-<tt>Expected exit code 0, got 3<br>
-Testcase terminated with signal 0<br>
-Complete testcase output was:<br>
--> BUGNUMBER: 44009<br>
--> STATUS: Testing that we don't crash on obj.toSource()<br>
-Exception, line 61: TypeError: Value undefined (result of expression obj.toSource) is not object.<br>
+Exception, line 61: <br>
</tt><br>
-<a name='failure61'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-68498-003.js'>js1_5/Regress/regress-68498-003.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=68498' target='other_window'>Bug Number 68498</a><br>
- [ <a href='#failure60'>Previous Failure</a> | <a href='#failure62'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure60'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-68498-003.js'>js1_5/Regress/regress-68498-003.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=68498' target='other_window'>Bug Number 68498</a><br>
+ [ <a href='#failure59'>Previous Failure</a> | <a href='#failure61'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>--> STATUS: Testing calling obj.eval(str)<br>
Failure messages were:<br>
--> FAILED!: [reported from test()] Testing calling obj.eval(str); currently at expect[1] within test -<br>
--> FAILED!: [reported from test()] Expected value '43', Actual value 'false'<br>
--> FAILED!: [reported from test()] <br>
</tt><br>
-<a name='failure62'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-103602.js'>js1_5/Regress/regress-103602.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=103602' target='other_window'>Bug Number 103602</a><br>
- [ <a href='#failure61'>Previous Failure</a> | <a href='#failure63'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure61'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-103602.js'>js1_5/Regress/regress-103602.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=103602' target='other_window'>Bug Number 103602</a><br>
+ [ <a href='#failure60'>Previous Failure</a> | <a href='#failure62'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>--> STATUS: Reassignment to a const is NOT an error per ECMA<br>
Failure messages were:<br>
--> FAILED!: [reported from test()] Section 1 of test -<br>
--> FAILED!: [reported from test()] Expected value '1', Actual value '2'<br>
--> FAILED!: [reported from test()] <br>
</tt><br>
-<a name='failure63'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-104077.js'>js1_5/Regress/regress-104077.js</a> failed</b> <br>
- [ <a href='#failure62'>Previous Failure</a> | <a href='#failure64'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure62'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-104077.js'>js1_5/Regress/regress-104077.js</a> failed</b> <br>
+ [ <a href='#failure61'>Previous Failure</a> | <a href='#failure63'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
-Exception, line 351: SyntaxError: Parse error<br>
+Exception, line 351: <br>
</tt><br>
-<a name='failure64'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-127557.js'>js1_5/Regress/regress-127557.js</a> failed</b> <br>
- [ <a href='#failure63'>Previous Failure</a> | <a href='#failure65'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure63'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-127557.js'>js1_5/Regress/regress-127557.js</a> failed</b> <br>
+ [ <a href='#failure62'>Previous Failure</a> | <a href='#failure64'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
-Exception, line 76: ReferenceError: Can't find variable: clone<br>
+Exception, line 76: <br>
</tt><br>
-<a name='failure65'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-172699.js'>js1_5/Regress/regress-172699.js</a> failed</b> <br>
- [ <a href='#failure64'>Previous Failure</a> | <a href='#failure66'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure64'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-172699.js'>js1_5/Regress/regress-172699.js</a> failed</b> <br>
+ [ <a href='#failure63'>Previous Failure</a> | <a href='#failure65'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
-Exception, line 62: URIError: URI error<br>
+Exception, line 62: <br>
</tt><br>
-<a name='failure66'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-179524.js'>js1_5/Regress/regress-179524.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=179524' target='other_window'>Bug Number 179524</a><br>
- [ <a href='#failure65'>Previous Failure</a> | <a href='#failure67'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure65'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-179524.js'>js1_5/Regress/regress-179524.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=179524' target='other_window'>Bug Number 179524</a><br>
+ [ <a href='#failure64'>Previous Failure</a> | <a href='#failure66'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>--> STATUS: Don't crash on extraneous arguments to str.match(), etc.<br>
Failure messages were:<br>
--> FAILED!: [reported from test()] Section 14 of test -<br>
--> FAILED!: [reported from test()] Expected value 'SHOULD HAVE FALLEN INTO CATCH-BLOCK!', Actual value 'ABC Zbc'<br>
--> FAILED!: [reported from test()] <br>
</tt><br>
-<a name='failure67'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-185165.js'>js1_5/Regress/regress-185165.js</a> failed</b> <br>
- [ <a href='#failure66'>Previous Failure</a> | <a href='#failure68'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure66'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Regress/regress-185165.js'>js1_5/Regress/regress-185165.js</a> failed</b> <br>
+ [ <a href='#failure65'>Previous Failure</a> | <a href='#failure67'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
yylex: ERROR.<br>
-Exception, line 3: SyntaxError: Parse error<br>
+Exception, line 3: <br>
</tt><br>
-<a name='failure68'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Scope/regress-185485.js'>js1_5/Scope/regress-185485.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=185485' target='other_window'>Bug Number 185485</a><br>
- [ <a href='#failure67'>Previous Failure</a> | <a href='#failure69'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure67'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Scope/regress-185485.js'>js1_5/Scope/regress-185485.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=185485' target='other_window'>Bug Number 185485</a><br>
+ [ <a href='#failure66'>Previous Failure</a> | <a href='#failure68'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>--> STATUS: Testing |with (x) {function f() {}}| when |x.f| already exists<br>
Failure messages were:<br>
--> FAILED!: [reported from test()] Section 2 of test -<br>
--> FAILED!: [reported from test()] }', Actual value '0'<br>
--> FAILED!: [reported from test()] <br>
</tt><br>
-<a name='failure69'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Scope/regress-220584.js'>js1_5/Scope/regress-220584.js</a> failed</b> <br>
- [ <a href='#failure68'>Previous Failure</a> | <a href='#failure70'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure68'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Scope/regress-220584.js'>js1_5/Scope/regress-220584.js</a> failed</b> <br>
+ [ <a href='#failure67'>Previous Failure</a> | <a href='#failure69'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
-Exception, line 57: ReferenceError: Can't find variable: Script<br>
+Exception, line 57: <br>
</tt><br>
-<a name='failure70'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Scope/scope-001.js'>js1_5/Scope/scope-001.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=53268' target='other_window'>Bug Number 53268</a><br>
- [ <a href='#failure69'>Previous Failure</a> | <a href='#failure71'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure69'></a><dd><b>Testcase <a target='other_window' href='./js1_5/Scope/scope-001.js'>js1_5/Scope/scope-001.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=53268' target='other_window'>Bug Number 53268</a><br>
+ [ <a href='#failure68'>Previous Failure</a> | <a href='#failure70'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>--> STATUS: Testing scope after changing obj.__proto__<br>
Failure messages were:<br>
--> FAILED!: [reported from test()] Step 1: setting obj.__proto__ = global object<br>
--> FAILED!: [reported from test()] Expected value 'undefined', Actual value '1'<br>
--> FAILED!: [reported from test()] <br>
</tt><br>
-<a name='failure71'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Array/regress-304828.js'>js1_6/Array/regress-304828.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=304828' target='other_window'>Bug Number 304828</a><br>
- [ <a href='#failure70'>Previous Failure</a> | <a href='#failure72'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure70'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Array/regress-304828.js'>js1_6/Array/regress-304828.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=304828' target='other_window'>Bug Number 304828</a><br>
+ [ <a href='#failure69'>Previous Failure</a> | <a href='#failure71'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>--> STATUS: Array Generic Methods<br>
Failure messages were:<br>
--> FAILED!: Array Generic Methods: lastIndexOf<br>
--> FAILED!: Expected value '4', Actual value 'TypeError: Undefined value'<br>
--> FAILED!: <br>
</tt><br>
-<a name='failure72'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Array/regress-310425-01.js'>js1_6/Array/regress-310425-01.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=310425' target='other_window'>Bug Number 310425</a><br>
- [ <a href='#failure71'>Previous Failure</a> | <a href='#failure73'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure71'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Array/regress-310425-01.js'>js1_6/Array/regress-310425-01.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=310425' target='other_window'>Bug Number 310425</a><br>
+ [ <a href='#failure70'>Previous Failure</a> | <a href='#failure72'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
--> BUGNUMBER: 310425<br>
--> STATUS: Array.indexOf/lastIndexOf edge cases<br>
-Exception, line 48: TypeError: Value undefined (result of expression [].lastIndexOf) is not object.<br>
+Exception, line 48: <br>
</tt><br>
-<a name='failure73'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Regress/regress-301574.js'>js1_6/Regress/regress-301574.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=301574' target='other_window'>Bug Number 301574</a><br>
- [ <a href='#failure72'>Previous Failure</a> | <a href='#failure74'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure72'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Regress/regress-301574.js'>js1_6/Regress/regress-301574.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=301574' target='other_window'>Bug Number 301574</a><br>
+ [ <a href='#failure71'>Previous Failure</a> | <a href='#failure73'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>--> STATUS: E4X should be enabled even when e4x=1 not specified<br>
Failure messages were:<br>
--> FAILED!: E4X should be enabled even when e4x=1 not specified: XML()<br>
--> FAILED!: Expected value 'No error', Actual value 'error: ReferenceError: Can't find variable: XML'<br>
--> FAILED!: <br>
</tt><br>
-<a name='failure74'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Regress/regress-309242.js'>js1_6/Regress/regress-309242.js</a> failed</b> <br>
- [ <a href='#failure73'>Previous Failure</a> | <a href='#failure75'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure73'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Regress/regress-309242.js'>js1_6/Regress/regress-309242.js</a> failed</b> <br>
+ [ <a href='#failure72'>Previous Failure</a> | <a href='#failure74'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
-Exception, line 71: SyntaxError: Parse error<br>
+Exception, line 71: <br>
</tt><br>
-<a name='failure75'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Regress/regress-314887.js'>js1_6/Regress/regress-314887.js</a> failed</b> <br>
- [ <a href='#failure74'>Previous Failure</a> | <a href='#failure76'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure74'></a><dd><b>Testcase <a target='other_window' href='./js1_6/Regress/regress-314887.js'>js1_6/Regress/regress-314887.js</a> failed</b> <br>
+ [ <a href='#failure73'>Previous Failure</a> | <a href='#failure75'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
-Exception, line 47: SyntaxError: Parse error<br>
+Exception, line 47: <br>
</tt><br>
-<a name='failure76'></a><dd><b>Testcase <a target='other_window' href='./js1_6/String/regress-306591.js'>js1_6/String/regress-306591.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=306591' target='other_window'>Bug Number 306591</a><br>
- [ <a href='#failure75'>Previous Failure</a> | <a href='#failure77'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
+<a name='failure75'></a><dd><b>Testcase <a target='other_window' href='./js1_6/String/regress-306591.js'>js1_6/String/regress-306591.js</a> failed</b> <a href='http://bugzilla.mozilla.org/show_bug.cgi?id=306591' target='other_window'>Bug Number 306591</a><br>
+ [ <a href='#failure74'>Previous Failure</a> | <a href='#failure76'>Next Failure</a> | <a href='#tippy_top'>Top of Page</a> ]<br>
<tt>Expected exit code 0, got 3<br>
Testcase terminated with signal 0<br>
Complete testcase output was:<br>
--> BUGNUMBER: 306591<br>
--> STATUS: String static methods<br>
--> STATUS: See https://bugzilla.mozilla.org/show_bug.cgi?id=304828<br>
-Exception, line 49: TypeError: Value undefined (result of expression String.split) is not object.<br>
+Exception, line 49: <br>
</tt><br>
</dl>
[ <a href='#tippy_top'>Top of Page</a> | <a href='#fail_detail'>Top of Failures</a> ]<br>
<pre>
<a name='retest_list'></a>
<h2>Retest List</h2><br>
-# Retest List, kjs, generated Wed Jan 4 13:27:34 2006.
+# Retest List, kjs, generated Mon Feb 20 05:11:05 2006.
# Original test base was: All tests.
-# 1127 of 1135 test(s) were completed, 76 failures reported.
+# 1127 of 1135 test(s) were completed, 75 failures reported.
ecma/GlobalObject/15.1.2.2-2.js
ecma/LexicalConventions/7.7.3-1.js
ecma/TypeConversion/9.3.1-3.js
js1_3/Script/function-001-n.js
js1_3/Script/script-001.js
js1_3/regress/function-001-n.js
-js1_4/Regress/function-003.js
js1_5/Exceptions/catchguard-001.js
js1_5/Exceptions/catchguard-002.js
js1_5/Exceptions/catchguard-003.js