mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-06 14:04:26 +08:00
Make get_module_names return top-level async functions when all_scopes=False.
This commit is contained in:
@@ -190,6 +190,9 @@ def get_module_names(module, all_scopes):
|
||||
# but that would be a big change that could break type inference, whereas for now
|
||||
# this discrepancy looks like only a problem for "get_module_names".
|
||||
parent_scope = parent_scope.parent
|
||||
# async functions have an extra wrapper. Strip it.
|
||||
if parent_scope and parent_scope.type == 'async_stmt':
|
||||
parent_scope = parent_scope.parent
|
||||
return parent_scope in (module, None)
|
||||
|
||||
names = [n for n in names if is_module_scope_name(n)]
|
||||
|
||||
@@ -82,18 +82,34 @@ class TestDefinedNames(TestCase):
|
||||
def test_class_fields_with_all_scopes_false(self):
|
||||
definitions = self.check_defined_names("""
|
||||
from module import f
|
||||
import asyncio
|
||||
|
||||
g = f(f)
|
||||
class C:
|
||||
h = g
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
async def __aenter__(self):
|
||||
pass
|
||||
|
||||
def foo(x=a):
|
||||
bar = x
|
||||
return bar
|
||||
""", ['f', 'g', 'C', 'foo'])
|
||||
C_subdefs = definitions[-2].defined_names()
|
||||
foo_subdefs = definitions[-1].defined_names()
|
||||
self.assert_definition_names(C_subdefs, ['h'])
|
||||
|
||||
async def async_foo(duration):
|
||||
async def wait():
|
||||
await asyncio.sleep(100)
|
||||
for i in range(duration//100):
|
||||
await wait()
|
||||
return duration//100*100
|
||||
""", ['f', 'asyncio', 'g', 'C', 'foo', 'async_foo'])
|
||||
C_subdefs = definitions[-3].defined_names()
|
||||
foo_subdefs = definitions[-2].defined_names()
|
||||
async_foo_subdefs = definitions[-1].defined_names()
|
||||
self.assert_definition_names(C_subdefs, ['h', '__init__', '__aenter__'])
|
||||
self.assert_definition_names(foo_subdefs, ['x', 'bar'])
|
||||
self.assert_definition_names(async_foo_subdefs, ['duration', 'wait', 'i'])
|
||||
|
||||
|
||||
def test_follow_imports(environment):
|
||||
|
||||
Reference in New Issue
Block a user