Module: wine Branch: master Commit: 536573934afb2722fc5867c39233a283f378c227 URL: http://source.winehq.org/git/wine.git/?a=commit;h=536573934afb2722fc5867c392...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Sep 19 00:42:33 2008 +0200
jscript: Added void expression implementation.
---
dlls/jscript/engine.c | 27 ++++++++++++++++++++++++--- dlls/jscript/tests/lang.js | 2 ++ 2 files changed, 26 insertions(+), 3 deletions(-)
diff --git a/dlls/jscript/engine.c b/dlls/jscript/engine.c index 80bc9d9..a526431 100644 --- a/dlls/jscript/engine.c +++ b/dlls/jscript/engine.c @@ -1939,12 +1939,33 @@ HRESULT delete_expression_eval(exec_ctx_t *ctx, expression_t *expr, DWORD flags, return E_NOTIMPL; }
-HRESULT void_expression_eval(exec_ctx_t *ctx, expression_t *expr, DWORD flags, jsexcept_t *ei, exprval_t *ret) +/* ECMA-262 3rd Edition 11.4.2 */ +HRESULT void_expression_eval(exec_ctx_t *ctx, expression_t *_expr, DWORD flags, jsexcept_t *ei, exprval_t *ret) { - FIXME("\n"); - return E_NOTIMPL; + unary_expression_t *expr = (unary_expression_t*)_expr; + exprval_t exprval; + VARIANT tmp; + HRESULT hres; + + TRACE("\n"); + + hres = expr_eval(ctx, expr->expression, 0, ei, &exprval); + if(FAILED(hres)) + return hres; + + hres = exprval_to_value(ctx->parser->script, &exprval, ei, &tmp); + exprval_release(&exprval); + if(FAILED(hres)) + return hres; + + VariantClear(&tmp); + + ret->type = EXPRVAL_VARIANT; + V_VT(&ret->u.var) = VT_EMPTY; + return S_OK; }
+/* ECMA-262 3rd Edition 11.4.3 */ HRESULT typeof_expression_eval(exec_ctx_t *ctx, expression_t *_expr, DWORD flags, jsexcept_t *ei, exprval_t *ret) { unary_expression_t *expr = (unary_expression_t*)_expr; diff --git a/dlls/jscript/tests/lang.js b/dlls/jscript/tests/lang.js index 3b0d130..0ea4ef5 100644 --- a/dlls/jscript/tests/lang.js +++ b/dlls/jscript/tests/lang.js @@ -615,4 +615,6 @@ for(var fi=0; fi < 4; fi++) ok(fi < 4, "fi = " + fi); ok(fi === 4, "fi !== 4");
+ok((void 1) === undefined, "(void 1) !== undefined"); + reportSuccess();