Author: Tim Felgentreff <timfelgentr...@gmail.com> Branch: Changeset: r62316:5f5a391cfee4 Date: 2013-03-12 15:41 +0100 http://bitbucket.org/pypy/pypy/changeset/5f5a391cfee4/
Log: fix and test adding no_nul=True annotation to strings in result of splitting on null-byte if maxsplit argument is not -1 diff --git a/rpython/annotator/test/test_annrpython.py b/rpython/annotator/test/test_annrpython.py --- a/rpython/annotator/test/test_annrpython.py +++ b/rpython/annotator/test/test_annrpython.py @@ -449,7 +449,6 @@ def test_str_split_nul(self): def f(n): return n.split('\0')[0] - a = self.RPythonAnnotator() a.translator.config.translation.check_str_without_nul = True s = a.build_types(f, [annmodel.SomeString(no_nul=False, can_be_None=False)]) @@ -457,6 +456,15 @@ assert not s.can_be_None assert s.no_nul + def g(n): + return n.split('\0', 1)[0] + a = self.RPythonAnnotator() + a.translator.config.translation.check_str_without_nul = True + s = a.build_types(g, [annmodel.SomeString(no_nul=False, can_be_None=False)]) + assert isinstance(s, annmodel.SomeString) + assert not s.can_be_None + assert not s.no_nul + def test_str_splitlines(self): a = self.RPythonAnnotator() def f(a_str): diff --git a/rpython/annotator/unaryop.py b/rpython/annotator/unaryop.py --- a/rpython/annotator/unaryop.py +++ b/rpython/annotator/unaryop.py @@ -496,7 +496,7 @@ def method_split(str, patt, max=-1): getbookkeeper().count("str_split", str, patt) - if patt.is_constant() and patt.const == "\0": + if max == -1 and patt.is_constant() and patt.const == "\0": no_nul = True else: no_nul = str.no_nul _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit