Mercurial > hg
changeset 17620:efd1a4378b64
check-code: catch yield inside try/finally (with tests)
This is not allowed in Python 2.4.
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Wed, 19 Sep 2012 12:29:12 +0200 |
parents | 431e3e827ab0 |
children | 1a42f19ad958 |
files | contrib/check-code.py tests/test-check-code.t |
diffstat | 2 files changed, 22 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/contrib/check-code.py Tue Sep 18 16:30:21 2012 -0700 +++ b/contrib/check-code.py Wed Sep 19 12:29:12 2012 +0200 @@ -137,6 +137,9 @@ (r'^\s+\w+=\w+[^,)\n]$', "missing whitespace in assignment"), (r'(\s+)try:\n((?:\n|\1\s.*\n)+?)\1except.*?:\n' r'((?:\n|\1\s.*\n)+?)\1finally:', 'no try/except/finally in Python 2.4'), + (r'(\s+)try:\n((?:\n|\1\s.*\n)*?)\1\s*yield\b.*?' + r'((?:\n|\1\s.*\n)+?)\1finally:', + 'no yield inside try/finally in Python 2.4'), (r'.{81}', "line too long"), (r' x+[xo][\'"]\n\s+[\'"]x', 'string join across lines with no space'), (r'[^\n]\Z', "no trailing newline"),
--- a/tests/test-check-code.t Tue Sep 18 16:30:21 2012 -0700 +++ b/tests/test-check-code.t Wed Sep 19 12:29:12 2012 +0200 @@ -43,6 +43,19 @@ > pass > finally: > pass + > + > # yield inside a try/finally block is not allowed in Python 2.4 + > try: + > pass + > yield 1 + > finally: + > pass + > try: + > yield + > pass + > finally: + > pass + > > EOF $ cat > classstyle.py <<EOF > class newstyle_class(object): @@ -84,6 +97,12 @@ ./non-py24.py:11: > try: no try/except/finally in Python 2.4 + ./non-py24.py:28: + > try: + no yield inside try/finally in Python 2.4 + ./non-py24.py:33: + > try: + no yield inside try/finally in Python 2.4 ./classstyle.py:4: > class oldstyle_class: old-style class, use class foo(object)