mirror of
https://github.com/astral-sh/ruff
synced 2026-01-07 22:54:28 -05:00
## Summary
This PR is a collaboration with @AlexWaygood from our pairing session
last Friday.
The main goal here is removing `ruff_linter::message::OldDiagnostic` in
favor of
using `ruff_db::diagnostic::Diagnostic` directly. This involved a few
major steps:
- Transferring the fields
- Transferring the methods and trait implementations, where possible
- Converting some constructor methods to free functions
- Moving the `SecondaryCode` struct
- Updating the method names
I'm hoping that some of the methods, especially those in the
`expect_ruff_*`
family, won't be necessary long-term, but I avoided trying to replace
them
entirely for now to keep the already-large diff a bit smaller.
### Related refactors
Alex and I noticed a few refactoring opportunities while looking at the
code,
specifically the very similar implementations for
`create_parse_diagnostic`,
`create_unsupported_syntax_diagnostic`, and
`create_semantic_syntax_diagnostic`.
We combined these into a single generic function, which I then copied
into
`ruff_linter::message` with some small changes and a TODO to combine
them in the
future.
I also deleted the `DisplayParseErrorType` and `TruncateAtNewline` types
for
reporting parse errors. These were added in #4124, I believe to work
around the
error messages from LALRPOP. Removing these didn't affect any tests, so
I think
they were unnecessary now that we fully control the error messages from
the
parser.
On a more minor note, I factored out some calls to the
`OldDiagnostic::filename`
(now `Diagnostic::expect_ruff_filename`) function to avoid repeatedly
allocating
`String`s in some places.
### Snapshot changes
The `show_statistics_syntax_errors` integration test changed because the
`OldDiagnostic::name` method used `syntax-error` instead of
`invalid-syntax`
like in ty. I think this (`--statistics`) is one of the only places we
actually
use this name for syntax errors, so I hope this is okay. An alternative
is to
use `syntax-error` in ty too.
The other snapshot changes are from removing this code, as discussed on
[Discord](https://discord.com/channels/1039017663004942429/1228460843033821285/1388252408848847069):
34052a1185/crates/ruff_linter/src/message/mod.rs (L128-L135)
I think both of these are technically breaking changes, but they only
affect
syntax errors and are very narrow in scope, while also pretty
substantially
simplifying the refactor, so I hope they're okay to include in a patch
release.
## Test plan
Existing tests, with the adjustments mentioned above
---------
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
55 lines
1.5 KiB
TOML
55 lines
1.5 KiB
TOML
[package]
|
|
name = "ruff_server"
|
|
version = "0.2.2"
|
|
publish = false
|
|
authors = { workspace = true }
|
|
edition = { workspace = true }
|
|
rust-version = { workspace = true }
|
|
homepage = { workspace = true }
|
|
documentation = { workspace = true }
|
|
repository = { workspace = true }
|
|
license = { workspace = true }
|
|
|
|
[lib]
|
|
|
|
[dependencies]
|
|
ruff_db = { workspace = true }
|
|
ruff_diagnostics = { workspace = true }
|
|
ruff_formatter = { workspace = true }
|
|
ruff_linter = { workspace = true }
|
|
ruff_notebook = { workspace = true }
|
|
ruff_python_ast = { workspace = true }
|
|
ruff_python_codegen = { workspace = true }
|
|
ruff_python_formatter = { workspace = true }
|
|
ruff_python_index = { workspace = true }
|
|
ruff_python_parser = { workspace = true }
|
|
ruff_source_file = { workspace = true }
|
|
ruff_text_size = { workspace = true }
|
|
ruff_workspace = { workspace = true }
|
|
|
|
anyhow = { workspace = true }
|
|
crossbeam = { workspace = true }
|
|
ignore = { workspace = true }
|
|
jod-thread = { workspace = true }
|
|
lsp-server = { workspace = true }
|
|
lsp-types = { workspace = true }
|
|
regex = { workspace = true }
|
|
rustc-hash = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
shellexpand = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
toml = { workspace = true }
|
|
tracing = { workspace = true }
|
|
tracing-log = { workspace = true }
|
|
tracing-subscriber = { workspace = true, features = ["chrono"] }
|
|
|
|
[dev-dependencies]
|
|
insta = { workspace = true }
|
|
|
|
[target.'cfg(target_vendor = "apple")'.dependencies]
|
|
libc = { workspace = true }
|
|
|
|
[lints]
|
|
workspace = true
|