mirror of
https://github.com/astral-sh/ruff.git
synced 2025-11-19 12:16:43 +00:00
[ty] Avoid duplicate diagnostics during multi-inference of standalone expressions (#21056)
## Summary Resolves https://github.com/astral-sh/ty/issues/1428.
This commit is contained in:
parent
adbf05802a
commit
f17ddd62ad
2 changed files with 20 additions and 1 deletions
|
|
@ -284,6 +284,8 @@ def _(flag: bool):
|
|||
|
||||
Diagnostics unrelated to the type-context are only reported once:
|
||||
|
||||
`expression.py`:
|
||||
|
||||
```py
|
||||
def f[T](x: T) -> list[T]:
|
||||
return [x]
|
||||
|
|
@ -307,3 +309,18 @@ def _(x: int):
|
|||
# error: [possibly-unresolved-reference] "Name `z` used when possibly not defined"
|
||||
y(f(True), [z])
|
||||
```
|
||||
|
||||
`standalone_expression.py`:
|
||||
|
||||
```py
|
||||
def f(_: str): ...
|
||||
def g(_: str): ...
|
||||
def _(a: object, b: object, flag: bool):
|
||||
if flag:
|
||||
x = f
|
||||
else:
|
||||
x = g
|
||||
|
||||
# error: [unsupported-operator] "Operator `>` is not supported for types `object` and `object`"
|
||||
x(f"{'a' if a > b else 'b'}")
|
||||
```
|
||||
|
|
|
|||
|
|
@ -97,8 +97,10 @@ impl<'db, 'ast> InferContext<'db, 'ast> {
|
|||
}
|
||||
|
||||
pub(crate) fn extend(&mut self, other: &TypeCheckDiagnostics) {
|
||||
if !self.is_in_multi_inference() {
|
||||
self.diagnostics.get_mut().extend(other);
|
||||
}
|
||||
}
|
||||
|
||||
pub(super) fn is_lint_enabled(&self, lint: &'static LintMetadata) -> bool {
|
||||
LintDiagnosticGuardBuilder::severity_and_source(self, lint).is_some()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue