Skip to content

Crash in fine grained mode likely related to enums #4596

Closed
@ilevkivskyi

Description

@ilevkivskyi

Here is a traceback:

Traceback (most recent call last):
  File "[somewhere]/mypy/dmypy_server.py", line 135, in serve
    resp = self.run_command(command, data)
  File "[somewhere]/mypy/dmypy_server.py", line 169, in run_command
    return method(self, **data)
  File "[somewhere]/mypy/dmypy_server.py", line 200, in cmd_check
    return self.check(self.last_sources)
  File "[somewhere]/mypy/dmypy_server.py", line 214, in check
    return self.check_fine_grained(sources)
  File "[somewhere]/mypy/dmypy_server.py", line 246, in check_fine_grained
    return self.initialize_fine_grained(sources)
  File "[somewhere]/mypy/dmypy_server.py", line 291, in initialize_fine_grained
    messages = self.fine_grained_manager.update(changed)
  File "[somewhere]/mypy/server/update.py", line 222, in update
    result = self.update_single(next_id, next_path)
  File "[somewhere]/mypy/server/update.py", line 264, in update_single
    result = update_single_isolated(module, path, manager, previous_modules)
  File "[somewhere]/mypy/server/update.py", line 437, in update_single_isolated
    replace_modules_with_new_variants(manager, graph, old_modules, new_modules)
  File "[somewhere]/mypy/server/update.py", line 702, in replace_modules_with_new_variants
    new_module, new_module.names)
  File "[somewhere]/mypy/server/astmerge.py", line 85, in merge_asts
    node = replace_nodes_in_ast(new, replacement_map)
  File "[somewhere]/mypy/server/astmerge.py", line 130, in replace_nodes_in_ast
    node.accept(visitor)
  File "[somewhere]/mypy/nodes.py", line 230, in accept
    return visitor.visit_mypy_file(self)
  File "[somewhere]/mypy/server/astmerge.py", line 151, in visit_mypy_file
    super().visit_mypy_file(node)
  File "[somewhere]/mypy/traverser.py", line 30, in visit_mypy_file
    d.accept(self)
  File "[somewhere]/mypy/nodes.py", line 931, in accept
    return visitor.visit_if_stmt(self)
  File "[somewhere]/mypy/traverser.py", line 114, in visit_if_stmt
    o.else_body.accept(self)
  File "[somewhere]/mypy/nodes.py", line 766, in accept
    return visitor.visit_block(self)
  File "[somewhere]/mypy/server/astmerge.py", line 154, in visit_block
    super().visit_block(node)
  File "[somewhere]/mypy/traverser.py", line 34, in visit_block
    s.accept(self)
  File "[somewhere]/mypy/nodes.py", line 704, in accept
    return visitor.visit_class_def(self)
  File "[somewhere]/mypy/server/astmerge.py", line 176, in visit_class_def
    self.process_type_info(node.info)
  File "[somewhere]/mypy/server/astmerge.py", line 264, in process_type_info
    replace_nodes_in_symbol_table(info.names, self.replacements)
AttributeError: 'NoneType' object has no attribute 'names'

Unfortunately, there is no simple repro. The only hint is that this likely related to Enum and/or IntEnum (or a class being changed from a normal class to enum).

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions