Jacek Caban : jscript: Added with statement implementation.
Michael Stefaniuc
mstefani at redhat.com
Tue Sep 23 04:05:23 CDT 2008
Hello Jacek,
this patch introduces a gcc warning:
dlls/jscript/engine.c:954: warning: empty body in an if-statement
Alexandre Julliard wrote:
> Module: wine
> Branch: master
> Commit: dfb867af56f4b15986482deef588d33d2458b101
> URL: http://source.winehq.org/git/wine.git/?a=commit;h=dfb867af56f4b15986482deef588d33d2458b101
>
> Author: Jacek Caban <jacek at codeweavers.com>
> Date: Fri Sep 19 00:43:53 2008 +0200
>
> jscript: Added with statement implementation.
>
> ---
>
> dlls/jscript/engine.c | 44 +++++++++++++++++++++++++++++++++++++++++---
> dlls/jscript/tests/lang.js | 4 ++++
> 2 files changed, 45 insertions(+), 3 deletions(-)
>
> diff --git a/dlls/jscript/engine.c b/dlls/jscript/engine.c
> index f4b065f..b89d808 100644
> --- a/dlls/jscript/engine.c
> +++ b/dlls/jscript/engine.c
> @@ -924,12 +924,50 @@ HRESULT return_statement_eval(exec_ctx_t *ctx, statement_t *_stat, return_type_t
> return S_OK;
> }
>
> -HRESULT with_statement_eval(exec_ctx_t *ctx, statement_t *stat, return_type_t *rt, VARIANT *ret)
> +/* ECMA-262 3rd Edition 12.10 */
> +HRESULT with_statement_eval(exec_ctx_t *ctx, statement_t *_stat, return_type_t *rt, VARIANT *ret)
> {
> - FIXME("\n");
> - return E_NOTIMPL;
> + with_statement_t *stat = (with_statement_t*)_stat;
> + exprval_t exprval;
> + IDispatch *disp;
> + DispatchEx *obj;
> + VARIANT val;
> + HRESULT hres;
> +
> + TRACE("\n");
> +
> + hres = expr_eval(ctx, stat->expr, 0, &rt->ei, &exprval);
> + if(FAILED(hres))
> + return hres;
> +
> + hres = exprval_to_value(ctx->parser->script, &exprval, &rt->ei, &val);
> + exprval_release(&exprval);
> + if(FAILED(hres))
> + return hres;
> +
> + hres = to_object(ctx, &val, &disp);
> + VariantClear(&val);
> + if(FAILED(hres))
> + return hres;
> +
> + obj = iface_to_jsdisp((IUnknown*)disp);
> + IDispatch_Release(disp);
> + if(!obj) {
> + FIXME("disp id not jsdisp\n");
> + return E_NOTIMPL;
> + }
> +
> + hres = scope_push(ctx->scope_chain, obj, &ctx->scope_chain);
> + jsdisp_release(obj);
> + if(FAILED(hres));
Not sure if the if should be just removed or the two statements swapped
and become
if(FAILED(hres))
jsdisp_release(obj);
> +
> + hres = stat_eval(ctx, stat->statement, rt, ret);
> +
> + scope_pop(&ctx->scope_chain);
> + return hres;
> }
>
> +/* ECMA-262 3rd Edition 12.12 */
> HRESULT labelled_statement_eval(exec_ctx_t *ctx, statement_t *stat, return_type_t *rt, VARIANT *ret)
> {
> FIXME("\n");
bye
michael
More information about the wine-devel
mailing list