Skip to content

Fine-grained: named tuple definition with a function crashes #4657

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 Mar 1, 2018 · 0 comments · Fixed by #4658
Closed

Fine-grained: named tuple definition with a function crashes #4657

JukkaL opened this issue Mar 1, 2018 · 0 comments · Fixed by #4658

Comments

@JukkaL
Copy link
Collaborator

JukkaL commented Mar 1, 2018

This fine-grained incremental mode test case causes a crash:

[case testNamedTupleSpecialCase]
from typing import NamedTuple
import b
def f() -> None:
    b.x
    n = NamedTuple('n', [])
[file b.py]
x = 0
[file b.py.2]
x = ''
[out]
==

Here's the relevant part of the traceback:

  File "/Users/jukka/src/mypy/mypy/test/data.py", line 647, in runtest
    suite.run_case(self.case)
  File "/Users/jukka/src/mypy/mypy/test/testfinegrained.py", line 117, in run_case
    new_messages = fine_grained_manager.update(modules)
  File "/Users/jukka/src/mypy/mypy/server/update.py", line 222, in update
    result = self.update_single(next_id, next_path)
  File "/Users/jukka/src/mypy/mypy/server/update.py", line 284, in update_single
    self.previous_targets_with_errors)
  File "/Users/jukka/src/mypy/mypy/server/update.py", line 752, in propagate_changes_using_dependencies
    triggered |= reprocess_nodes(manager, graph, id, nodes, deps)
  File "/Users/jukka/src/mypy/mypy/server/update.py", line 848, in reprocess_nodes
    manager.semantic_analyzer.refresh_partial(deferred.node)
  File "/Users/jukka/src/mypy/mypy/semanal.py", line 319, in refresh_partial
    self.accept(node)
  File "/Users/jukka/src/mypy/mypy/semanal.py", line 3965, in accept
    node.accept(self)
  File "/Users/jukka/src/mypy/mypy/nodes.py", line 508, in accept
    return visitor.visit_func_def(self)
  File "/Users/jukka/src/mypy/mypy/semanal.py", line 419, in visit_func_def
    self.analyze_function(defn)
  File "/Users/jukka/src/mypy/mypy/semanal.py", line 638, in analyze_function
    defn.body.accept(self)
  File "/Users/jukka/src/mypy/mypy/nodes.py", line 773, in accept
    return visitor.visit_block(self)
  File "/Users/jukka/src/mypy/mypy/semanal.py", line 1659, in visit_block
    self.accept(s)
  File "/Users/jukka/src/mypy/mypy/semanal.py", line 3965, in accept
    node.accept(self)
  File "/Users/jukka/src/mypy/mypy/nodes.py", line 819, in accept
    return visitor.visit_assignment_stmt(self)
  File "/Users/jukka/src/mypy/mypy/semanal.py", line 1744, in visit_assignment_stmt
    self.process_namedtuple_definition(s)
  File "/Users/jukka/src/mypy/mypy/semanal.py", line 2352, in process_namedtuple_definition
    named_tuple = self.check_namedtuple(s.rvalue, name)
  File "/Users/jukka/src/mypy/mypy/semanal.py", line 2390, in check_namedtuple
    info = self.build_namedtuple_typeinfo(name, items, types, {})
  File "/Users/jukka/src/mypy/mypy/semanal.py", line 2516, in build_namedtuple_typeinfo
    self.patches.append((PRIORITY_FALLBACKS, patch))
AttributeError: 'SemanticAnalyzerPass2' object has no attribute 'patches'
@JukkaL JukkaL self-assigned this Mar 1, 2018
JukkaL added a commit that referenced this issue Mar 1, 2018
This fixes crashes and other issues.

Fixes #4657.
JukkaL added a commit that referenced this issue Mar 2, 2018
This fixes crashes and at least one edge case. Not sure if
all the patch callbacks are necessary when propagating
fine-grained dependencies, but it seems safer to invoke
them all.

Fixes #4657.
yedpodtrzitko pushed a commit to kiwicom/mypy that referenced this issue Mar 15, 2018
This fixes crashes and at least one edge case. Not sure if
all the patch callbacks are necessary when propagating
fine-grained dependencies, but it seems safer to invoke
them all.

Fixes python#4657.
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.

1 participant