Mypyc crashes on conditionally-defined class
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 20.6k
- Fork
- 3.3k
- Metriche di merge delle PR
- Metriche PR in attesa
Descrizione
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)
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Riproduci l'esempio di una classe definita condizionalmente con mypyc, quindi leggi mypy/mypyc/irbuild/visitor.py e mypy/mypyc/irbuild/classdef.py intorno a visit_class_def e transform_class_def. Segui il motivo per cui il TypeInfo definito condizionalmente è assente da type_to_ir; il lavoro è completo quando l'esempio non solleva più il KeyError segnalato e il comportamento è coperto da test di regressione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- compilers
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 42/100