From 712ae01ac0a931bc37c953d417dbbe1aba5c1e3c Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Tue, 28 Apr 2015 18:32:19 +0200 Subject: [PATCH] Classes should always evaluate to true when asked for py__bool__() --- jedi/evaluate/representation.py | 13 +++++++------ test/completion/flow_analysis.py | 13 +++++++++++++ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/jedi/evaluate/representation.py b/jedi/evaluate/representation.py index 1c11030b..3cfcaa9b 100644 --- a/jedi/evaluate/representation.py +++ b/jedi/evaluate/representation.py @@ -374,6 +374,13 @@ class Wrapper(tree.Base): def is_class(self): return False + def py__bool__(self): + """ + Since Wrapper is a super class for classes, functions and modules, + the return value will always be true. + """ + return True + @property @underscore_memoization def name(self): @@ -552,9 +559,6 @@ class Function(use_metaclass(CachedMetaClass, Wrapper)): else: return FunctionExecution(evaluator, self, params).get_return_types() - def py__bool__(self): - return True - def __getattr__(self, name): return getattr(self.base_func, name) @@ -851,6 +855,3 @@ class ModuleWrapper(use_metaclass(CachedMetaClass, tree.Module, Wrapper)): def __repr__(self): return "<%s: %s>" % (type(self).__name__, self._module) - - def py__bool__(self): - return True diff --git a/test/completion/flow_analysis.py b/test/completion/flow_analysis.py index 4674555c..933badf5 100644 --- a/test/completion/flow_analysis.py +++ b/test/completion/flow_analysis.py @@ -205,3 +205,16 @@ if 0: foobar #? nested + +# ----------------- +# True objects like modules +# ----------------- + +class X(): + pass +if X: + a = 1 +else: + a = '' +#? int() +a