-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Server: Allow FixAll action in presence of version-specific syntax errors
#16848
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
ntBre
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for jumping on this, LGTM! Just need to propagate the changes to the fuzz crate it looks like.
dhruvmanila
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the quick fix!
I think we should explore an alternate option to avoid the duplication here as a follow-up.
| has_no_unsupported_syntax_errors: bool, | ||
| } | ||
|
|
||
| impl LinterResult { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's a bit unfortunate that these methods need to be repeated on both Parsed and LinterResult. We could explore another approach to avoid duplication, not necessarily in this PR, that utilizes bitflags for these two booleans like SyntaxFlags that can then be queried to ask whether there are parse errors or unsupported syntax errors.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed - the current approach seems like it'd be easy for the two to fall out of sync
|
One minor nit: we mainly use the |
server] Allow FixAll action in presence of version-specific syntax errorsFixAll action in presence of version-specific syntax errors
* main: (26 commits) Use the common `OperatorPrecedence` for the parser (#16747) [red-knot] Check subtype relation between callable types (#16804) [red-knot] Check whether two callable types are equivalent (#16698) [red-knot] Ban most `Type::Instance` types in type expressions (#16872) Special-case value-expression inference of special form subscriptions (#16877) [syntax-errors] Fix star annotation before Python 3.11 (#16878) Recognize `SyntaxError:` as an error code for ecosystem checks (#16879) [red-knot] add test cases result in false positive errors (#16856) Bump 0.11.1 (#16871) Allow discovery of venv in VIRTUAL_ENV env variable (#16853) Split git pathspecs in change determination onto separate lines (#16869) Use the correct base commit for change determination (#16857) Separate `BitXorOr` into `BitXor` and `BitOr` precedence (#16844) Server: Allow `FixAll` action in presence of version-specific syntax errors (#16848) [`refurb`] Fix starred expressions fix (`FURB161`) (#16550) [`flake8-executable`] Add pytest and uv run to help message for `shebang-missing-python` (`EXE003`) (#16855) Show more precise messages in invalid type expressions (#16850) [`flake8-executables`] Allow `uv run` in shebang line for `shebang-missing-python` (`EXE003`) (#16849) Add `--exit-non-zero-on-format` (#16009) [red-knot] Ban list literals in most contexts in type expressions (#16847) ...
The single flag
has_syntax_erroronLinterResultis replaced with two (private) flags:has_valid_syntaxandhas_no_unsupported_syntax_errors, which record whether there areParseErrors orUnsupportedSyntaxErrors, respectively. Only the former is used to prevent aFixAllaction.An attempt has been made to make consistent the usage of the phrases "valid syntax" (which seems to be used to refer only to parser errors) and "syntax error" (which refers to both parser errors and version-specific syntax errors).
Remark for review:
crates/ruff/src/diagnostics.rsis actually a small diff, not sure what happened there. If you pull it down locally andgit diff --ignore-all-spaceit looks better.Closes #16841
Test:
Screen.Recording.2025-03-19.at.9.30.51.AM.mov