Skip to content

Mypyc crashes on conditionally-defined class #15716

Open
@nickdrozd

Description

@nickdrozd

To Reproduce

if True:
    class A:
        pass

(This example is silly, but a real use case would be defining a protocol inside a TYPE_CHECKING block.)

Actual Behavior

  File "mypy/mypy/nodes.py", line 1141, in accept
    return visitor.visit_class_def(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "mypy/mypyc/irbuild/visitor.py", line 167, in visit_class_def
    transform_class_def(self.builder, cdef)
  File "mypy/mypyc/irbuild/classdef.py", line 88, in transform_class_def
    ir = builder.mapper.type_to_ir[cdef.info]
         ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
asdf.py:2: KeyError: <TypeInfo asdf.A>
mypyc --version
mypy 1.6.0+dev.89ad125fa5a31a7c82f267e957d3c94da6b52f61
(compiled: no)

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions