Need py__bool__ on generators as well as any other object.

This commit is contained in:
Dave Halter
2015-02-27 12:35:28 +01:00
parent 23fe08363d
commit 2b1ddb19c9
2 changed files with 13 additions and 3 deletions

View File

@@ -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=()):
"""

View File

@@ -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