Skip to content

Quick mode crash when class is deleted #3278

Closed
@JukkaL

Description

@JukkaL

On first run, type check a.py:

import b
def f() -> b.C: pass

b.py:

import a
class C: pass

Updated contents of b.py on the second run (note C was deleted, but there still is a reference to it in a):

import a
a.f().x

Now mypy crashes:

$ mypy --quick --show-traceback a.py
/Users/jukka/src/mypy/b.py:3: error: INTERNAL ERROR -- please report a bug at https://github.com/python/mypy/issues version: 0.510-dev-c856a53fe06c0ad9193d86ab35fb86693940f273-dirty
Traceback (most recent call last):
  File "/Users/jukka/src/mypy/scripts/mypy", line 6, in <module>
    main(__file__)
  File "/Users/jukka/src/mypy/mypy/main.py", line 46, in main
    res = type_check_only(sources, bin_dir, options)
  File "/Users/jukka/src/mypy/mypy/main.py", line 93, in type_check_only
    options=options)
  File "/Users/jukka/src/mypy/mypy/build.py", line 188, in build
    graph = dispatch(sources, manager)
  File "/Users/jukka/src/mypy/mypy/build.py", line 1570, in dispatch
    process_graph(graph, manager)
  File "/Users/jukka/src/mypy/mypy/build.py", line 1813, in process_graph
    process_stale_scc(graph, scc, manager)
  File "/Users/jukka/src/mypy/mypy/build.py", line 1912, in process_stale_scc
    graph[id].type_check_first_pass()
  File "/Users/jukka/src/mypy/mypy/build.py", line 1485, in type_check_first_pass
    self.type_checker.check_first_pass()
  File "/Users/jukka/src/mypy/mypy/checker.py", line 177, in check_first_pass
    self.accept(d)
  File "/Users/jukka/src/mypy/mypy/checker.py", line 262, in accept
    stmt.accept(self)
  File "/Users/jukka/src/mypy/mypy/nodes.py", line 823, in accept
    return visitor.visit_expression_stmt(self)
  File "/Users/jukka/src/mypy/mypy/checker.py", line 1817, in visit_expression_stmt
    self.expr_checker.accept(s.expr, allow_none_return=True)
  File "/Users/jukka/src/mypy/mypy/checkexpr.py", line 2056, in accept
    typ = node.accept(self)
  File "/Users/jukka/src/mypy/mypy/nodes.py", line 1254, in accept
    return visitor.visit_member_expr(self)
  File "/Users/jukka/src/mypy/mypy/checkexpr.py", line 1010, in visit_member_expr
    result = self.analyze_ordinary_member_access(e, False)
  File "/Users/jukka/src/mypy/mypy/checkexpr.py", line 1025, in analyze_ordinary_member_access
    original_type=original_type, chk=self.chk)
  File "/Users/jukka/src/mypy/mypy/checkmember.py", line 74, in analyze_member_access
    method = info.get_method(name)
AttributeError: 'NoneType' object has no attribute 'get_method'
/Users/jukka/src/mypy/b.py:3: note: use --pdb to drop into pdb

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions