@@ -360,6 +360,9 @@ def __init__(
360360 ] = {}
361361 self .in_lambda_expr = False
362362
363+ self ._literal_true : Instance | None = None
364+ self ._literal_false : Instance | None = None
365+
363366 def reset (self ) -> None :
364367 self .resolved_type = {}
365368 self .expr_cache .clear ()
@@ -3428,11 +3431,19 @@ def infer_literal_expr_type(self, value: LiteralValue, fallback_name: str) -> Ty
34283431 if self .is_literal_context ():
34293432 return LiteralType (value = value , fallback = typ )
34303433 else :
3431- return typ .copy_modified (
3432- last_known_value = LiteralType (
3433- value = value , fallback = typ , line = typ .line , column = typ .column
3434- )
3435- )
3434+ if value is True :
3435+ if self ._literal_true is None :
3436+ self ._literal_true = typ .copy_modified (
3437+ last_known_value = LiteralType (value = value , fallback = typ )
3438+ )
3439+ return self ._literal_true
3440+ if value is False :
3441+ if self ._literal_false is None :
3442+ self ._literal_false = typ .copy_modified (
3443+ last_known_value = LiteralType (value = value , fallback = typ )
3444+ )
3445+ return self ._literal_false
3446+ return typ .copy_modified (last_known_value = LiteralType (value = value , fallback = typ ))
34363447
34373448 def concat_tuples (self , left : TupleType , right : TupleType ) -> TupleType :
34383449 """Concatenate two fixed length tuples."""
0 commit comments