python / python/mypy

`--warn-unreachable` doesn't flag unnecessary comparison to `None`

Ouverte
#20,060 0 commentaires 1 réaction 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

bug topic-reachability
Langage dominant
Python
Étoiles
20.6k
Forks
3.3k
Métriques de merge des PR
Métriques de PR en attente

Description

Here is a full example:


from random import randrange



def f(x: int) -> int | None:

    return None if x == 0 else 2 * x



def g(x: int) -> int:

    return 2 * x



if __name__ == '__main__':

    if f(randrange(10)) is None:

        print('f: got 0')



    if g(randrange(10)) is None:  # <-- unreachable but not flagged

        print('g: got 0')

mypy --strict --warn-unreachable does not raise any warnings, but it should. So this is a FALSE NEGATIVE bug. Or a new feature, whatever, but in any case this situation should be flagged.

Originally posted by @nickdrozd in #18386

This might be intentional, but I think it's counterintuitive and I can't really see a benefit. Making an issue to make sure I get around to investigating this.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par reproduire l’exemple fourni avec mypy --strict --warn-unreachable et confirmez que la comparaison impliquant g n’est pas signalée. Suivez l’analyse --warn-unreachable des comparaisons avec None ; le travail est terminé lorsque la comparaison inutile est diagnostiquée sans signaler à tort la comparaison atteignable impliquant f.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
compilers
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.