@@ -621,6 +621,36 @@ def overloaded_func(a):
621621 assert 'D103' not in out
622622
623623
624+ def test_overload_async_function (env ):
625+ """Async functions decorated with @overload trigger D418 error."""
626+ with env .open ('example.py' , 'wt' ) as example :
627+ example .write (textwrap .dedent ('''\
628+ from typing import overload
629+
630+
631+ @overload
632+ async def overloaded_func(a: int) -> str:
633+ ...
634+
635+
636+ @overload
637+ async def overloaded_func(a: str) -> str:
638+ """Foo bar documentation."""
639+ ...
640+
641+
642+ async def overloaded_func(a):
643+ """Foo bar documentation."""
644+ return str(a)
645+
646+ ''' ))
647+ env .write_config (ignore = "D100" )
648+ out , err , code = env .invoke ()
649+ assert code == 1
650+ assert 'D418' in out
651+ assert 'D103' not in out
652+
653+
624654def test_overload_method (env ):
625655 """Methods decorated with @overload trigger D418 error."""
626656 with env .open ('example.py' , 'wt' ) as example :
@@ -714,6 +744,36 @@ def overloaded_func(a):
714744 assert code == 0
715745
716746
747+ def test_overload_async_function_valid (env ):
748+ """Valid case for overload decorated async functions.
749+
750+ This shouldn't throw any errors.
751+ """
752+ with env .open ('example.py' , 'wt' ) as example :
753+ example .write (textwrap .dedent ('''\
754+ from typing import overload
755+
756+
757+ @overload
758+ async def overloaded_func(a: int) -> str:
759+ ...
760+
761+
762+ @overload
763+ async def overloaded_func(a: str) -> str:
764+ ...
765+
766+
767+ async def overloaded_func(a):
768+ """Foo bar documentation."""
769+ return str(a)
770+
771+ ''' ))
772+ env .write_config (ignore = "D100" )
773+ out , err , code = env .invoke ()
774+ assert code == 0
775+
776+
717777def test_overload_nested_function (env ):
718778 """Nested functions decorated with @overload trigger D418 error."""
719779 with env .open ('example.py' , 'wt' ) as example :
0 commit comments