New submission from Rémy Oudompheng <remyoudomph...@gmail.com>:

When running "2to3 -f raise" on the following code, which uses an old Python 
2.4 raise of a string:

def f():
    raise ("message %s %s" % (1, 2))

try:
    f()
finally:
    pass

I obtain the following quite surprising result. I would have expected to get 
either an error or leave the original file unchanged, because "raise (s)" is 
syntactically valid although incorrect. 

$ 2to3 -f raise w.py
RefactoringTool: Refactored w.py
--- w.py        (original)
+++ w.py        (refactored)
@@ -1,5 +1,5 @@
 def f():
-    raise ("message %s %s" % (1, 2))
+    raise "message %s %s"
 
 try:
     f()

----------
components: 2to3 (2.x to 3.x conversion tool)
messages: 368355
nosy: Rémy Oudompheng
priority: normal
severity: normal
status: open
title: 2to3 raise can silently remove code from old 2.4 string exceptions
type: behavior
versions: Python 3.7, Python 3.8

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue40547>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to