Commits
Click on a commit to change the comparison rangeStandardize syntax error construction
Summary
--
This PR unifies the two different ways Ruff and ty construct syntax errors. Ruff
has been storing the primary message in the diagnostic itself, while ty attached
the message to the primary annotation:
```
> ruff check try.py
invalid-syntax: name capture `x` makes remaining patterns unreachable
--> try.py:2:10
|
1 | match 42:
2 | case x: ...
| ^
3 | case y: ...
|
Found 1 error.
> uvx ty check try.py
WARN ty is pre-release software and not ready for production use. Expect to encounter bugs, missing features, and fatal errors.
Checking ------------------------------------------------------------ 1/1 files error[invalid-syntax]
--> try.py:2:10
|
1 | match 42:
2 | case x: ...
| ^ name capture `x` makes remaining patterns unreachable
3 | case y: ...
|
Found 1 diagnostic
```
I think there are benefits to both approaches, and I do like ty's version, but I
feel like we should pick one (and it might help with #20901 eventually). I
slightly prefer Ruff's version, so I went with that. Hopefully this isn't too
controversial, but I'm happy to close this if it is.
Note that this shouldn't change any other diagnostic formats in ty because
[`Diagnostic::primary_message`](https://github.com/astral-sh/ruff/blob/98d27c412810e157f8a65ea75726d66676628225/crates/ruff_db/src/diagnostic/mod.rs#L174)
was already falling back to the primary annotation message if the diagnostic
message was empty. As a result, I think this change will partially resolve the
FIXME therein.
Test Plan
--
Existing tests with updated snapshots