[ty] Only calculate information for unresolved-reference subdiagnostic if we know we'll emit the diagnostic (#18465)
## Summary This optimizes some of the logic added in https://github.com/astral-sh/ruff/pull/18444. In general, we only calculate information for subdiagnostics if we know we'll actually emit the diagnostic. The check to see whether we'll emit the diagnostic is work we'll definitely have to do whereas the the work to gather information for a subdiagnostic isn't work we necessarily have to do if the diagnostic isn't going to be emitted at all. This PR makes us lazier about gathering the information we need for the subdiagnostic, and moves all the subdiagnostic logic into one function rather than having some `unresolved-reference` subdiagnostic logic in `infer.rs` and some in `diagnostic.rs`. ## Test Plan `cargo test -p ty_python_semantic`
This commit is contained in:
@@ -46,7 +46,7 @@ error[unresolved-reference]: Name `x` used when not defined
|
||||
7 | class Foo:
|
||||
8 | x: int = 1
|
||||
|
|
||||
info: An attribute `x` is available, consider using `self.x`
|
||||
info: An attribute `x` is available: consider using `self.x`
|
||||
info: rule `unresolved-reference` is enabled by default
|
||||
|
||||
```
|
||||
@@ -62,7 +62,7 @@ error[unresolved-reference]: Name `x` used when not defined
|
||||
13 | class Foo:
|
||||
14 | def __init__(self):
|
||||
|
|
||||
info: An attribute `x` is available, consider using `self.x`
|
||||
info: An attribute `x` is available: consider using `self.x`
|
||||
info: rule `unresolved-reference` is enabled by default
|
||||
|
||||
```
|
||||
@@ -76,7 +76,7 @@ error[unresolved-reference]: Name `x` used when not defined
|
||||
19 | y = x
|
||||
| ^
|
||||
|
|
||||
info: An attribute `x` is available, consider using `self.x`
|
||||
info: An attribute `x` is available: consider using `self.x`
|
||||
info: rule `unresolved-reference` is enabled by default
|
||||
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user