Skip to content

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

Closed
@JukkaL

Description

@JukkaL

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'

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions