From 214c814ed35d473733acc3062ceaaed788534e53 Mon Sep 17 00:00:00 2001 From: Jan de Mooij Date: Wed, 24 Nov 2010 19:18:59 +0100 Subject: [PATCH] Bug 614603 - RegExp.length and Error.length don't have their ES5-specified values. r=jwalden --HG-- extra : rebase_source : 145c497576426dd89d423d4ed8431789fc490bde --- js/src/jsexn.cpp | 2 +- js/src/jsregexp.cpp | 2 +- js/src/tests/ecma_5/RegExp/15.10.5-01.js | 21 +++++++++++++++++++ js/src/tests/ecma_5/RegExp/jstests.list | 1 + .../tests/js1_5/Exceptions/regress-123002.js | 7 +------ 5 files changed, 25 insertions(+), 8 deletions(-) create mode 100644 js/src/tests/ecma_5/RegExp/15.10.5-01.js diff --git a/js/src/jsexn.cpp b/js/src/jsexn.cpp index 77d84257a53d..893d2ab21c6f 100644 --- a/js/src/jsexn.cpp +++ b/js/src/jsexn.cpp @@ -1036,7 +1036,7 @@ js_InitExceptionClasses(JSContext *cx, JSObject *obj) JSProtoKey protoKey = GetExceptionProtoKey(i); jsid id = ATOM_TO_JSID(cx->runtime->atomState.classAtoms[protoKey]); - JSFunction *fun = js_DefineFunction(cx, obj, id, Exception, 3, JSFUN_CONSTRUCTOR); + JSFunction *fun = js_DefineFunction(cx, obj, id, Exception, 1, JSFUN_CONSTRUCTOR); if (!fun) return NULL; roots[2] = OBJECT_TO_JSVAL(FUN_OBJECT(fun)); diff --git a/js/src/jsregexp.cpp b/js/src/jsregexp.cpp index 0774a0cae6cb..cd6e86d2b52c 100644 --- a/js/src/jsregexp.cpp +++ b/js/src/jsregexp.cpp @@ -885,7 +885,7 @@ InitRegExpClassCompile(JSContext *cx, JSObject *obj) JSObject * js_InitRegExpClass(JSContext *cx, JSObject *obj) { - JSObject *proto = js_InitClass(cx, obj, NULL, &js_RegExpClass, regexp_construct, 1, + JSObject *proto = js_InitClass(cx, obj, NULL, &js_RegExpClass, regexp_construct, 2, NULL, regexp_methods, regexp_static_props, NULL); if (!proto) return NULL; diff --git a/js/src/tests/ecma_5/RegExp/15.10.5-01.js b/js/src/tests/ecma_5/RegExp/15.10.5-01.js new file mode 100644 index 000000000000..2f8429218ab6 --- /dev/null +++ b/js/src/tests/ecma_5/RegExp/15.10.5-01.js @@ -0,0 +1,21 @@ +/* + * Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/licenses/publicdomain/ + */ + +var BUGNUMBER = 614603; +var summary = "RegExp.length"; + +print(BUGNUMBER + ": " + summary); + +/************** + * BEGIN TEST * + **************/ + +assertEq(RegExp.length, 2); +assertEq(/a/.constructor.length, 2); + +if (typeof reportCompare === "function") + reportCompare(true, true); + +print("All tests passed!"); diff --git a/js/src/tests/ecma_5/RegExp/jstests.list b/js/src/tests/ecma_5/RegExp/jstests.list index ed3044da2c8a..df91a9619b49 100644 --- a/js/src/tests/ecma_5/RegExp/jstests.list +++ b/js/src/tests/ecma_5/RegExp/jstests.list @@ -1,2 +1,3 @@ url-prefix ../../jsreftest.html?test=ecma_5/RegExp/ +script 15.10.5-01.js script 15.10.7.5-01.js diff --git a/js/src/tests/js1_5/Exceptions/regress-123002.js b/js/src/tests/js1_5/Exceptions/regress-123002.js index 2a7ad976dc63..bfd023a39e31 100644 --- a/js/src/tests/js1_5/Exceptions/regress-123002.js +++ b/js/src/tests/js1_5/Exceptions/regress-123002.js @@ -58,8 +58,6 @@ * To do this, just change the two LENGTH constants below - */ //----------------------------------------------------------------------------- -var LENGTH_RHINO = 1; -var LENGTH_SPIDERMONKEY = 3; var UBound = 0; var BUGNUMBER = 123002; var summary = 'Testing Error.length'; @@ -72,10 +70,7 @@ var expect= ''; var expectedvalues = []; -/* - * Are we in Rhino or SpiderMonkey? - */ -var LENGTH_EXPECTED = inRhino()? LENGTH_RHINO : LENGTH_SPIDERMONKEY; +var LENGTH_EXPECTED = 1; /* * The various NativeError objects; see ECMA-262 Edition 3, Section 15.11.6