[case testOrErrorSyntax] from typing import Union x : Union[bool, str] x = 3 # E: Incompatible types in assignment (expression has type "int", variable has type "bool | str") [case testOrNoneErrorSyntax] from typing import Union x : Union[bool, None] x = 3 # E: Incompatible types in assignment (expression has type "int", variable has type "bool | None") [case testNoneAsFinalItem] from typing import Union x : Union[bool, None, str] x = 3 # E: Incompatible types in assignment (expression has type "int", variable has type "bool | str | None") [case testLiteralOrErrorSyntax] from typing import Literal, Union x : Union[Literal[1], Literal[2], str] x = 3 # E: Incompatible types in assignment (expression has type "Literal[3]", variable has type "Literal[1, 2] | str") [builtins fixtures/tuple.pyi] [case testLiteralOrNoneErrorSyntax] from typing import Literal, Union x : Union[Literal[1], None] x = 3 # E: Incompatible types in assignment (expression has type "Literal[3]", variable has type "Literal[1] | None") [builtins fixtures/tuple.pyi] [case testOrSyntaxRecombined] # flags: --allow-redefinition --local-partial-types # The following revealed type is recombined because the finally body is visited twice. try: x = 1 x = "" x = {1: ""} finally: reveal_type(x) # N: Revealed type is "builtins.int | builtins.str | builtins.dict[builtins.int, builtins.str]" [builtins fixtures/isinstancelist.pyi]