"""Verify that warnings are issued for global statements following use."""

from test.support import run_unittest, check_syntax_error
import unittest

import warnings
warnings.filterwarnings("error", module="<test string>")

class GlobalTests(unittest.TestCase):

    def test1(self):
        prog_text_1 = """\
def wrong1():
    a = 1
    b = 2
    global a
    global b
"""
        check_syntax_error(self, prog_text_1)

    def test2(self):
        prog_text_2 = """\
def wrong2():
    print(x)
    global x
"""
        check_syntax_error(self, prog_text_2)

    def test3(self):
        prog_text_3 = """\
def wrong3():
    print(x)
    x = 2
    global x
"""
        check_syntax_error(self, prog_text_3)

    def test4(self):
        prog_text_4 = """\
global x
x = 2
"""
        # this should work
        compile(prog_text_4, "<test string>", "exec")


def test_main():
    run_unittest(GlobalTests)

if __name__ == "__main__":
    test_main()
