| """Verify that warnings are issued for global statements following use.""" |
| |
| from test.test_support import check_syntax |
| |
| import warnings |
| |
| warnings.filterwarnings("error", module="<test code>") |
| |
| def compile_and_check(text, should_fail=1): |
| try: |
| compile(text, "<test code>", "exec") |
| except SyntaxError, msg: |
| if should_fail: |
| print "got SyntaxError as expected" |
| else: |
| print "raised unexpected SyntaxError:", text |
| else: |
| if should_fail: |
| print "should have raised SyntaxError:", text |
| else: |
| print "as expected, no SyntaxError" |
| |
| prog_text_1 = """ |
| def wrong1(): |
| a = 1 |
| b = 2 |
| global a |
| global b |
| """ |
| compile_and_check(prog_text_1) |
| |
| prog_text_2 = """ |
| def wrong2(): |
| print x |
| global x |
| """ |
| compile_and_check(prog_text_2) |
| |
| prog_text_3 = """ |
| def wrong3(): |
| print x |
| x = 2 |
| global x |
| """ |
| compile_and_check(prog_text_3) |
| |
| prog_text_4 = """ |
| global x |
| x = 2 |
| """ |
| compile_and_check(prog_text_4, 0) |