File tree Expand file tree Collapse file tree 2 files changed +11
-19
lines changed
Expand file tree Collapse file tree 2 files changed +11
-19
lines changed Original file line number Diff line number Diff line change @@ -647,6 +647,8 @@ def test_simplified_union_with_str_instance_literals(self) -> None:
647647 def test_simplified_union_with_mixed_str_literals (self ) -> None :
648648 fx = self .fx
649649
650+ self .assert_simplified_union ([fx .lit_str1 , fx .lit_str1_inst ], fx .lit_str1_inst )
651+
650652 self .assert_simplified_union (
651653 [fx .lit_str1 , fx .lit_str2 , fx .lit_str3_inst ],
652654 UnionType ([fx .lit_str1 , fx .lit_str2 , fx .lit_str3_inst ]),
Original file line number Diff line number Diff line change @@ -602,25 +602,15 @@ def make_simplified_union(
602602 simplified_set = try_contracting_literals_in_union (simplified_set )
603603
604604 # Step 5: Combine Literals and Instances with LKVs, e.g. Literal[1]?, Literal[1] -> Literal[1]?
605- new_items = []
606- for item in simplified_set :
607- if isinstance (item , LiteralType ):
608- # scan if there is an Instance with a last_known_value that matches
609- for other in simplified_set :
610- if (
611- isinstance (other , Instance )
612- and other .last_known_value is not None
613- and item == other .last_known_value
614- ):
615- # do not include item
616- break
617- else :
618- new_items .append (item )
619- else :
620- # If the item is not a LiteralType, we can use it directly.
621- new_items .append (item )
622-
623- result = get_proper_type (UnionType .make_union (new_items , line , column ))
605+ proper_items : list [ProperType ] = list (map (get_proper_type , simplified_set ))
606+ last_known_values : list [LiteralType | None ] = [
607+ p_t .last_known_value if isinstance (p_t , Instance ) else None for p_t in proper_items
608+ ]
609+ simplified_set = [
610+ item for item , p_t in zip (simplified_set , proper_items ) if p_t not in last_known_values
611+ ]
612+
613+ result = get_proper_type (UnionType .make_union (simplified_set , line , column ))
624614
625615 nitems = len (items )
626616 if nitems > 1 and (
You can’t perform that action at this time.
0 commit comments