File tree Expand file tree Collapse file tree 2 files changed +13
-1
lines changed Expand file tree Collapse file tree 2 files changed +13
-1
lines changed Original file line number Diff line number Diff line change @@ -4047,14 +4047,16 @@ def check_indexed_assignment(
4047
4047
)
4048
4048
4049
4049
lvalue .method_type = method_type
4050
- self .expr_checker .check_method_call (
4050
+ res_type , _ = self .expr_checker .check_method_call (
4051
4051
"__setitem__" ,
4052
4052
basetype ,
4053
4053
method_type ,
4054
4054
[lvalue .index , rvalue ],
4055
4055
[nodes .ARG_POS , nodes .ARG_POS ],
4056
4056
context ,
4057
4057
)
4058
+ if isinstance (get_proper_type (res_type ), UninhabitedType ):
4059
+ self .binder .unreachable ()
4058
4060
4059
4061
def try_infer_partial_type_from_indexed_assignment (
4060
4062
self , lvalue : IndexExpr , rvalue : Expression
Original file line number Diff line number Diff line change @@ -1423,3 +1423,13 @@ def f(value: None) -> None:
1423
1423
1424
1424
x = force_forward_ref()
1425
1425
[builtins fixtures/exception.pyi]
1426
+
1427
+ [case testSetitemNoReturn]
1428
+ # flags: --warn-unreachable
1429
+ from typing import NoReturn
1430
+ class Foo:
1431
+ def __setitem__(self, key: str, value: str) -> NoReturn:
1432
+ raise Exception
1433
+ Foo()['a'] = 'a'
1434
+ x = 0 # E: Statement is unreachable
1435
+ [builtins fixtures/exception.pyi]
You can’t perform that action at this time.
0 commit comments