jscript: Call script_parse from compile_script, not the other way around.

This commit is contained in:
Jacek Caban 2012-03-12 19:22:59 +01:00 committed by Alexandre Julliard
parent 825eb76321
commit be29a73845
6 changed files with 19 additions and 10 deletions

View File

@ -1778,13 +1778,24 @@ static HRESULT compile_function(compiler_ctx_t *ctx, source_elements_t *source,
return S_OK;
}
HRESULT compile_script(parser_ctx_t *parser, BOOL from_eval)
HRESULT compile_script(script_ctx_t *ctx, const WCHAR *code, const WCHAR *delimiter, BOOL from_eval,
parser_ctx_t **ret)
{
parser_ctx_t *parser;
HRESULT hres;
hres = init_compiler(parser);
hres = script_parse(ctx, code, delimiter, from_eval, &parser);
if(FAILED(hres))
return hres;
return compile_function(parser->compiler, parser->source, from_eval);
hres = init_compiler(parser);
if(SUCCEEDED(hres))
hres = compile_function(parser->compiler, parser->source, from_eval);
if(FAILED(hres)) {
parser_release(parser);
return hres;
}
*ret = parser;
return S_OK;
}

View File

@ -577,4 +577,4 @@ typedef struct {
prop_val_t *property_list;
} property_value_expression_t;
HRESULT compile_script(parser_ctx_t*,BOOL) DECLSPEC_HIDDEN;
HRESULT compile_script(script_ctx_t*,const WCHAR*,const WCHAR*,BOOL,parser_ctx_t**) DECLSPEC_HIDDEN;

View File

@ -774,7 +774,7 @@ static HRESULT construct_function(script_ctx_t *ctx, DISPPARAMS *dp, jsexcept_t
if(FAILED(hres))
return hres;
hres = script_parse(ctx, str, NULL, FALSE, &parser);
hres = compile_script(ctx, str, NULL, FALSE, &parser);
heap_free(str);
if(FAILED(hres))
return hres;

View File

@ -371,7 +371,7 @@ static HRESULT JSGlobal_eval(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, DIS
}
TRACE("parsing %s\n", debugstr_w(V_BSTR(arg)));
hres = script_parse(ctx, V_BSTR(arg), NULL, TRUE, &parser_ctx);
hres = compile_script(ctx, V_BSTR(arg), NULL, TRUE, &parser_ctx);
if(FAILED(hres)) {
WARN("parse (%s) failed: %08x\n", debugstr_w(V_BSTR(arg)), hres);
return throw_syntax_error(ctx, ei, hres, NULL);

View File

@ -762,7 +762,7 @@ static HRESULT WINAPI JScriptParse_ParseScriptText(IActiveScriptParse *iface,
if(This->thread_id != GetCurrentThreadId() || This->ctx->state == SCRIPTSTATE_CLOSED)
return E_UNEXPECTED;
hres = script_parse(This->ctx, pstrCode, pstrDelimiter, FALSE, &parser_ctx);
hres = compile_script(This->ctx, pstrCode, pstrDelimiter, FALSE, &parser_ctx);
if(FAILED(hres))
return hres;
@ -829,7 +829,7 @@ static HRESULT WINAPI JScriptParseProcedure_ParseProcedureText(IActiveScriptPars
if(This->thread_id != GetCurrentThreadId() || This->ctx->state == SCRIPTSTATE_CLOSED)
return E_UNEXPECTED;
hres = script_parse(This->ctx, pstrCode, pstrDelimiter, FALSE, &parser_ctx);
hres = compile_script(This->ctx, pstrCode, pstrDelimiter, FALSE, &parser_ctx);
if(FAILED(hres)) {
WARN("Parse failed %08x\n", hres);
return hres;

View File

@ -1582,8 +1582,6 @@ HRESULT script_parse(script_ctx_t *ctx, const WCHAR *code, const WCHAR *delimite
parser_parse(parser_ctx);
jsheap_clear(mark);
hres = parser_ctx->hres;
if(SUCCEEDED(hres))
hres = compile_script(parser_ctx, from_eval);
if(FAILED(hres)) {
parser_release(parser_ctx);
return hres;