diff --git a/jedi/evaluate/__init__.py b/jedi/evaluate/__init__.py index 2019d2e5..ce46c4da 100644 --- a/jedi/evaluate/__init__.py +++ b/jedi/evaluate/__init__.py @@ -280,13 +280,15 @@ class Evaluator(object): elif element.type == 'expr_stmt': types = self.eval_statement(context, element) elif element.type in ('power', 'atom_expr'): - types = self._eval_atom(context, element.children[0]) - for trailer in element.children[1:]: - if trailer == '**': # has a power operation. - right = self.eval_element(context, element.children[2]) - types = set(precedence.calculate(self, context, types, trailer, right)) - break - types = self.eval_trailer(context, types, trailer) + first_child = element.children[0] + if not (first_child.type == 'keyword' and first_child.value == 'await'): + types = self._eval_atom(context, first_child) + for trailer in element.children[1:]: + if trailer == '**': # has a power operation. + right = self.eval_element(context, element.children[2]) + types = set(precedence.calculate(self, context, types, trailer, right)) + break + types = self.eval_trailer(context, types, trailer) elif element.type in ('testlist_star_expr', 'testlist',): # The implicit tuple in statements. types = set([iterable.SequenceLiteralContext(self, context, element)]) diff --git a/test/completion/async_.py b/test/completion/async_.py new file mode 100644 index 00000000..02bdc3c2 --- /dev/null +++ b/test/completion/async_.py @@ -0,0 +1,19 @@ +""" +Tests for all async use cases. + +Currently we're not supporting completion of them, but they should at least not +raise errors or return strange results. +""" + + +async def x(): + await 3 + +#? +x() + +a = await x() +#? +a + +