From 7548ec72803186c7e24a624d9752ac5e922ea03d Mon Sep 17 00:00:00 2001 From: David Halter Date: Fri, 9 Aug 2013 11:32:44 +0430 Subject: [PATCH] fix problems with class method decorators --- jedi/evaluate_representation.py | 6 +++--- test/completion/decorators.py | 5 ++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/jedi/evaluate_representation.py b/jedi/evaluate_representation.py index f0e3a43a..33cb3c93 100644 --- a/jedi/evaluate_representation.py +++ b/jedi/evaluate_representation.py @@ -328,13 +328,13 @@ class Function(use_metaclass(cache.CachedMetaClass, pr.IsScope)): debug.warning('decorator not found: %s on %s' % (dec, self.base_func)) return None - if len(dec_results) > 1: + decorator = dec_results.pop() + if dec_results: debug.warning('multiple decorators found', self.base_func, dec_results) - decorator = dec_results.pop() # Create param array. old_func = Function(f, is_decorated=True) - if instance is not None: + if instance is not None and decorator.isinstance(Function): old_func = InstanceElement(instance, old_func) instance = None diff --git a/test/completion/decorators.py b/test/completion/decorators.py index 89bb5548..701b8271 100644 --- a/test/completion/decorators.py +++ b/test/completion/decorators.py @@ -99,9 +99,12 @@ def nothing(a,b,c): return a,b,c class MethodDecoratorAsClass(): - class_var + class_var = 3 + @Decorator def func_without_self(arg): return arg + + @Decorator def func_with_self(self, arg): return self.class_var