mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-02 09:43:38 +00:00
jscript: Pass undefined 'this' instead of null in ES5 mode.
Based on the spec (ECMA-262 5.1 Edition 11.2.3.7), whereas the ES3 spec says it gets replaced with null. Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com> Signed-off-by: Jacek Caban <jacek@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
5007c4d72f
commit
2e9d086b04
|
@ -250,13 +250,18 @@ void detach_arguments_object(jsdisp_t *args_disp)
|
|||
HRESULT Function_invoke(jsdisp_t *func_this, IDispatch *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
|
||||
{
|
||||
FunctionInstance *function;
|
||||
jsval_t vthis;
|
||||
|
||||
TRACE("func %p this %p\n", func_this, jsthis);
|
||||
|
||||
assert(is_class(func_this, JSCLASS_FUNCTION));
|
||||
function = function_from_jsdisp(func_this);
|
||||
|
||||
return function->vtbl->call(function->dispex.ctx, function, jsthis ? jsval_disp(jsthis) : jsval_null(), flags, argc, argv, r);
|
||||
if(jsthis)
|
||||
vthis = jsval_disp(jsthis);
|
||||
else
|
||||
vthis = function->dispex.ctx->version < SCRIPTLANGUAGEVERSION_ES5 ? jsval_null() : jsval_undefined();
|
||||
return function->vtbl->call(function->dispex.ctx, function, vthis, flags, argc, argv, r);
|
||||
}
|
||||
|
||||
static HRESULT Function_get_length(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r)
|
||||
|
|
|
@ -1800,13 +1800,15 @@ sync_test("substituted this", function() {
|
|||
}
|
||||
|
||||
var r = ((function() { var f = Object.prototype.toString; return (function() { return f(); }); })())();
|
||||
todo_wine.
|
||||
ok(r === "[object Undefined]", "detached scope Object.toString returned " + r);
|
||||
|
||||
var r = (function() { this.f = Object.prototype.toString; return this.f(); })();
|
||||
todo_wine.
|
||||
ok(r === "[object Window]", "Object.toString returned " + r);
|
||||
|
||||
var r = (function() { var f = Object.prototype.toString; return f(); })();
|
||||
ok(r === "[object Undefined]", "Object.toString returned " + r);
|
||||
|
||||
var r = ((function() { return (function() { return this; }); })())();
|
||||
ok(r === window, "detached scope this = " + r);
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue