Piotr Caban : jscript: Added RegExp.source implementation.

Alexandre Julliard julliard at winehq.org
Fri Aug 14 09:00:33 CDT 2009


Module: wine
Branch: master
Commit: 6b8fef873c10294526e9f7d99860274e50a8703f
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=6b8fef873c10294526e9f7d99860274e50a8703f

Author: Piotr Caban <piotr.caban at gmail.com>
Date:   Fri Aug 14 11:58:44 2009 +0200

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 5fe99ab..cc38c49 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 4344dfe..4d6e60d 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();




More information about the wine-cvs mailing list