mirror of
https://github.com/astral-sh/ruff.git
synced 2025-07-07 21:25:08 +00:00
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:   --------- Co-authored-by: Alex Waygood <alex.waygood@gmail.com>
This commit is contained in:
parent
b39a4ad01d
commit
78806361fd
14 changed files with 356 additions and 37 deletions
|
@ -58,7 +58,16 @@ def redknot_contains_bug(code: str, *, red_knot_executable: Path) -> bool:
|
|||
def ruff_contains_bug(code: str, *, ruff_executable: Path) -> bool:
|
||||
"""Return `True` if the code triggers a parser error."""
|
||||
completed_process = subprocess.run(
|
||||
[ruff_executable, "check", "--config", "lint.select=[]", "--no-cache", "-"],
|
||||
[
|
||||
ruff_executable,
|
||||
"check",
|
||||
"--config",
|
||||
"lint.select=[]",
|
||||
"--no-cache",
|
||||
"--target-version",
|
||||
"py313",
|
||||
"-",
|
||||
],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
input=code,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue