@@ -925,6 +925,35 @@ def test_or_type_operator_with_SpecialForm(self):
925925 assert typing .Optional [int ] | str == typing .Union [int , str , None ]
926926 assert typing .Union [int , bool ] | str == typing .Union [int , bool , str ]
927927
928+ def test_or_type_operator_with_Literal (self ):
929+ Literal = typing .Literal
930+ self .assertEqual ((Literal [1 ] | Literal [2 ]).__args__ ,
931+ (Literal [1 ], Literal [2 ]))
932+
933+ self .assertEqual ((Literal [0 ] | Literal [False ]).__args__ ,
934+ (Literal [0 ], Literal [False ]))
935+ self .assertEqual ((Literal [1 ] | Literal [True ]).__args__ ,
936+ (Literal [1 ], Literal [True ]))
937+
938+ self .assertEqual (Literal [1 ] | Literal [1 ], Literal [1 ])
939+ self .assertEqual (Literal ['a' ] | Literal ['a' ], Literal ['a' ])
940+
941+ import enum
942+ class Ints (enum .IntEnum ):
943+ A = 0
944+ B = 1
945+
946+ self .assertEqual (Literal [Ints .A ] | Literal [Ints .A ], Literal [Ints .A ])
947+ self .assertEqual (Literal [Ints .B ] | Literal [Ints .B ], Literal [Ints .B ])
948+
949+ self .assertEqual ((Literal [Ints .B ] | Literal [Ints .A ]).__args__ ,
950+ (Literal [Ints .B ], Literal [Ints .A ]))
951+
952+ self .assertEqual ((Literal [0 ] | Literal [Ints .A ]).__args__ ,
953+ (Literal [0 ], Literal [Ints .A ]))
954+ self .assertEqual ((Literal [1 ] | Literal [Ints .B ]).__args__ ,
955+ (Literal [1 ], Literal [Ints .B ]))
956+
928957 def test_or_type_repr (self ):
929958 assert repr (int | str ) == "int | str"
930959 assert repr ((int | str ) | list ) == "int | str | list"
0 commit comments