diff options
-rw-r--r-- | sphinx/pycode/parser.py | 4 | ||||
-rw-r--r-- | tests/test_pycode_parser.py | 15 |
2 files changed, 19 insertions, 0 deletions
diff --git a/sphinx/pycode/parser.py b/sphinx/pycode/parser.py index bf80f4367..9f9f7dd29 100644 --- a/sphinx/pycode/parser.py +++ b/sphinx/pycode/parser.py @@ -381,6 +381,10 @@ class VariableCommentPicker(ast.NodeVisitor): self.context.pop() self.current_function = None + def visit_AsyncFunctionDef(self, node): + # type: (ast.AsyncFunctionDef) -> None + self.visit_FunctionDef(node) # type: ignore + class DefinitionFinder(TokenProcessor): def __init__(self, lines): diff --git a/tests/test_pycode_parser.py b/tests/test_pycode_parser.py index 403c918dc..ba9778b80 100644 --- a/tests/test_pycode_parser.py +++ b/tests/test_pycode_parser.py @@ -314,6 +314,21 @@ def test_decorators(): 'Foo.method': ('def', 13, 15)} +def test_async_function_and_method(): + source = ('async def some_function():\n' + ' """docstring"""\n' + ' a = 1 + 1 #: comment1\n' + '\n' + 'class Foo:\n' + ' async def method(self):\n' + ' pass\n') + parser = Parser(source) + parser.parse() + assert parser.definitions == {'some_function': ('def', 1, 3), + 'Foo': ('class', 5, 7), + 'Foo.method': ('def', 6, 7)} + + def test_formfeed_char(): source = ('class Foo:\n' '\f\n' |