Ivan Levkivskyi added the comment:

Serhiy, here is a patch that might be helpful. It detects global-and-parameter 
errors sooner (when possible). This will cause the following:

>>> if 1:
...     def error(a):
...         global a
...     def error2():
...         b = 1
...         global b
... 
  File "<stdin>", line 3
SyntaxError: name 'a' is parameter and global

However, in more complex (nested) cases, the global-after-assign will still be 
detected sooner:

>>> def error(a):
...     def inner():
...         global a
...     def inner2():
...         b = 1
...         global b
... 
  File "<stdin>", line 6
SyntaxError: name 'b' is assigned to before global declaration

Maybe there is a way to delay the detection of this error until second pass in 
symtable.c, but don't see now how to do this.

----------
keywords: +patch
Added file: http://bugs.python.org/file45849/syntax-error-order.patch

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

Reply via email to