@@ -377,6 +377,171 @@ for i in a: # E: function __main__.A.__iter__ is deprecated: no iteration
377
377
[builtins fixtures/tuple.pyi]
378
378
379
379
380
+ [case testDeprecatedOverloadedInstanceMethods]
381
+ # flags: --enable-error-code=deprecated
382
+
383
+ from typing import Iterator, Union
384
+ from typing_extensions import deprecated, overload
385
+
386
+ class A:
387
+ @overload
388
+ @deprecated("pass `str` instead")
389
+ def f(self, v: int) -> None: ...
390
+ @overload
391
+ def f(self, v: str) -> None: ...
392
+ def f(self, v: Union[int, str]) -> None: ...
393
+
394
+ @overload
395
+ def g(self, v: int) -> None: ...
396
+ @overload
397
+ @deprecated("pass `int` instead")
398
+ def g(self, v: str) -> None: ...
399
+ def g(self, v: Union[int, str]) -> None: ...
400
+
401
+ @overload
402
+ def h(self, v: int) -> A: ...
403
+ @overload
404
+ def h(self, v: str) -> A: ...
405
+ @deprecated("use `h2` instead")
406
+ def h(self, v: Union[int, str]) -> A: ...
407
+
408
+ class B(A): ...
409
+
410
+ a = A()
411
+ a.f(1) # E: overload def (self: __main__.A, v: builtins.int) of function __main__.A.f is deprecated: pass `str` instead
412
+ a.f("x")
413
+ a.g(1)
414
+ a.g("x") # E: overload def (self: __main__.A, v: builtins.str) of function __main__.A.g is deprecated: pass `int` instead
415
+ a.h(1) # E: function __main__.A.h is deprecated: use `h2` instead
416
+ a.h("x") # E: function __main__.A.h is deprecated: use `h2` instead
417
+
418
+ b = B()
419
+ b.f(1) # E: overload def (self: __main__.A, v: builtins.int) of function __main__.A.f is deprecated: pass `str` instead
420
+ b.f("x")
421
+ b.g(1)
422
+ b.g("x") # E: overload def (self: __main__.A, v: builtins.str) of function __main__.A.g is deprecated: pass `int` instead
423
+ b.h(1) # E: function __main__.A.h is deprecated: use `h2` instead
424
+ b.h("x") # E: function __main__.A.h is deprecated: use `h2` instead
425
+
426
+ [builtins fixtures/tuple.pyi]
427
+
428
+
429
+ [case testDeprecatedOverloadedClassMethods]
430
+ # flags: --enable-error-code=deprecated
431
+
432
+ from typing import Iterator, Union
433
+ from typing_extensions import deprecated, overload
434
+
435
+ class A:
436
+ @overload
437
+ @classmethod
438
+ @deprecated("pass `str` instead")
439
+ def f(cls, v: int) -> None: ...
440
+ @overload
441
+ @classmethod
442
+ def f(cls, v: str) -> None: ...
443
+ @classmethod
444
+ def f(cls, v: Union[int, str]) -> None: ...
445
+
446
+ @overload
447
+ @classmethod
448
+ def g(cls, v: int) -> None: ...
449
+ @overload
450
+ @classmethod
451
+ @deprecated("pass `int` instead")
452
+ def g(cls, v: str) -> None: ...
453
+ @classmethod
454
+ def g(cls, v: Union[int, str]) -> None: ...
455
+
456
+ @overload
457
+ @classmethod
458
+ def h(cls, v: int) -> A: ...
459
+ @overload
460
+ @classmethod
461
+ def h(cls, v: str) -> A: ...
462
+ @deprecated("use `h2` instead")
463
+ @classmethod
464
+ def h(cls, v: Union[int, str]) -> A: ...
465
+
466
+ class B(A): ...
467
+
468
+ a = A()
469
+ a.f(1) # E: overload def (cls: type[__main__.A], v: builtins.int) of function __main__.A.f is deprecated: pass `str` instead
470
+ a.f("x")
471
+ a.g(1)
472
+ a.g("x") # E: overload def (cls: type[__main__.A], v: builtins.str) of function __main__.A.g is deprecated: pass `int` instead
473
+ a.h(1) # E: function __main__.A.h is deprecated: use `h2` instead
474
+ a.h("x") # E: function __main__.A.h is deprecated: use `h2` instead
475
+
476
+ b = B()
477
+ b.f(1) # E: overload def (cls: type[__main__.A], v: builtins.int) of function __main__.A.f is deprecated: pass `str` instead
478
+ b.f("x")
479
+ b.g(1)
480
+ b.g("x") # E: overload def (cls: type[__main__.A], v: builtins.str) of function __main__.A.g is deprecated: pass `int` instead
481
+ b.h(1) # E: function __main__.A.h is deprecated: use `h2` instead
482
+ b.h("x") # E: function __main__.A.h is deprecated: use `h2` instead
483
+
484
+ [builtins fixtures/tuple.pyi]
485
+
486
+
487
+ [case testDeprecatedOverloadedStaticMethods]
488
+ # flags: --enable-error-code=deprecated
489
+
490
+ from typing import Iterator, Union
491
+ from typing_extensions import deprecated, overload
492
+
493
+ class A:
494
+ @overload
495
+ @staticmethod
496
+ @deprecated("pass `str` instead")
497
+ def f(v: int) -> None: ...
498
+ @overload
499
+ @staticmethod
500
+ def f(v: str) -> None: ...
501
+ @staticmethod
502
+ def f(v: Union[int, str]) -> None: ...
503
+
504
+ @overload
505
+ @staticmethod
506
+ def g(v: int) -> None: ...
507
+ @overload
508
+ @staticmethod
509
+ @deprecated("pass `int` instead")
510
+ def g(v: str) -> None: ...
511
+ @staticmethod
512
+ def g(v: Union[int, str]) -> None: ...
513
+
514
+ @overload
515
+ @staticmethod
516
+ def h(v: int) -> A: ...
517
+ @overload
518
+ @staticmethod
519
+ def h(v: str) -> A: ...
520
+ @deprecated("use `h2` instead")
521
+ @staticmethod
522
+ def h(v: Union[int, str]) -> A: ...
523
+
524
+ class B(A): ...
525
+
526
+ a = A()
527
+ a.f(1) # E: overload def (v: builtins.int) of function __main__.A.f is deprecated: pass `str` instead
528
+ a.f("x")
529
+ a.g(1)
530
+ a.g("x") # E: overload def (v: builtins.str) of function __main__.A.g is deprecated: pass `int` instead
531
+ a.h(1) # E: function __main__.A.h is deprecated: use `h2` instead
532
+ a.h("x") # E: function __main__.A.h is deprecated: use `h2` instead
533
+
534
+ b = B()
535
+ b.f(1) # E: overload def (v: builtins.int) of function __main__.A.f is deprecated: pass `str` instead
536
+ b.f("x")
537
+ b.g(1)
538
+ b.g("x") # E: overload def (v: builtins.str) of function __main__.A.g is deprecated: pass `int` instead
539
+ b.h(1) # E: function __main__.A.h is deprecated: use `h2` instead
540
+ b.h("x") # E: function __main__.A.h is deprecated: use `h2` instead
541
+
542
+ [builtins fixtures/classmethod.pyi]
543
+
544
+
380
545
[case testDeprecatedOverloadedSpecialMethods]
381
546
# flags: --enable-error-code=deprecated
382
547
0 commit comments