[pypy-commit] pypy use-file-star-for-file: merge default

bdkearns noreply at buildbot.pypy.org
Wed Sep 10 01:37:58 CEST 2014


Author: Brian Kearns <bdkearns at gmail.com>
Branch: use-file-star-for-file
Changeset: r73405:74ed616baf65
Date: 2014-09-09 16:28 -0400
http://bitbucket.org/pypy/pypy/changeset/74ed616baf65/

Log:	merge default

diff --git a/rpython/rtyper/rbuiltin.py b/rpython/rtyper/rbuiltin.py
--- a/rpython/rtyper/rbuiltin.py
+++ b/rpython/rtyper/rbuiltin.py
@@ -269,17 +269,19 @@
     hop.exception_cannot_occur()
     v_self = hop.args_v[0]
     r_self = hop.args_r[0]
-    if hop.nb_args >= 2:
+    if hop.nb_args <= 2:
+        v_errno = hop.inputconst(lltype.Signed, 0)
+        if hop.nb_args == 2:
+            v_strerror = hop.inputarg(rstr.string_repr, arg=1)
+            r_self.setfield(v_self, 'strerror', v_strerror, hop.llops)
+    else:
         v_errno = hop.inputarg(lltype.Signed, arg=1)
-    else:
-        v_errno = hop.inputconst(lltype.Signed, 0)
-    r_self.setfield(v_self, 'errno', v_errno, hop.llops)
-    if hop.nb_args >= 3:
         v_strerror = hop.inputarg(rstr.string_repr, arg=2)
         r_self.setfield(v_self, 'strerror', v_strerror, hop.llops)
         if hop.nb_args >= 4:
             v_filename = hop.inputarg(rstr.string_repr, arg=3)
             r_self.setfield(v_self, 'filename', v_filename, hop.llops)
+    r_self.setfield(v_self, 'errno', v_errno, hop.llops)
 
 def rtype_WindowsError__init__(hop):
     hop.exception_cannot_occur()
diff --git a/rpython/rtyper/test/test_exception.py b/rpython/rtyper/test/test_exception.py
--- a/rpython/rtyper/test/test_exception.py
+++ b/rpython/rtyper/test/test_exception.py
@@ -36,7 +36,7 @@
 class TestException(BaseRtypingTest):
     def test_exception_with_arg(self):
         def g(n):
-            raise IOError(n)
+            raise IOError("test")
         def h(n):
             raise OSError(n, "?", None)
         def i(n):
@@ -49,8 +49,8 @@
             try:
                 g(n)
             except IOError, e:
-                assert e.errno == 42
-                assert e.strerror is None
+                assert e.errno == 0
+                assert e.strerror == "test"
                 assert e.filename is None
             else:
                 assert False


More information about the pypy-commit mailing list