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");
|
TRACE("\n");
|
||||||
|
|
||||||
array = array_this(jsthis);
|
array = array_this(jsthis);
|
||||||
if(!array) {
|
if(!array)
|
||||||
FIXME("not Array object\n");
|
return throw_type_error(ctx, ei, IDS_ARRAY_EXPECTED, NULL);
|
||||||
return E_FAIL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return array_join(ctx, &array->dispex, array->length, default_separatorW, retv, ei, sp);
|
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_JSCRIPT_EXPECTED "JScript object expected"
|
||||||
IDS_REGEXP_SYNTAX_ERROR "Syntax error in regular expression"
|
IDS_REGEXP_SYNTAX_ERROR "Syntax error in regular expression"
|
||||||
IDS_INVALID_LENGTH "Array length must be a finite positive integer"
|
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_JSCRIPT_EXPECTED 0x1396
|
||||||
#define IDS_REGEXP_SYNTAX_ERROR 0x1399
|
#define IDS_REGEXP_SYNTAX_ERROR 0x1399
|
||||||
#define IDS_INVALID_LENGTH 0x13A5
|
#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() {eval("nonexistingfunc()")}, "TypeError", -2146823281);
|
||||||
exception_test(function() {RegExp(/a/, "g");}, "RegExpError", -2146823271);
|
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) {
|
function testArrayHostThis(func) {
|
||||||
exception_test(function() { Array.prototype[func].call(testObj); }, "TypeError", -2146823274);
|
exception_test(function() { Array.prototype[func].call(testObj); }, "TypeError", -2146823274);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue