Skip to content

Quick mode crash when class is deleted #3278

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
JukkaL opened this issue Apr 28, 2017 · 1 comment · Fixed by #3304
Closed

Quick mode crash when class is deleted #3278

JukkaL opened this issue Apr 28, 2017 · 1 comment · Fixed by #3304

Comments

@JukkaL
Copy link
Collaborator

JukkaL commented Apr 28, 2017

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
@ilevkivskyi
Copy link
Member

#3304 also fixes this crash. I get:

b.py:2: error: "<stale cache: consider running mypy without --quick>" has no attribute "x"

gvanrossum pushed a commit that referenced this issue May 11, 2017
The idea was proposed by Jukka in #3285 (comment)

This could (hopefully) fix #3281 for real.
Also fixes #3278
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants