File tree 1 file changed +30
-0
lines changed
1 file changed +30
-0
lines changed Original file line number Diff line number Diff line change @@ -5430,6 +5430,7 @@ from typing import overload
5430
5430
class A: ...
5431
5431
class B: ...
5432
5432
class C: ...
5433
+ class D: ...
5433
5434
5434
5435
# -----
5435
5436
# Test basic overload merging
@@ -5475,6 +5476,35 @@ reveal_type(f3(C())) # E: No overload variant of "f3" matches argument type "C"
5475
5476
# N: def f3(g: B) -> B \
5476
5477
# N: Revealed type is "Any"
5477
5478
5479
+ if True:
5480
+ @overload
5481
+ def f4(g: A) -> A: ...
5482
+ if True:
5483
+ @overload
5484
+ def f4(g: B) -> B: ...
5485
+ @overload
5486
+ def f4(g: C) -> C: ...
5487
+ def f4(g): ...
5488
+ reveal_type(f4(A())) # N: Revealed type is "__main__.A"
5489
+ reveal_type(f4(B())) # N: Revealed type is "__main__.B"
5490
+ reveal_type(f4(C())) # N: Revealed type is "__main__.C"
5491
+
5492
+ if True:
5493
+ @overload
5494
+ def f5(g: A) -> A: ...
5495
+ @overload
5496
+ def f5(g: B) -> B: ...
5497
+ if True:
5498
+ @overload
5499
+ def f5(g: C) -> C: ...
5500
+ @overload
5501
+ def f5(g: D) -> D: ...
5502
+ def f5(g): ...
5503
+ reveal_type(f5(A())) # N: Revealed type is "__main__.A"
5504
+ reveal_type(f5(B())) # N: Revealed type is "__main__.B"
5505
+ reveal_type(f5(C())) # N: Revealed type is "__main__.C"
5506
+ reveal_type(f5(D())) # N: Revealed type is "__main__.D"
5507
+
5478
5508
[case testOverloadIfSysVersion]
5479
5509
# flags: --python-version 3.9
5480
5510
from typing import overload
You can’t perform that action at this time.
0 commit comments