ruff/crates
David Peter 2296627528
[red-knot] Precise inference for identity checks (#14109)
## Summary

Adds more precise type inference for `… is …` and `… is not …` identity
checks in some limited cases where we statically know the answer to be
either `Literal[True]` or `Literal[False]`.

I found this helpful while working on type inference for comparisons
involving intersection types, but I'm not sure if this is at all useful
for real world code (where the answer is most probably *not* statically
known). Note that we already have *type narrowing* for identity tests.
So while we are already able to generate constraints for things like `if
x is None`, we can now — in some limited cases — make an even stronger
conclusion and infer that the test expression itself is `Literal[False]`
(branch never taken) or `Literal[True]` (branch always taken).

## Test Plan

New Markdown tests
2024-11-05 19:48:52 +01:00
..
red_knot Enable nursery rules: 'redundant_clone', 'debug_assert_with_mut_call', and 'unused_peekable' (#13920) 2024-10-25 09:46:30 +02:00
red_knot_python_semantic [red-knot] Precise inference for identity checks (#14109) 2024-11-05 19:48:52 +01:00
red_knot_server Enable nursery rules: 'redundant_clone', 'debug_assert_with_mut_call', and 'unused_peekable' (#13920) 2024-10-25 09:46:30 +02:00
red_knot_test Extract LineIndex independent methods from Locator (#13938) 2024-10-28 07:53:41 +00:00
red_knot_vendored Sync vendored typeshed stubs (#14030) 2024-11-01 10:51:56 +00:00
red_knot_wasm Enable nursery rules: 'redundant_clone', 'debug_assert_with_mut_call', and 'unused_peekable' (#13920) 2024-10-25 09:46:30 +02:00
red_knot_workspace [red-knot] Remove lint-phase (#13922) 2024-10-25 18:40:52 +00:00
ruff Add links to missing related options within rule documentations (#13971) 2024-11-03 14:15:57 -05:00
ruff_benchmark [red-knot] Add MRO resolution for classes (#14027) 2024-11-04 13:31:38 +00:00
ruff_cache Fix cache key collisions for paths with separators (#12159) 2024-07-03 07:36:46 -05:00
ruff_db Give non-existent files a durability of at least Medium (#14034) 2024-11-01 16:44:30 +01:00
ruff_dev Alternate quotes for strings inside f-strings in preview (#13860) 2024-10-23 07:57:53 +02:00
ruff_diagnostics [Minor typo] Fix article in "an fix" (#12797) 2024-08-10 21:22:00 -04:00
ruff_formatter Join implicit concatenated strings when they fit on a line (#13663) 2024-10-24 11:52:22 +02:00
ruff_graph Bump MSRV to Rust 1.80 (#13826) 2024-10-20 10:55:36 +02:00
ruff_index [red-knot] small efficiency improvements and bugfixes to use-def map building (#12373) 2024-07-18 09:24:58 -07:00
ruff_linter Also remove trailing comma while fixing C409 and C419 (#14097) 2024-11-04 20:33:30 +00:00
ruff_macros Derive message formats macro support to string (#14093) 2024-11-04 18:06:25 +01:00
ruff_notebook Bump MSRV to Rust 1.80 (#13826) 2024-10-20 10:55:36 +02:00
ruff_python_ast Avoid cloning Name when looking up function and class types (#14092) 2024-11-04 15:52:59 +01:00
ruff_python_ast_integration_tests [internal] ComparableExpr (f)strings and bytes made invariant under concatenation (#13301) 2024-09-25 16:58:57 +02:00
ruff_python_codegen Extract LineIndex independent methods from Locator (#13938) 2024-10-28 07:53:41 +00:00
ruff_python_formatter Disallow single-line implicit concatenated strings (#13928) 2024-11-03 11:49:26 +00:00
ruff_python_index Extract LineIndex independent methods from Locator (#13938) 2024-10-28 07:53:41 +00:00
ruff_python_literal Remove some unused pub functions (#11576) 2024-05-28 09:56:51 -04:00
ruff_python_parser Short circuit lex_identifier if the name is longer or shorter than any known keyword (#13815) 2024-10-19 11:07:15 +00:00
ruff_python_resolver chore(deps): update rust crate insta to v1.38.0 (#10701) 2024-04-01 15:44:30 +00:00
ruff_python_semantic Extract LineIndex independent methods from Locator (#13938) 2024-10-28 07:53:41 +00:00
ruff_python_stdlib Regenerate known_stdlibs.rs with stdlibs 2024.10.25 (#13963) 2024-10-28 08:37:54 -04:00
ruff_python_trivia Extract LineIndex independent methods from Locator (#13938) 2024-10-28 07:53:41 +00:00
ruff_python_trivia_integration_tests Extract LineIndex independent methods from Locator (#13938) 2024-10-28 07:53:41 +00:00
ruff_server Fix server panic when undoing an edit (#14010) 2024-11-01 08:16:53 +01:00
ruff_source_file Extract LineIndex independent methods from Locator (#13938) 2024-10-28 07:53:41 +00:00
ruff_text_size Extract LineIndex independent methods from Locator (#13938) 2024-10-28 07:53:41 +00:00
ruff_wasm Bump version to 0.7.2 (#14039) 2024-11-01 19:09:07 +05:30
ruff_workspace Enable nursery rules: 'redundant_clone', 'debug_assert_with_mut_call', and 'unused_peekable' (#13920) 2024-10-25 09:46:30 +02:00