From 2b1ddb19c96bace226c46a67c5fba117e3c3056d Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Fri, 27 Feb 2015 12:35:28 +0100 Subject: [PATCH] Need py__bool__ on generators as well as any other object. --- jedi/evaluate/iterable.py | 9 ++++++--- test/completion/generators.py | 7 +++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/jedi/evaluate/iterable.py b/jedi/evaluate/iterable.py index 749d2df7..92d24bb4 100644 --- a/jedi/evaluate/iterable.py +++ b/jedi/evaluate/iterable.py @@ -69,6 +69,9 @@ class GeneratorMixin(object): """ return [self.iter_content()[index]] + def py__bool__(self): + return True + class Generator(use_metaclass(CachedMetaClass, IterableWrapper, GeneratorMixin)): """Handling of `yield` functions.""" @@ -161,6 +164,9 @@ class ArrayMixin(object): scope = self._evaluator.execute(scope, (AlreadyEvaluated((self,)),))[0] return scope.names_dicts(search_global) + def py__bool__(self): + return None # We don't know the length, because of appends. + class ListComprehension(Comprehension, ArrayMixin): type = 'list' @@ -203,9 +209,6 @@ class Array(IterableWrapper, ArrayMixin): def name(self): return helpers.FakeName(self.type, parent=self) - def py__bool__(self): - return None # We don't know the length, because of appends. - @memoize_default() def get_index_types(self, evaluator, index=()): """ diff --git a/test/completion/generators.py b/test/completion/generators.py index d24a41dc..96aa2b66 100644 --- a/test/completion/generators.py +++ b/test/completion/generators.py @@ -24,6 +24,13 @@ next(gen_ret(1)) #? [] next(gen_ret()) +# generators evaluate to true if cast by bool. +a = '' +if gen_ret(): + a = 3 +#? int() +a + # ----------------- # generators should not be indexable