(🎁) `redundant-expression` doesn't report in `else` branch when both sides are narrowed
オープン
まだ誰も着手していません。
bug
- 主要言語
- Python
- スター
- 20.6k
- フォーク
- 3.3k
- PR マージ指標
- PR 指標を取得中
説明
def foo() -> bool:
return None == None
1 == 1
True == False
These codes show no warning about an always true check.
mypy in real life 😳
class Thing:
thing: str | None
def something(self, that: Thing) -> bool:
if self.thing is not None or that.thing is not None:
return True
else:
return self.thing == that.thing # no error, despite None == None
Would be nice if mypy could report on this code.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
提供されている foo と Thing の例を最小限の再現ケースとして使用し、次に mypy を実行して else 分岐で診断が欠落していることを確認します。関係する narrowing と冗長な式のチェックを追跡します。完了の条件は、妥当な narrowing の動作を後退させることなく、示されている常に真となる比較が報告されることです。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- python
- 領域
- compilers
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 45/100