@@ -3040,6 +3040,28 @@ z: Any
30403040if int == type(z) == int:
30413041 reveal_type(z) # N: Revealed type is "builtins.int"
30423042
3043+ [case testTypeEqualsCheckWidening]
3044+ # flags: --strict-equality --warn-unreachable
3045+ from typing import Any
3046+
3047+ def f(x: str, y: Any, z: object):
3048+ if type(x) is type(y):
3049+ reveal_type(x) # N: Revealed type is "builtins.str"
3050+ reveal_type(y) # N: Revealed type is "builtins.str"
3051+
3052+ if type(x) == type(y):
3053+ reveal_type(x) # N: Revealed type is "builtins.str"
3054+ reveal_type(y) # N: Revealed type is "builtins.str"
3055+
3056+ if type(x) is type(z):
3057+ reveal_type(x) # N: Revealed type is "builtins.str"
3058+ reveal_type(z) # N: Revealed type is "builtins.str"
3059+
3060+ if type(x) == type(z):
3061+ reveal_type(x) # N: Revealed type is "builtins.str"
3062+ reveal_type(z) # N: Revealed type is "builtins.str"
3063+ [builtins fixtures/primitives.pyi]
3064+
30433065[case testTypeEqualsCheckUsingIs]
30443066# flags: --strict-equality --warn-unreachable
30453067from typing import Any
@@ -3076,20 +3098,6 @@ def main(x: Union[B, C]):
30763098 reveal_type(x) # N: Revealed type is "__main__.B | __main__.C"
30773099[builtins fixtures/isinstance.pyi]
30783100
3079- [case testTypeEqualsCheckUsingImplicitTypes-xfail]
3080- from typing import Any
3081-
3082- x: str
3083- y: Any
3084- z: object
3085- if type(y) is type(x):
3086- reveal_type(x) # N: Revealed type is "builtins.str"
3087- reveal_type(y) # N: Revealed type is "builtins.str"
3088-
3089- if type(x) is type(z):
3090- reveal_type(x) # N: Revealed type is "builtins.str"
3091- reveal_type(z) # N: Revealed type is "builtins.str"
3092-
30933101[case testTypeEqualsCheckUsingDifferentSpecializedTypes]
30943102# flags: --warn-unreachable
30953103from collections import defaultdict
0 commit comments