mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-04 10:48:32 +00:00
[red-knot] Add control flow support for match statement (#13241)
## Summary This PR adds support for control flow for match statement. It also adds the necessary infrastructure required for narrowing constraints in case blocks and implements the logic for `PatternMatchSingleton` which is either `None` / `True` / `False`. Even after this the inferred type doesn't get simplified completely, there's a TODO for that in the test code. ## Test Plan Add test cases for control flow for (a) when there's a wildcard pattern and (b) when there isn't. There's also a test case to verify the narrowing logic. --------- Co-authored-by: Carl Meyer <carl@astral.sh>
This commit is contained in:
parent
6f53aaf931
commit
62c7d8f6ba
9 changed files with 321 additions and 37 deletions
|
@ -0,0 +1,16 @@
|
|||
use ruff_python_parser::parse_module;
|
||||
|
||||
#[test]
|
||||
fn pattern_is_wildcard() {
|
||||
let source_code = r"
|
||||
match subject:
|
||||
case _ as x: ...
|
||||
case _ | _: ...
|
||||
case _: ...
|
||||
";
|
||||
let parsed = parse_module(source_code).unwrap();
|
||||
let cases = &parsed.syntax().body[0].as_match_stmt().unwrap().cases;
|
||||
for case in cases {
|
||||
assert!(case.pattern.is_wildcard());
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue