diff --git a/jedi/evaluate/__init__.py b/jedi/evaluate/__init__.py index a959d05f..c8dca140 100644 --- a/jedi/evaluate/__init__.py +++ b/jedi/evaluate/__init__.py @@ -242,7 +242,7 @@ class Evaluator(object): except (IndexError, AttributeError): pass else: - if isinstance(comp_for, tree.CompFor): + if isinstance(comp_for, tree.CompFor) and c[0] != '{': return [iterable.Comprehension.from_atom(self, atom)] return [iterable.Array(self, atom)] diff --git a/test/completion/comprehensions.py b/test/completion/comprehensions.py index 98a15bcb..8ba1fbce 100644 --- a/test/completion/comprehensions.py +++ b/test/completion/comprehensions.py @@ -50,6 +50,23 @@ left ##? str() {a-1:b for a,b in {1:'a', 3:1.0}.items()}[0] +# with a set literal +#? int() +[a for a in {1, 2, 3}][0] + +#? set() +{a for a in range(10)} + +##? int() +[x for x in {a for a in range(10)}][0] + +##? int() +{a for a in range(10)}.pop() + +##? int() +iter({a for a in range(10)}).next() + + # list comprehensions should also work in combination with functions def listen(arg): for x in arg: