Don't report "expression contains 'Any'" if it's a `TypeOfAny.from_error`
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 20.6k
- Forks
- 3.3k
- Merge medio
- 1 d 18 h
- PR fusionados (30 d)
- 54
Descripción
Update
@A5Rocks idea about not reporting expression contains Any if it's TypeOfAny.from_error is based 100. I also realized that if it's <nothing> it would still complain about attribute access etc being incorrect.
Bug Report
The reason being that when you update an overloaded signature you can get hundreds of reported "Expression contains 'Any'" errors, when there are in reality an order of magnitude less actual errors.
from typing import overload
@overload
def foo(a: int) -> int: ...
# this overload was just removed
# @overload
# def foo(a: None) -> str ...
@overload
def foo(a: str) -> str: ...
def foo(a: object) -> object: ...
a = foo(None) # error: No overload variant of "foo" matches argument type "None"\
# error: Expression has type "Any"
reveal_type(a) # error: Expression has type "Any"\
# note: Revealed type is "Any"
print(a) # error: Expression has type "Any"
bar(a) # error: Expression has type "Any"
a + "asdf" # error: Expression has type "Any"
But If TypeOfAny.from_errors are ignored:
a = foo(None) # error: No overload variant of "foo" matches argument type "None"
reveal_type(a) # note: Revealed type is "Any"
print(a)
bar(a)
a + "asdf"
Original Title
Invocations of overloaded functions with invalid argument types shouldn't return Any it should return <nothing>
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 con los ejemplos mínimos de llamadas sobrecargadas del issue y sigue cómo la resolución de sobrecargas no válidas asigna TypeOfAny.from_error y cómo las expresiones posteriores informan de ese tipo. Se considera terminado cuando el error de sobrecarga original permanece, mientras que los valores Any de error propagados no producen diagnósticos adicionales "Expression has type Any"; el issue no indica archivos ni pruebas que ejecutar.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- compilers
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100