mirror of
https://github.com/reactos/wine.git
synced 2025-01-22 11:54:47 +00:00
jscript: Throw type error fot Array.toString with wrong 'this' call.
This commit is contained in:
parent
a8c7e97d0a
commit
c168918d75
@ -936,10 +936,8 @@ static HRESULT Array_toString(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, DI
|
||||
TRACE("\n");
|
||||
|
||||
array = array_this(jsthis);
|
||||
if(!array) {
|
||||
FIXME("not Array object\n");
|
||||
return E_FAIL;
|
||||
}
|
||||
if(!array)
|
||||
return throw_type_error(ctx, ei, IDS_ARRAY_EXPECTED, NULL);
|
||||
|
||||
return array_join(ctx, &array->dispex, array->length, default_separatorW, retv, ei, sp);
|
||||
}
|
||||
|
@ -41,4 +41,5 @@ STRINGTABLE DISCARDABLE
|
||||
IDS_JSCRIPT_EXPECTED "JScript object expected"
|
||||
IDS_REGEXP_SYNTAX_ERROR "Syntax error in regular expression"
|
||||
IDS_INVALID_LENGTH "Array length must be a finite positive integer"
|
||||
IDS_ARRAY_EXPECTED "Array object expected"
|
||||
}
|
||||
|
@ -37,3 +37,4 @@
|
||||
#define IDS_JSCRIPT_EXPECTED 0x1396
|
||||
#define IDS_REGEXP_SYNTAX_ERROR 0x1399
|
||||
#define IDS_INVALID_LENGTH 0x13A5
|
||||
#define IDS_ARRAY_EXPECTED 0x13A7
|
||||
|
@ -1621,6 +1621,69 @@ exception_test(function() {eval("'unterminated")}, "SyntaxError", -2146827273);
|
||||
exception_test(function() {eval("nonexistingfunc()")}, "TypeError", -2146823281);
|
||||
exception_test(function() {RegExp(/a/, "g");}, "RegExpError", -2146823271);
|
||||
|
||||
function testThisExcept(func, number) {
|
||||
exception_test(function() {func.call(new Object())}, "TypeError", number);
|
||||
}
|
||||
|
||||
function testBoolThis(func) {
|
||||
testThisExcept(Boolean.prototype[func], -2146823278);
|
||||
}
|
||||
|
||||
testBoolThis("toString");
|
||||
testBoolThis("valueOf");
|
||||
|
||||
function testDateThis(func) {
|
||||
testThisExcept(Date.prototype[func], -2146823282);
|
||||
}
|
||||
|
||||
testDateThis("getDate");
|
||||
testDateThis("getDay");
|
||||
testDateThis("getFullYear");
|
||||
testDateThis("getHours");
|
||||
testDateThis("getMilliseconds");
|
||||
testDateThis("getMinutes");
|
||||
testDateThis("getMonth");
|
||||
testDateThis("getSeconds");
|
||||
testDateThis("getTime");
|
||||
testDateThis("getTimezoneOffset");
|
||||
testDateThis("getUTCDate");
|
||||
testDateThis("getUTCDay");
|
||||
testDateThis("getUTCFullYear");
|
||||
testDateThis("getUTCHours");
|
||||
testDateThis("getUTCMilliseconds");
|
||||
testDateThis("getUTCMinutes");
|
||||
testDateThis("getUTCMonth");
|
||||
testDateThis("getUTCSeconds");
|
||||
testDateThis("setDate");
|
||||
testDateThis("setFullYear");
|
||||
testDateThis("setHours");
|
||||
testDateThis("setMilliseconds");
|
||||
testDateThis("setMinutes");
|
||||
testDateThis("setMonth");
|
||||
testDateThis("setSeconds");
|
||||
testDateThis("setTime");
|
||||
testDateThis("setUTCDate");
|
||||
testDateThis("setUTCFullYear");
|
||||
testDateThis("setUTCHours");
|
||||
testDateThis("setUTCMilliseconds");
|
||||
testDateThis("setUTCMinutes");
|
||||
testDateThis("setUTCMonth");
|
||||
testDateThis("setUTCSeconds");
|
||||
testDateThis("toDateString");
|
||||
testDateThis("toLocaleDateString");
|
||||
testDateThis("toLocaleString");
|
||||
testDateThis("toLocaleTimeString");
|
||||
testDateThis("toString");
|
||||
testDateThis("toTimeString");
|
||||
testDateThis("toUTCString");
|
||||
testDateThis("valueOf");
|
||||
|
||||
function testArrayThis(func) {
|
||||
testThisExcept(Array.prototype[func], -2146823257);
|
||||
}
|
||||
|
||||
testArrayThis("toString");
|
||||
|
||||
function testArrayHostThis(func) {
|
||||
exception_test(function() { Array.prototype[func].call(testObj); }, "TypeError", -2146823274);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user