@@ -357,9 +357,7 @@ def __init__(
357
357
self ._arg_infer_context_cache = None
358
358
359
359
self .overload_stack_depth = 0
360
- self .ops_stack_depth = 0
361
360
self ._args_cache : dict [tuple [int , ...], list [Type ]] = {}
362
- self ._ops_cache : dict [int , Type ] = {}
363
361
364
362
def reset (self ) -> None :
365
363
self .resolved_type = {}
@@ -1688,14 +1686,6 @@ def overload_context(self) -> Iterator[None]:
1688
1686
if self .overload_stack_depth == 0 :
1689
1687
self ._args_cache .clear ()
1690
1688
1691
- @contextmanager
1692
- def ops_context (self ) -> Iterator [None ]:
1693
- self .ops_stack_depth += 1
1694
- yield
1695
- self .ops_stack_depth -= 1
1696
- if self .ops_stack_depth == 0 :
1697
- self ._ops_cache .clear ()
1698
-
1699
1689
def check_callable_call (
1700
1690
self ,
1701
1691
callee : CallableType ,
@@ -3502,9 +3492,6 @@ def visit_op_expr(self, e: OpExpr) -> Type:
3502
3492
if isinstance (e .left , StrExpr ):
3503
3493
return self .strfrm_checker .check_str_interpolation (e .left , e .right )
3504
3494
3505
- key = id (e )
3506
- if key in self ._ops_cache :
3507
- return self ._ops_cache [key ]
3508
3495
left_type = self .accept (e .left )
3509
3496
3510
3497
proper_left_type = get_proper_type (left_type )
@@ -3574,30 +3561,28 @@ def visit_op_expr(self, e: OpExpr) -> Type:
3574
3561
)
3575
3562
3576
3563
if e .op in operators .op_methods :
3577
- with self .ops_context ():
3578
- method = operators .op_methods [e .op ]
3579
- if use_reverse is UseReverse .DEFAULT or use_reverse is UseReverse .NEVER :
3580
- result , method_type = self .check_op (
3581
- method ,
3582
- base_type = left_type ,
3583
- arg = e .right ,
3584
- context = e ,
3585
- allow_reverse = use_reverse is UseReverse .DEFAULT ,
3586
- )
3587
- elif use_reverse is UseReverse .ALWAYS :
3588
- result , method_type = self .check_op (
3589
- # The reverse operator here gives better error messages:
3590
- operators .reverse_op_methods [method ],
3591
- base_type = self .accept (e .right ),
3592
- arg = e .left ,
3593
- context = e ,
3594
- allow_reverse = False ,
3595
- )
3596
- else :
3597
- assert_never (use_reverse )
3598
- e .method_type = method_type
3599
- self ._ops_cache [key ] = result
3600
- return result
3564
+ method = operators .op_methods [e .op ]
3565
+ if use_reverse is UseReverse .DEFAULT or use_reverse is UseReverse .NEVER :
3566
+ result , method_type = self .check_op (
3567
+ method ,
3568
+ base_type = left_type ,
3569
+ arg = e .right ,
3570
+ context = e ,
3571
+ allow_reverse = use_reverse is UseReverse .DEFAULT ,
3572
+ )
3573
+ elif use_reverse is UseReverse .ALWAYS :
3574
+ result , method_type = self .check_op (
3575
+ # The reverse operator here gives better error messages:
3576
+ operators .reverse_op_methods [method ],
3577
+ base_type = self .accept (e .right ),
3578
+ arg = e .left ,
3579
+ context = e ,
3580
+ allow_reverse = False ,
3581
+ )
3582
+ else :
3583
+ assert_never (use_reverse )
3584
+ e .method_type = method_type
3585
+ return result
3601
3586
else :
3602
3587
raise RuntimeError (f"Unknown operator { e .op } " )
3603
3588
0 commit comments