Author: Philip Jenvey <[email protected]>
Branch: py3k
Changeset: r64786:e7eccdeaa126
Date: 2013-06-04 18:31 -0700
http://bitbucket.org/pypy/pypy/changeset/e7eccdeaa126/

Log:    properly decode SyntaxError source text

diff --git a/pypy/interpreter/pyparser/error.py 
b/pypy/interpreter/pyparser/error.py
--- a/pypy/interpreter/pyparser/error.py
+++ b/pypy/interpreter/pyparser/error.py
@@ -12,15 +12,19 @@
         self.lastlineno = lastlineno
 
     def wrap_info(self, space):
-        if self.filename is None:
-            w_filename = space.w_None
-        else:
+        w_text = w_filename = space.w_None
+        if self.text is not None:
+            from rpython.rlib.runicode import str_decode_utf_8
+            # self.text may not be UTF-8 in case of decoding errors
+            w_text = space.wrap(str_decode_utf_8(self.text, len(self.text),
+                                                 'replace')[0])
+        if self.filename is not None:
             w_filename = space.fsdecode(space.wrapbytes(self.filename))
         return space.newtuple([space.wrap(self.msg),
                                space.newtuple([w_filename,
                                                space.wrap(self.lineno),
                                                space.wrap(self.offset),
-                                               space.wrap(self.text),
+                                               space.wrap(w_text),
                                                space.wrap(self.lastlineno)])])
 
     def __str__(self):
diff --git a/pypy/interpreter/test/test_compiler.py 
b/pypy/interpreter/test/test_compiler.py
--- a/pypy/interpreter/test/test_compiler.py
+++ b/pypy/interpreter/test/test_compiler.py
@@ -853,7 +853,6 @@
         """
 
     def test_cpython_issue2301(self):
-        skip('XXX')
         try:
             compile(b"# coding: utf7\nprint '+XnQ-'", "dummy", "exec")
         except SyntaxError as v:
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to