mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-29 21:34:57 +00:00
[ty] Use invalid-assignment
error code for invalid assignments to ClassVar
s (#20156)
## Summary This error is about assigning to attributes rather than reading attributes, so I think `invalid-assignment` makes more sense than `invalid-attribute-access` ## Test Plan existing mdtests updated
This commit is contained in:
parent
fa7798ddd9
commit
9b1b58a451
6 changed files with 15 additions and 15 deletions
|
@ -699,7 +699,7 @@ reveal_type(c_instance.pure_class_variable1) # revealed: str
|
|||
|
||||
reveal_type(c_instance.pure_class_variable2) # revealed: Unknown | Literal[1]
|
||||
|
||||
# error: [invalid-attribute-access] "Cannot assign to ClassVar `pure_class_variable1` from an instance of type `C`"
|
||||
# error: [invalid-assignment] "Cannot assign to ClassVar `pure_class_variable1` from an instance of type `C`"
|
||||
c_instance.pure_class_variable1 = "value set on instance"
|
||||
|
||||
C.pure_class_variable1 = "overwritten on class"
|
||||
|
|
|
@ -53,7 +53,7 @@ C.attr = 1 # fine
|
|||
C.attr = "wrong" # error: [invalid-assignment]
|
||||
|
||||
instance = C()
|
||||
instance.attr = 1 # error: [invalid-attribute-access]
|
||||
instance.attr = 1 # error: [invalid-assignment]
|
||||
```
|
||||
|
||||
## Unknown attributes
|
||||
|
|
|
@ -1387,7 +1387,7 @@ class ClassVarXProto(Protocol):
|
|||
def f(obj: ClassVarXProto):
|
||||
reveal_type(obj.x) # revealed: int
|
||||
reveal_type(type(obj).x) # revealed: int
|
||||
obj.x = 42 # error: [invalid-attribute-access] "Cannot assign to ClassVar `x` from an instance of type `ClassVarXProto`"
|
||||
obj.x = 42 # error: [invalid-assignment] "Cannot assign to ClassVar `x` from an instance of type `ClassVarXProto`"
|
||||
|
||||
class InstanceAttrX:
|
||||
x: int
|
||||
|
|
|
@ -21,7 +21,7 @@ mdtest path: crates/ty_python_semantic/resources/mdtest/diagnostics/attribute_as
|
|||
7 | C.attr = "wrong" # error: [invalid-assignment]
|
||||
8 |
|
||||
9 | instance = C()
|
||||
10 | instance.attr = 1 # error: [invalid-attribute-access]
|
||||
10 | instance.attr = 1 # error: [invalid-assignment]
|
||||
```
|
||||
|
||||
# Diagnostics
|
||||
|
@ -41,13 +41,13 @@ info: rule `invalid-assignment` is enabled by default
|
|||
```
|
||||
|
||||
```
|
||||
error[invalid-attribute-access]: Cannot assign to ClassVar `attr` from an instance of type `C`
|
||||
error[invalid-assignment]: Cannot assign to ClassVar `attr` from an instance of type `C`
|
||||
--> src/mdtest_snippet.py:10:1
|
||||
|
|
||||
9 | instance = C()
|
||||
10 | instance.attr = 1 # error: [invalid-attribute-access]
|
||||
10 | instance.attr = 1 # error: [invalid-assignment]
|
||||
| ^^^^^^^^^^^^^
|
||||
|
|
||||
info: rule `invalid-attribute-access` is enabled by default
|
||||
info: rule `invalid-assignment` is enabled by default
|
||||
|
||||
```
|
||||
|
|
|
@ -26,15 +26,15 @@ reveal_type(C.e) # revealed: int
|
|||
|
||||
c = C()
|
||||
|
||||
# error: [invalid-attribute-access]
|
||||
# error: [invalid-assignment]
|
||||
c.a = 2
|
||||
# error: [invalid-attribute-access]
|
||||
# error: [invalid-assignment]
|
||||
c.b = 2
|
||||
# error: [invalid-attribute-access]
|
||||
# error: [invalid-assignment]
|
||||
c.c = 2
|
||||
# error: [invalid-attribute-access]
|
||||
# error: [invalid-assignment]
|
||||
c.d = 2
|
||||
# error: [invalid-attribute-access]
|
||||
# error: [invalid-assignment]
|
||||
c.e = 2
|
||||
```
|
||||
|
||||
|
@ -58,7 +58,7 @@ class C:
|
|||
from module import C
|
||||
|
||||
c = C()
|
||||
c.a = 2 # error: [invalid-attribute-access]
|
||||
c.a = 2 # error: [invalid-assignment]
|
||||
```
|
||||
|
||||
## Conflicting type qualifiers
|
||||
|
@ -82,7 +82,7 @@ reveal_type(C.a) # revealed: int | str
|
|||
|
||||
c = C()
|
||||
|
||||
# error: [invalid-attribute-access]
|
||||
# error: [invalid-assignment]
|
||||
c.a = 2
|
||||
```
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue