ruff/crates
Brent Westbrook 78806361fd
Start detecting version-related syntax errors in the parser (#16090)
## Summary

This PR builds on the changes in #16220 to pass a target Python version
to the parser. It also adds the `Parser::unsupported_syntax_errors` field, which
collects version-related syntax errors while parsing. These syntax
errors are then turned into `Message`s in ruff (in preview mode).

This PR only detects one syntax error (`match` statement before Python
3.10), but it has been pretty quick to extend to several other simple
errors (see #16308 for example).

## Test Plan

The current tests are CLI tests in the linter crate, but these could be
supplemented with inline parser tests after #16357.

I also tested the display of these syntax errors in VS Code:


![image](https://github.com/user-attachments/assets/062b4441-740e-46c3-887c-a954049ef26e)

![image](https://github.com/user-attachments/assets/101f55b8-146c-4d59-b6b0-922f19bcd0fa)

---------

Co-authored-by: Alex Waygood <alex.waygood@gmail.com>
2025-02-25 23:03:48 -05:00
..
red_knot [red-knot] Add argfile and windows glob path support (#16353) 2025-02-25 08:43:13 +01:00
red_knot_project Rename venv-path to python (#16347) 2025-02-24 19:41:06 +01:00
red_knot_python_semantic [red-knot] Rename constraint to predicate (#16382) 2025-02-25 14:52:40 -05:00
red_knot_server add diagnostic Span (couples File and TextRange) (#16101) 2025-02-11 14:55:12 -05:00
red_knot_test Rename venv-path to python (#16347) 2025-02-24 19:41:06 +01:00
red_knot_vendored Sync vendored typeshed stubs (#16173) 2025-02-15 10:01:34 +00:00
red_knot_wasm Use ast::PythonVersion internally in the formatter and linter (#16170) 2025-02-18 12:03:13 -05:00
ruff Start detecting version-related syntax errors in the parser (#16090) 2025-02-25 23:03:48 -05:00
ruff_annotate_snippets Fix docstring in ruff_annotate_snippets (#15748) 2025-01-26 22:25:29 -05:00
ruff_benchmark [red-knot] Add diagnostic for class-object access to pure instance variables (#16036) 2025-02-24 15:17:16 +01:00
ruff_cache
ruff_db [red-knot] Prefix Type::call and dunder_call with try (#16261) 2025-02-20 09:05:04 +00:00
ruff_dev Pass ParserOptions to the parser (#16220) 2025-02-19 10:50:50 -05:00
ruff_diagnostics Show errors for attempted fixes only when passed --verbose (#15237) 2025-01-03 08:50:13 -06:00
ruff_formatter Upgrade Rust toolchain to 1.84.0 (#15408) 2025-01-11 09:51:58 +01:00
ruff_graph Pass ParserOptions to the parser (#16220) 2025-02-19 10:50:50 -05:00
ruff_index [red-knot] Use arena-allocated association lists for narrowing constraints (#16306) 2025-02-25 10:58:56 -05:00
ruff_linter Start detecting version-related syntax errors in the parser (#16090) 2025-02-25 23:03:48 -05:00
ruff_macros Add knot.toml schema (#15735) 2025-02-07 10:59:40 +01:00
ruff_notebook Update Rust crate rand to 0.9.0 (#15899) 2025-02-03 12:25:57 +01:00
ruff_python_ast [flake8-self] Ignore attribute accesses on instance-like variables (SLF001) (#16149) 2025-02-23 10:00:49 +00:00
ruff_python_ast_integration_tests Pass ParserOptions to the parser (#16220) 2025-02-19 10:50:50 -05:00
ruff_python_codegen Pass ParserOptions to the parser (#16220) 2025-02-19 10:50:50 -05:00
ruff_python_formatter Rename ExprStringLiteral::as_unconcatenated_string() to ExprStringLiteral::as_single_part_string() (#16253) 2025-02-19 16:06:57 +00:00
ruff_python_index
ruff_python_literal Preserve triple quotes and prefixes for strings (#15818) 2025-02-04 08:41:06 -05:00
ruff_python_parser Start detecting version-related syntax errors in the parser (#16090) 2025-02-25 23:03:48 -05:00
ruff_python_resolver
ruff_python_semantic [flake8-self] Ignore attribute accesses on instance-like variables (SLF001) (#16149) 2025-02-23 10:00:49 +00:00
ruff_python_stdlib Revert "Add all PEP-585 names to UP006 rule" (#15250) 2025-01-04 12:23:53 +01:00
ruff_python_trivia [red-knot] Hand-written MDTest parser (#15926) 2025-02-04 14:01:53 +01:00
ruff_python_trivia_integration_tests Pass ParserOptions to the parser (#16220) 2025-02-19 10:50:50 -05:00
ruff_server Start detecting version-related syntax errors in the parser (#16090) 2025-02-25 23:03:48 -05:00
ruff_source_file [pyupgrade] Do not report when a UTF-8 comment is followed by a non-UTF-8 one (UP009) (#14728) 2024-12-11 10:30:41 +00:00
ruff_text_size [ruff] itertools.starmap(..., zip(...)) (RUF058) (#15483) 2025-01-16 15:18:12 +01:00
ruff_wasm Start detecting version-related syntax errors in the parser (#16090) 2025-02-25 23:03:48 -05:00
ruff_workspace Add per-file-target-version option (#16257) 2025-02-24 08:47:13 -05:00