vbscript: Added interpreter support for numeric literals.

This commit is contained in:
Jacek Caban 2011-09-12 12:30:21 +02:00 committed by Alexandre Julliard
parent 880d706636
commit 66d3dd4b7e
2 changed files with 30 additions and 6 deletions

View File

@ -253,20 +253,38 @@ static HRESULT interp_string(exec_ctx_t *ctx)
static HRESULT interp_long(exec_ctx_t *ctx) static HRESULT interp_long(exec_ctx_t *ctx)
{ {
FIXME("\n"); const LONG arg = ctx->instr->arg1.lng;
return E_NOTIMPL; 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) static HRESULT interp_short(exec_ctx_t *ctx)
{ {
FIXME("\n"); const LONG arg = ctx->instr->arg1.lng;
return E_NOTIMPL; 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) static HRESULT interp_double(exec_ctx_t *ctx)
{ {
FIXME("\n"); const DOUBLE *arg = ctx->instr->arg1.dbl;
return E_NOTIMPL; 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) static HRESULT interp_empty(exec_ctx_t *ctx)

View File

@ -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("test") = "VT_BSTR", "getVT(""test"") is not VT_BSTR")
Call ok(getVT(Empty) = "VT_EMPTY", "getVT(Empty) is not VT_EMPTY") 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(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() reportSuccess()