@@ -1392,13 +1392,13 @@ else:
13921392 reveal_type(val) # N: Revealed type is "Union[__main__.A, None]"
13931393
13941394if val in (None,):
1395- reveal_type(val) # N: Revealed type is "None"
1395+ reveal_type(val) # N: Revealed type is "Union[__main__.A, None] "
13961396else:
13971397 reveal_type(val) # N: Revealed type is "Union[__main__.A, None]"
13981398if val not in (None,):
13991399 reveal_type(val) # N: Revealed type is "Union[__main__.A, None]"
14001400else:
1401- reveal_type(val) # N: Revealed type is "None"
1401+ reveal_type(val) # N: Revealed type is "Union[__main__.A, None] "
14021402[builtins fixtures/primitives.pyi]
14031403
14041404[case testNarrowingWithTupleOfTypes]
@@ -2130,111 +2130,3 @@ else:
21302130
21312131[typing fixtures/typing-medium.pyi]
21322132[builtins fixtures/ops.pyi]
2133-
2134-
2135- [case testTypeNarrowingStringInLiteralUnion]
2136- from typing import Literal, Tuple
2137- typ: Tuple[Literal['a', 'b'], ...] = ('a', 'b')
2138- x: str = "hi!"
2139- if x in typ:
2140- reveal_type(x) # N: Revealed type is "Union[Literal['a'], Literal['b']]"
2141- else:
2142- reveal_type(x) # N: Revealed type is "builtins.str"
2143- [builtins fixtures/tuple.pyi]
2144- [typing fixtures/typing-medium.pyi]
2145-
2146- [case testTypeNarrowingStringInLiteralUnionSubset]
2147- from typing import Literal, Tuple
2148- typeAlpha: Tuple[Literal['a', 'b', 'c'], ...] = ('a', 'b')
2149- strIn: str = "b"
2150- strOut: str = "c"
2151- if strIn in typeAlpha:
2152- reveal_type(strIn) # N: Revealed type is "Union[Literal['a'], Literal['b'], Literal['c']]"
2153- else:
2154- reveal_type(strIn) # N: Revealed type is "builtins.str"
2155- if strOut in typeAlpha:
2156- reveal_type(strOut) # N: Revealed type is "Union[Literal['a'], Literal['b'], Literal['c']]"
2157- else:
2158- reveal_type(strOut) # N: Revealed type is "builtins.str"
2159- [builtins fixtures/primitives.pyi]
2160- [typing fixtures/typing-medium.pyi]
2161-
2162- [case testNarrowingStringNotInLiteralUnion]
2163- from typing import Literal, Tuple
2164- typeAlpha: Tuple[Literal['a', 'b', 'c'],...] = ('a', 'b', 'c')
2165- strIn: str = "c"
2166- strOut: str = "d"
2167- if strIn not in typeAlpha:
2168- reveal_type(strIn) # N: Revealed type is "builtins.str"
2169- else:
2170- reveal_type(strIn) # N: Revealed type is "Union[Literal['a'], Literal['b'], Literal['c']]"
2171- if strOut in typeAlpha:
2172- reveal_type(strOut) # N: Revealed type is "Union[Literal['a'], Literal['b'], Literal['c']]"
2173- else:
2174- reveal_type(strOut) # N: Revealed type is "builtins.str"
2175- [builtins fixtures/primitives.pyi]
2176- [typing fixtures/typing-medium.pyi]
2177-
2178- [case testNarrowingStringInLiteralUnionDontExpand]
2179- from typing import Literal, Tuple
2180- typeAlpha: Tuple[Literal['a', 'b', 'c'], ...] = ('a', 'b', 'c')
2181- strIn: Literal['c'] = "c"
2182- reveal_type(strIn) # N: Revealed type is "Literal['c']"
2183- #Check we don't expand a Literal into the Union type
2184- if strIn not in typeAlpha:
2185- reveal_type(strIn) # N: Revealed type is "Literal['c']"
2186- else:
2187- reveal_type(strIn) # N: Revealed type is "Literal['c']"
2188- [builtins fixtures/primitives.pyi]
2189- [typing fixtures/typing-medium.pyi]
2190-
2191- [case testTypeNarrowingStringInMixedUnion]
2192- from typing import Literal, Tuple
2193- typ: Tuple[Literal['a', 'b'], ...] = ('a', 'b')
2194- x: str = "hi!"
2195- if x in typ:
2196- reveal_type(x) # N: Revealed type is "Union[Literal['a'], Literal['b']]"
2197- else:
2198- reveal_type(x) # N: Revealed type is "builtins.str"
2199- [builtins fixtures/tuple.pyi]
2200- [typing fixtures/typing-medium.pyi]
2201-
2202- [case testTypeNarrowingStringInSet]
2203- from typing import Literal, Set
2204- typ: Set[Literal['a', 'b']] = {'a', 'b'}
2205- x: str = "hi!"
2206- if x in typ:
2207- reveal_type(x) # N: Revealed type is "Union[Literal['a'], Literal['b']]"
2208- else:
2209- reveal_type(x) # N: Revealed type is "builtins.str"
2210- if x not in typ:
2211- reveal_type(x) # N: Revealed type is "builtins.str"
2212- else:
2213- reveal_type(x) # N: Revealed type is "Union[Literal['a'], Literal['b']]"
2214- [builtins fixtures/narrowing.pyi]
2215- [typing fixtures/typing-medium.pyi]
2216-
2217- [case testTypeNarrowingStringInList]
2218- from typing import Literal, List
2219- typ: List[Literal['a', 'b']] = ['a', 'b']
2220- x: str = "hi!"
2221- if x in typ:
2222- reveal_type(x) # N: Revealed type is "Union[Literal['a'], Literal['b']]"
2223- else:
2224- reveal_type(x) # N: Revealed type is "builtins.str"
2225- if x not in typ:
2226- reveal_type(x) # N: Revealed type is "builtins.str"
2227- else:
2228- reveal_type(x) # N: Revealed type is "Union[Literal['a'], Literal['b']]"
2229- [builtins fixtures/narrowing.pyi]
2230- [typing fixtures/typing-medium.pyi]
2231-
2232- [case testTypeNarrowingUnionStringFloat]
2233- from typing import Union
2234- def foobar(foo: Union[str, float]):
2235- if foo in ['a', 'b']:
2236- reveal_type(foo) # N: Revealed type is "builtins.str"
2237- else:
2238- reveal_type(foo) # N: Revealed type is "Union[builtins.str, builtins.float]"
2239- [builtins fixtures/primitives.pyi]
2240- [typing fixtures/typing-medium.pyi]
0 commit comments