Mypyc crashes on conditionally-defined class
Offen
Dieses Issue hat noch niemand übernommen.
crash
topic-mypyc
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
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)
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Reproduziere das Beispiel für eine bedingt definierte Klasse mit mypyc und lies anschließend mypy/mypyc/irbuild/visitor.py und mypy/mypyc/irbuild/classdef.py im Umfeld von visit_class_def und transform_class_def. Verfolge, warum der bedingt definierte TypeInfo in type_to_ir fehlt; die Aufgabe ist abgeschlossen, wenn das Beispiel nicht mehr den gemeldeten KeyError auslöst und das Verhalten durch Regressionstests abgedeckt ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 42/100