Use type context from previous definition when renaming
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 20.6k
- Forks
- 3.3k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
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.
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza leyendo el issue de seguimiento #6197 y el comportamiento de redefinición descrito en este issue. Usa el ejemplo proporcionado --allow-redefinition para determinar cómo debe gestionarse el contexto de tipos entre scopes, incluidos los falsos positivos y las cuestiones de renombrado indicados. Se considera terminado cuando el comportamiento previsto y el alcance hayan quedado establecidos antes de la implementación.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- compilers
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100