mirror of
https://github.com/davidhalter/jedi.git
synced 2026-09-07 00:26:56 +08:00
Fix async function inferring with decorators, fixes #1335
This commit is contained in:
@@ -331,7 +331,7 @@ class FunctionExecutionContext(TreeContext):
|
|||||||
Created to be used by inheritance.
|
Created to be used by inheritance.
|
||||||
"""
|
"""
|
||||||
evaluator = self.evaluator
|
evaluator = self.evaluator
|
||||||
is_coroutine = self.tree_node.parent.type == 'async_stmt'
|
is_coroutine = self.tree_node.parent.type in ('async_stmt', 'async_funcdef')
|
||||||
is_generator = bool(get_yield_exprs(evaluator, self.tree_node))
|
is_generator = bool(get_yield_exprs(evaluator, self.tree_node))
|
||||||
from jedi.evaluate.gradual.typing import AnnotatedSubClass
|
from jedi.evaluate.gradual.typing import AnnotatedSubClass
|
||||||
|
|
||||||
|
|||||||
@@ -82,3 +82,28 @@ async def foo():
|
|||||||
normal_var2 = False
|
normal_var2 = False
|
||||||
#? ['normal_var1', 'normal_var2']
|
#? ['normal_var1', 'normal_var2']
|
||||||
normal_var
|
normal_var
|
||||||
|
|
||||||
|
|
||||||
|
class C:
|
||||||
|
@classmethod
|
||||||
|
async def async_for_classmethod(cls) -> "C":
|
||||||
|
return
|
||||||
|
|
||||||
|
async def async_for_method(cls) -> int:
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
async def f():
|
||||||
|
c = await C.async_for_method()
|
||||||
|
#? int()
|
||||||
|
c
|
||||||
|
d = await C().async_for_method()
|
||||||
|
#? int()
|
||||||
|
d
|
||||||
|
|
||||||
|
e = await C.async_for_classmethod()
|
||||||
|
#? C()
|
||||||
|
e
|
||||||
|
f = await C().async_for_classmethod()
|
||||||
|
#? C()
|
||||||
|
f
|
||||||
|
|||||||
Reference in New Issue
Block a user