From 9c248189f7ac0770adca62df351e3e80c3a2de27 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Tue, 30 Sep 2008 17:48:45 +0200 Subject: [PATCH] jscript: Added delete expression for EXPRVAL_IDREF implementation. --- dlls/jscript/engine.c | 11 +++++++++++ dlls/jscript/tests/lang.js | 7 +++++++ 2 files changed, 18 insertions(+) diff --git a/dlls/jscript/engine.c b/dlls/jscript/engine.c index 87de0ce4c02..212ad104474 100644 --- a/dlls/jscript/engine.c +++ b/dlls/jscript/engine.c @@ -2069,6 +2069,17 @@ HRESULT delete_expression_eval(exec_ctx_t *ctx, expression_t *_expr, DWORD flags return hres; switch(exprval.type) { + case EXPRVAL_IDREF: { + IDispatchEx *dispex; + + hres = IDispatch_QueryInterface(exprval.u.nameref.disp, &IID_IDispatchEx, (void**)&dispex); + if(SUCCEEDED(hres)) { + hres = IDispatchEx_DeleteMemberByDispID(dispex, exprval.u.idref.id); + b = VARIANT_TRUE; + IDispatchEx_Release(dispex); + } + break; + } case EXPRVAL_NAMEREF: { IDispatchEx *dispex; diff --git a/dlls/jscript/tests/lang.js b/dlls/jscript/tests/lang.js index 148dfede143..f7ae2be7dce 100644 --- a/dlls/jscript/tests/lang.js +++ b/dlls/jscript/tests/lang.js @@ -741,4 +741,11 @@ function varTestFunc(varTest3) { var varTest4; } +deleteTest = 1; +delete deleteTest; +try { + tmp = deleteTest; + ok(false, "deleteTest not throwed exception?"); +}catch(ex) {} + reportSuccess();