From: <pj...@us...> - 2008-07-24 07:22:42
|
Revision: 4993 http://jython.svn.sourceforge.net/jython/?rev=4993&view=rev Author: pjenvey Date: 2008-07-24 07:22:38 +0000 (Thu, 24 Jul 2008) Log Message: ----------- fix a regression from the bug 1140 fix Modified Paths: -------------- branches/asm/Lib/test/test_re_jy.py branches/asm/src/org/python/modules/sre/PatternObject.java Modified: branches/asm/Lib/test/test_re_jy.py =================================================================== --- branches/asm/Lib/test/test_re_jy.py 2008-07-23 20:55:03 UTC (rev 4992) +++ branches/asm/Lib/test/test_re_jy.py 2008-07-24 07:22:38 UTC (rev 4993) @@ -4,6 +4,11 @@ class ReTest(unittest.TestCase): + def test_bug_1140_addendum(self): + result = re.sub('', lambda match : None, 'foo') + self.assertEqual(result, 'foo') + self.assert_(isinstance(result, str)) + def test_unkown_groupname(self): self.assertRaises(IndexError, re.match("(?P<int>\d+)\.(\d*)", '3.14').group, Modified: branches/asm/src/org/python/modules/sre/PatternObject.java =================================================================== --- branches/asm/src/org/python/modules/sre/PatternObject.java 2008-07-23 20:55:03 UTC (rev 4992) +++ branches/asm/src/org/python/modules/sre/PatternObject.java 2008-07-24 07:22:38 UTC (rev 4993) @@ -170,22 +170,20 @@ appended = true; } - // XXX - does this break derived types? anyway, following rule enumerated in - // test_re.test_bug_1140 - + // Follows rules enumerated in test_re.test_bug_1140 PyString outstring; - if (__builtin__.isinstance(instring, PyString.TYPE) && - (buf.length() == 0 || __builtin__.isinstance(template, PyString.TYPE))) { - outstring = new PyString(buf.toString()); + if (buf.length() == 0) { + outstring = instring.createInstance(buf.toString()); + } else if (template instanceof PyUnicode || instring instanceof PyUnicode) { + outstring = Py.newUnicode(buf.toString()); + } else { + outstring = Py.newString(buf.toString()); } - else { - outstring = new PyUnicode(buf.toString()); - } - if (subn) + if (subn) { return new PyTuple(outstring, Py.newInteger(n)); - else - return outstring; + } + return outstring; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |