# Buggy code
def check_no_global(
    self, n: str, ctx: Context, is_overloaded_func: bool = False
) -> None:
    if n in self.globals:
        prev_is_overloaded = isinstance(self.globals[n], OverloadedFuncDef)
        if is_overloaded_func and prev_is_overloaded:
            self.fail("Nonconsecutive overload {} found".format(n), ctx)
        elif prev_is_overloaded:
            self.fail("Definition of '{}' missing 'overload'".format(n), ctx)
        else:
            self.name_already_defined(n, ctx, self.globals[n])


# Traceback (AttributeError)
api/integrations/perforce/git_p4.py: error: INTERNAL ERROR -- please report a bug at https://github.com/python/mypy/issues version: 0.520-dev-13b75737bb41d62ae4e7714704dcda3b446fa9f4
Traceback (most recent call last):
File "/mnt/code/venvs/mypy_venv/bin/mypy", line 6, in <module>
main(__file__)
File "/mnt/code/venvs/mypy_venv/lib/python3.5/site-packages/mypy/main.py", line 46, in main
res = type_check_only(sources, bin_dir, options)
File "/mnt/code/venvs/mypy_venv/lib/python3.5/site-packages/mypy/main.py", line 93, in type_check_only
options=options)
File "/mnt/code/venvs/mypy_venv/lib/python3.5/site-packages/mypy/build.py", line 188, in build
graph = dispatch(sources, manager)
File "/mnt/code/venvs/mypy_venv/lib/python3.5/site-packages/mypy/build.py", line 1587, in dispatch
graph = load_graph(sources, manager)
File "/mnt/code/venvs/mypy_venv/lib/python3.5/site-packages/mypy/build.py", line 1670, in load_graph
root_source=True)
File "/mnt/code/venvs/mypy_venv/lib/python3.5/site-packages/mypy/build.py", line 1259, in __init__
self.parse_file()
File "/mnt/code/venvs/mypy_venv/lib/python3.5/site-packages/mypy/build.py", line 1442, in parse_file
first.visit_file(self.tree, self.xpath, self.id, self.options)
File "/usr/lib/python3.5/contextlib.py", line 77, in __exit__
self.gen.throw(type, value, traceback)
File "/mnt/code/venvs/mypy_venv/lib/python3.5/site-packages/mypy/build.py", line 1347, in wrap_context
yield
File "/mnt/code/venvs/mypy_venv/lib/python3.5/site-packages/mypy/build.py", line 1442, in parse_file
first.visit_file(self.tree, self.xpath, self.id, self.options)
File "/mnt/code/venvs/mypy_venv/lib/python3.5/site-packages/mypy/semanal.py", line 3423, in visit_file
d.accept(self)
File "/mnt/code/venvs/mypy_venv/lib/python3.5/site-packages/mypy/nodes.py", line 1007, in accept
return visitor.visit_try_stmt(self)
File "/mnt/code/venvs/mypy_venv/lib/python3.5/site-packages/mypy/semanal.py", line 3614, in visit_try_stmt
self.sem.analyze_try_stmt(s, self, add_global=self.sem.is_module_scope())
File "/mnt/code/venvs/mypy_venv/lib/python3.5/site-packages/mypy/semanal.py", line 2632, in analyze_try_stmt
handler.accept(visitor)
File "/mnt/code/venvs/mypy_venv/lib/python3.5/site-packages/mypy/nodes.py", line 811, in accept
return visitor.visit_block(self)
File "/mnt/code/venvs/mypy_venv/lib/python3.5/site-packages/mypy/semanal.py", line 3458, in visit_block
node.accept(self)
File "/mnt/code/venvs/mypy_venv/lib/python3.5/site-packages/mypy/nodes.py", line 750, in accept
return visitor.visit_class_def(self)
File "/mnt/code/venvs/mypy_venv/lib/python3.5/site-packages/mypy/semanal.py", line 3526, in visit_class_def
self.sem.check_no_global(cdef.name, cdef)
File "/mnt/code/venvs/mypy_venv/lib/python3.5/site-packages/mypy/semanal.py", line 3318, in check_no_global
self.name_already_defined(n, ctx, self.globals[n])
File "/mnt/code/venvs/mypy_venv/lib/python3.5/site-packages/mypy/semanal.py", line 3330, in name_already_defined
extra_msg = ' on line {}'.format(original_ctx.node.get_line())
AttributeError: 'NoneType' object has no attribute 'get_line'
api/integrations/perforce/git_p4.py: note: use --pdb to drop into pdb

# Fixed code
def check_no_global(
    self, n: str, ctx: Context, is_overloaded_func: bool = False
) -> None:
    if n in self.globals:
        prev_is_overloaded = isinstance(self.globals[n], OverloadedFuncDef)
        if is_overloaded_func and prev_is_overloaded:
            self.fail("Nonconsecutive overload {} found".format(n), ctx)
        elif prev_is_overloaded:
            self.fail("Definition of '{}' missing 'overload'".format(n), ctx)
        else:
            self.name_already_defined(n, ctx)