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