Use type context from previous definition when renaming
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
Maybe we code like this shouldn't generate an error when using --allow-redefinition:
x: List[int] = []
# do something with x
x = [] # Error: need annotation
The reason for the error is that the second assignment creates a completely independent variable, so the type of the original definition has no effect.
There are still some open issues:
- Using the context can generate false positives, in case the correct type would be something different for the second definition. I don't know how often this would be an issue.
- Propagating the type context is somewhat tricky since the name of the previous definition is not trivial to calculate. The rules for renaming depend on the scope (local/class/global).
- If/when we support more general redefinitions (not just within a single block), it may be unclear when we should propagate context. It may be best to first to make redefinitions more general and then reconsider this issue.
Follow-up to #6197.
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
Inizia leggendo la issue di follow-up #6197 e il comportamento di ridefinizione descritto in questa issue. Usa l’esempio fornito --allow-redefinition per determinare come debba essere gestito il contesto dei tipi tra gli scope, inclusi i falsi positivi e i problemi di rinomina elencati. Il lavoro è considerato completato quando il comportamento previsto e l’ambito sono definiti prima dell’implementazione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- compilers
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100