From 6b8fef873c10294526e9f7d99860274e50a8703f Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Fri, 14 Aug 2009 11:58:44 +0200 Subject: [PATCH] jscript: Added RegExp.source implementation. --- dlls/jscript/regexp.c | 20 ++++++++++++++++++-- dlls/jscript/tests/regexp.js | 8 ++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/dlls/jscript/regexp.c b/dlls/jscript/regexp.c index 5fe99ab326..cc38c49ba4 100644 --- a/dlls/jscript/regexp.c +++ b/dlls/jscript/regexp.c @@ -3427,8 +3427,24 @@ HRESULT regexp_match(DispatchEx *dispex, const WCHAR *str, DWORD len, BOOL gflag static HRESULT RegExp_source(DispatchEx *dispex, LCID lcid, WORD flags, DISPPARAMS *dp, VARIANT *retv, jsexcept_t *ei, IServiceProvider *sp) { - FIXME("\n"); - return E_NOTIMPL; + TRACE("\n"); + + switch(flags) { + case DISPATCH_PROPERTYGET: { + RegExpInstance *This = (RegExpInstance*)dispex; + + V_VT(retv) = VT_BSTR; + V_BSTR(retv) = SysAllocString(This->str); + if(!V_BSTR(retv)) + return E_OUTOFMEMORY; + break; + } + default: + FIXME("Unimplemnted flags %x\n", flags); + return E_NOTIMPL; + } + + return S_OK; } static HRESULT RegExp_global(DispatchEx *dispex, LCID lcid, WORD flags, DISPPARAMS *dp, diff --git a/dlls/jscript/tests/regexp.js b/dlls/jscript/tests/regexp.js index 4344dfe0ce..4d6e60d63c 100644 --- a/dlls/jscript/tests/regexp.js +++ b/dlls/jscript/tests/regexp.js @@ -208,4 +208,12 @@ ok(r.length === 2, "r.length = " + r.length); ok(r[0] === "1", "r[0] = " + r[0]); ok(r[1] === "2", "r[1] = " + r[1]); +var re; + +re = /abc[^d]/g; +ok(re.source === "abc[^d]", "re.source = '" + re.source + "', expected 'abc[^d]'"); + +re = /a\bc[^d]/g; +ok(re.source === "a\\bc[^d]", "re.source = '" + re.source + "', expected 'a\\bc[^d]'"); + reportSuccess();