Module: wine Branch: master Commit: 66d3dd4b7e30a0a4baffb9ff3926934f3c061c49 URL: http://source.winehq.org/git/wine.git/?a=commit;h=66d3dd4b7e30a0a4baffb9ff39...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Sep 12 12:30:21 2011 +0200
vbscript: Added interpreter support for numeric literals.
---
dlls/vbscript/interp.c | 30 ++++++++++++++++++++++++------ dlls/vbscript/tests/lang.vbs | 6 ++++++ 2 files changed, 30 insertions(+), 6 deletions(-)
diff --git a/dlls/vbscript/interp.c b/dlls/vbscript/interp.c index e7e3ab3..1661700 100644 --- a/dlls/vbscript/interp.c +++ b/dlls/vbscript/interp.c @@ -253,20 +253,38 @@ static HRESULT interp_string(exec_ctx_t *ctx)
static HRESULT interp_long(exec_ctx_t *ctx) { - FIXME("\n"); - return E_NOTIMPL; + const LONG arg = ctx->instr->arg1.lng; + VARIANT v; + + TRACE("%d\n", arg); + + V_VT(&v) = VT_I4; + V_I4(&v) = arg; + return stack_push(ctx, &v); }
static HRESULT interp_short(exec_ctx_t *ctx) { - FIXME("\n"); - return E_NOTIMPL; + const LONG arg = ctx->instr->arg1.lng; + VARIANT v; + + TRACE("%d\n", arg); + + V_VT(&v) = VT_I2; + V_I2(&v) = arg; + return stack_push(ctx, &v); }
static HRESULT interp_double(exec_ctx_t *ctx) { - FIXME("\n"); - return E_NOTIMPL; + const DOUBLE *arg = ctx->instr->arg1.dbl; + VARIANT v; + + TRACE("%lf\n", *arg); + + V_VT(&v) = VT_R8; + V_R8(&v) = *arg; + return stack_push(ctx, &v); }
static HRESULT interp_empty(exec_ctx_t *ctx) diff --git a/dlls/vbscript/tests/lang.vbs b/dlls/vbscript/tests/lang.vbs index 8a5a9c5..91da4fe 100644 --- a/dlls/vbscript/tests/lang.vbs +++ b/dlls/vbscript/tests/lang.vbs @@ -38,5 +38,11 @@ Call ok(getVT("") = "VT_BSTR", "getVT("""") is not VT_BSTR") Call ok(getVT("test") = "VT_BSTR", "getVT(""test"") is not VT_BSTR") Call ok(getVT(Empty) = "VT_EMPTY", "getVT(Empty) is not VT_EMPTY") Call ok(getVT(null) = "VT_NULL", "getVT(null) is not VT_NULL") +Call ok(getVT(0) = "VT_I2", "getVT(0) is not VT_I2") +Call ok(getVT(1) = "VT_I2", "getVT(1) is not VT_I2") +Call ok(getVT(0.5) = "VT_R8", "getVT(0.5) is not VT_R8") +Call ok(getVT(0.0) = "VT_R8", "getVT(0.0) is not VT_R8") +Call ok(getVT(2147483647) = "VT_I4", "getVT(2147483647) is not VT_I4") +Call ok(getVT(2147483648) = "VT_R8", "getVT(2147483648) is not VT_R8")
reportSuccess()