ruff/python/py-fuzzer
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
..
fuzz.py Start detecting version-related syntax errors in the parser (#16090) 2025-02-25 23:03:48 -05:00
pyproject.toml Turn the fuzz-parser script into a properly packaged Python project (#14606) 2024-11-27 08:09:04 +00:00
README.md py-fuzzer: recommend using uvx rather than uv run to run the fuzzer (#14645) 2024-11-27 22:19:52 +00:00
uv.lock Turn the fuzz-parser script into a properly packaged Python project (#14606) 2024-11-27 08:09:04 +00:00

py-fuzzer

A fuzzer script to run Ruff executables on randomly generated (but syntactically valid) Python source-code files.

Run uvx --from ./python/py-fuzzer fuzz -h from the repository root for more information and example invocations (requires uv to be installed).