jscript: Throw correct error in get_length.
This commit is contained in:
parent
8717c388f8
commit
bb4050d792
|
@ -69,10 +69,8 @@ static HRESULT get_length(script_ctx_t *ctx, vdisp_t *vdisp, jsexcept_t *ei, Dis
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!is_jsdisp(vdisp)) {
|
if(!is_jsdisp(vdisp))
|
||||||
FIXME("Not JScript object\n");
|
return throw_type_error(ctx, ei, IDS_JSCRIPT_EXPECTED, NULL);
|
||||||
return E_FAIL;
|
|
||||||
}
|
|
||||||
|
|
||||||
hres = jsdisp_propget_name(vdisp->u.jsdisp, lengthW, &var, ei, NULL/*FIXME*/);
|
hres = jsdisp_propget_name(vdisp->u.jsdisp, lengthW, &var, ei, NULL/*FIXME*/);
|
||||||
if(FAILED(hres))
|
if(FAILED(hres))
|
||||||
|
|
|
@ -38,6 +38,7 @@ STRINGTABLE DISCARDABLE
|
||||||
IDS_ILLEGAL_ASSIGN "Illegal assignment"
|
IDS_ILLEGAL_ASSIGN "Illegal assignment"
|
||||||
IDS_UNDEFINED "'|' is undefined"
|
IDS_UNDEFINED "'|' is undefined"
|
||||||
IDS_NOT_BOOL "Boolean object expected"
|
IDS_NOT_BOOL "Boolean 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"
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,5 +34,6 @@
|
||||||
#define IDS_ILLEGAL_ASSIGN 0x1390
|
#define IDS_ILLEGAL_ASSIGN 0x1390
|
||||||
#define IDS_UNDEFINED 0x1391
|
#define IDS_UNDEFINED 0x1391
|
||||||
#define IDS_NOT_BOOL 0x1392
|
#define IDS_NOT_BOOL 0x1392
|
||||||
|
#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
|
||||||
|
|
|
@ -1621,6 +1621,16 @@ 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 testArrayHostThis(func) {
|
||||||
|
exception_test(function() { Array.prototype[func].call(testObj); }, "TypeError", -2146823274);
|
||||||
|
}
|
||||||
|
|
||||||
|
testArrayHostThis("push");
|
||||||
|
testArrayHostThis("shift");
|
||||||
|
testArrayHostThis("slice");
|
||||||
|
testArrayHostThis("splice");
|
||||||
|
testArrayHostThis("unshift");
|
||||||
|
|
||||||
function testObjectInherit(obj, constr, ts, tls, vo) {
|
function testObjectInherit(obj, constr, ts, tls, vo) {
|
||||||
ok(obj instanceof Object, "obj is not instance of Object");
|
ok(obj instanceof Object, "obj is not instance of Object");
|
||||||
ok(obj instanceof constr, "obj is not instance of its constructor");
|
ok(obj instanceof constr, "obj is not instance of its constructor");
|
||||||
|
|
Loading…
Reference in New Issue