Use type context from previous definition when renaming
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
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.
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
Beginne mit dem Lesen des Folge-Issues #6197 und des in diesem Issue beschriebenen Verhaltens bei Neudefinitionen. Verwende das bereitgestellte Beispiel --allow-redefinition, um zu bestimmen, wie der Typkontext über Scopes hinweg behandelt werden sollte, einschließlich der aufgeführten Fehlalarme und Bedenken hinsichtlich der Umbenennung. Als abgeschlossen gilt die Aufgabe, wenn das beabsichtigte Verhalten und der Geltungsbereich vor der Implementierung festgelegt sind.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- compilers
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100