@@ -143,20 +143,23 @@ class C:
143143 self .bound_in_body_declared_in_init: str | None
144144
145145 if flag:
146- # error: [invalid-assignment] "Object of type `Literal["a"]` is not assignable to attribute `bound_in_body_and_init` of type `int`"
147146 self .bound_in_body_and_init = " a"
148147
149148c_instance = C(True )
150149
151150reveal_type(c_instance.only_declared_in_body) # revealed: str | None
152151reveal_type(c_instance.only_declared_in_init) # revealed: str | None
153152reveal_type(c_instance.declared_in_body_and_init) # revealed: str | None
154-
155153reveal_type(c_instance.declared_in_body_defined_in_init) # revealed: str | None
156-
157154reveal_type(c_instance.bound_in_body_declared_in_init) # revealed: str | None
158-
159155reveal_type(c_instance.bound_in_body_and_init) # revealed: int | str
156+
157+ c_instance.only_declared_in_body = b " invalid" # error: [invalid-assignment]
158+ c_instance.only_declared_in_init = b " invalid" # error: [invalid-assignment]
159+ c_instance.declared_in_body_and_init = b " invalid" # error: [invalid-assignment]
160+ c_instance.declared_in_body_defined_in_init = b " invalid" # error: [invalid-assignment]
161+ c_instance.bound_in_body_declared_in_init = b " invalid" # error: [invalid-assignment]
162+ c_instance.bound_in_body_and_init = b " invalid" # error: [invalid-assignment]
160163```
161164
162165#### Variable defined in non-` __init__ ` method
@@ -827,7 +830,7 @@ reveal_type(C.pure_class_variable) # revealed: Literal["overwritten on class"]
827830c_instance = C()
828831reveal_type(c_instance.pure_class_variable) # revealed: str
829832
830- # TODO : should raise an error.
833+ # error: [possibly-missing-attribute]
831834c_instance.pure_class_variable = " value set on instance"
832835```
833836
@@ -1355,6 +1358,7 @@ def _(flag1: bool, flag2: bool):
13551358 reveal_type(C().x) # revealed: int | str
13561359
13571360 # error: [invalid-assignment] "Object of type `Literal[100]` is not assignable to attribute `x` on type `C1 | C2 | C3`"
1361+ # error: [possibly-missing-attribute]
13581362 C().x = 100
13591363```
13601364
@@ -1390,7 +1394,8 @@ def _(flag: bool, flag1: bool, flag2: bool):
13901394 reveal_type(C().x) # revealed: int | str | bytes
13911395
13921396 # error: [possibly-missing-attribute]
1393- # error: [invalid-assignment]
1397+ # error: [possibly-missing-attribute]
1398+ # error: [possibly-missing-attribute]
13941399 C().x = 100
13951400```
13961401
@@ -1439,6 +1444,7 @@ def _(flag: bool):
14391444 Bar.x = 3
14401445
14411446 reveal_type(Bar().x) # revealed: int
1447+ # error: [possibly-missing-attribute]
14421448 Bar().x = 3
14431449```
14441450
0 commit comments