ruff/crates
Brent Westbrook e7f38fe74b
[red-knot] Detect semantic syntax errors (#17463)
Summary
--

This PR extends semantic syntax error detection to red-knot. The main
changes here are:

1. Adding `SemanticSyntaxChecker` and `Vec<SemanticSyntaxError>` fields
to the `SemanticIndexBuilder`
2. Calling `SemanticSyntaxChecker::visit_stmt` and `visit_expr` in the
`SemanticIndexBuilder`'s `visit_stmt` and `visit_expr` methods
3. Implementing `SemanticSyntaxContext` for `SemanticIndexBuilder`
4. Adding new mdtests to test the context implementation and show
diagnostics

(3) is definitely the trickiest and required (I think) a minor addition
to the `SemanticIndexBuilder`. I tried to look around for existing code
performing the necessary checks, but I definitely could have missed
something or misused the existing code even when I found it.

There's still one TODO around `global` statement handling. I don't think
there's an existing way to look this up, but I'm happy to work on that
here or in a separate PR. This currently only affects detection of one
error (`LoadBeforeGlobalDeclaration` or
[PLE0118](https://docs.astral.sh/ruff/rules/load-before-global-declaration/)
in ruff), so it's not too big of a problem even if we leave the TODO.

Test Plan
--

New mdtests, as well as new errors for existing mdtests

---------

Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2025-04-23 09:52:58 -04:00
..
red_knot red_knot_python_semantic: migrate types/diagnostic to new diagnostics 2025-04-22 12:08:03 -04:00
red_knot_ide [red-knot] Detect version-related syntax errors (#16379) 2025-04-17 14:00:30 -04:00
red_knot_project [red-knot] Early return from project.is_file_open for vendored files (#17580) 2025-04-23 15:32:41 +02:00
red_knot_python_semantic [red-knot] Detect semantic syntax errors (#17463) 2025-04-23 09:52:58 -04:00
red_knot_server Server: Use min instead of max to limit the number of threads (#17421) 2025-04-18 01:32:12 +05:30
red_knot_test [red-knot] Detect version-related syntax errors (#16379) 2025-04-17 14:00:30 -04:00
red_knot_vendored Sync vendored typeshed stubs (#17402) 2025-04-15 09:16:42 +02:00
red_knot_wasm Use concise message to show diagnostics in playground (#17357) 2025-04-11 22:44:24 +05:30
ruff [minor] Delete outdated TODO comment (#17565) 2025-04-22 20:23:08 +00:00
ruff_annotate_snippets ruff_annotate_snippets: address unused code warnings 2025-04-07 08:24:08 -04:00
ruff_benchmark [red-knot] make large-union benchmark slow again (#17418) 2025-04-16 14:05:42 +00:00
ruff_cache
ruff_db [red-knot] Detect semantic syntax errors (#17463) 2025-04-23 09:52:58 -04:00
ruff_dev Upgrade to Rust 1.86 and bump MSRV to 1.84 (#17171) 2025-04-03 15:59:44 +00:00
ruff_diagnostics
ruff_formatter Upgrade to Rust 1.86 and bump MSRV to 1.84 (#17171) 2025-04-03 15:59:44 +00:00
ruff_graph [red-knot] Detect version-related syntax errors (#16379) 2025-04-17 14:00:30 -04:00
ruff_index [red-knot] Don't use separate ID types for each alist (#16415) 2025-02-28 14:55:55 -05:00
ruff_linter [red-knot] Detect semantic syntax errors (#17463) 2025-04-23 09:52:58 -04:00
ruff_macros Upgrade to Rust 1.86 and bump MSRV to 1.84 (#17171) 2025-04-03 15:59:44 +00:00
ruff_notebook Upgrade to Rust 1.86 and bump MSRV to 1.84 (#17171) 2025-04-03 15:59:44 +00:00
ruff_python_ast Remove redundant type_to_visitor_function entries (#17564) 2025-04-23 09:27:00 +02:00
ruff_python_ast_integration_tests Visit Identifier node as part of the SourceOrderVisitor (#17110) 2025-04-01 16:58:09 +02:00
ruff_python_codegen Upgrade to Rust 1.86 and bump MSRV to 1.84 (#17171) 2025-04-03 15:59:44 +00:00
ruff_python_formatter Don't add chaperone space after escaped quote in triple quote (#17216) 2025-04-11 10:21:47 +02:00
ruff_python_index
ruff_python_literal
ruff_python_parser [red-knot] Detect semantic syntax errors (#17463) 2025-04-23 09:52:58 -04:00
ruff_python_resolver Upgrade to Rust 1.86 and bump MSRV to 1.84 (#17171) 2025-04-03 15:59:44 +00:00
ruff_python_semantic Refactor semantic syntax error scope handling (#17314) 2025-04-09 14:23:29 -04:00
ruff_python_stdlib
ruff_python_trivia [red-knot] Ignore surrounding whitespace when looking for <!-- snapshot-diagnostics --> directives in mdtests (#16380) 2025-02-27 13:25:31 +00:00
ruff_python_trivia_integration_tests Pass ParserOptions to the parser (#16220) 2025-02-19 10:50:50 -05:00
ruff_server [red-knot] Don't use latency-sensitive for handlers (#17227) 2025-04-08 08:33:30 +02:00
ruff_source_file
ruff_text_size
ruff_wasm Bump 0.11.6 (#17449) 2025-04-17 09:20:29 -04:00
ruff_workspace Use python.typing.org for typing documentation links (#17323) 2025-04-09 20:38:20 +02:00