`--warn-unreachable` doesn't flag unnecessary comparison to `None`
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Python
- Star
- 20.6k
- Fork
- 3.3k
- Chỉ số merge pull request
- Chỉ số pull request đang chờ
Mô tả
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-unreachabledoes 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.
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Bắt đầu bằng cách tái hiện ví dụ được cung cấp với mypy --strict --warn-unreachable và xác nhận rằng phép so sánh liên quan đến g không được báo cáo. Truy vết quá trình phân tích --warn-unreachable đối với các phép so sánh với None; được xem là hoàn tất khi phép so sánh không cần thiết được chẩn đoán mà không đánh dấu sai phép so sánh có thể đạt tới liên quan đến f.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- python
- Lĩnh vực
- compilers
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 45/100