diff --git a/dlls/jscript/compile.c b/dlls/jscript/compile.c index 85d38da3f71ec78ef44e72dc17d075c042c0831f..0f4381ad276000da067f6b81dad3dfef946d9325 100644 --- a/dlls/jscript/compile.c +++ b/dlls/jscript/compile.c @@ -179,6 +179,8 @@ static HRESULT compile_literal(compiler_ctx_t *ctx, literal_expression_t *expr) return push_instr_double(ctx, OP_double, literal->u.dval); case LT_INT: return push_instr_int(ctx, OP_int, literal->u.lval); + case LT_NULL: + return push_instr(ctx, OP_null); case LT_STRING: return push_instr_str(ctx, OP_str, literal->u.wstr); default: diff --git a/dlls/jscript/engine.c b/dlls/jscript/engine.c index e9dc97616f6e05646541735dc4ec0ed9a8232d69..66d10d677c6c432fc905fe4bf1c0a4435c29fd4c 100644 --- a/dlls/jscript/engine.c +++ b/dlls/jscript/engine.c @@ -1724,6 +1724,17 @@ HRESULT identifier_expression_eval(script_ctx_t *ctx, expression_t *_expr, DWORD return hres; } +/* ECMA-262 3rd Edition 7.8.1 */ +HRESULT interp_null(exec_ctx_t *ctx) +{ + VARIANT v; + + TRACE("\n"); + + V_VT(&v) = VT_NULL; + return stack_push(ctx, &v); +} + /* ECMA-262 3rd Edition 7.8.2 */ HRESULT interp_bool(exec_ctx_t *ctx) { diff --git a/dlls/jscript/engine.h b/dlls/jscript/engine.h index 2c099e4c5986b26eefee01cf6488a12abc6d2784..b48f04c0e9e52f135818a4e29add0640f47fc621 100644 --- a/dlls/jscript/engine.h +++ b/dlls/jscript/engine.h @@ -51,6 +51,7 @@ typedef struct _func_stack { X(int, 1, ARG_INT) \ X(neg, 1, 0) \ X(neq2, 1, 0) \ + X(null, 1, 0) \ X(str, 1, 0) \ X(tonum, 1, 0) \ X(tree, 1, ARG_EXPR) \