diff --git a/jedi/evaluate/__init__.py b/jedi/evaluate/__init__.py index 1fa72dbb..a2fef332 100644 --- a/jedi/evaluate/__init__.py +++ b/jedi/evaluate/__init__.py @@ -302,12 +302,14 @@ class Evaluator(object): if trailer.type == 'arglist': trailer = trailer.parent if trailer.type != 'classdef': - for i, t in enumerate(trailer.parent.children): - if t == trailer: - to_evaluate = trailer.parent.children[:i] - types = self.eval_element(to_evaluate[0]) - for trailer in to_evaluate[1:]: - types = self.eval_trailer(types, trailer) + if trailer.type == 'decorator': + types = self.eval_element(trailer.children[1]) + else: + i = trailer.parent.children.index(trailer) + to_evaluate = trailer.parent.children[:i] + types = self.eval_element(to_evaluate[0]) + for trailer in to_evaluate[1:]: + types = self.eval_trailer(types, trailer) param_names = [] for typ in types: try: diff --git a/jedi/evaluate/representation.py b/jedi/evaluate/representation.py index 5fcbb186..126c36c6 100644 --- a/jedi/evaluate/representation.py +++ b/jedi/evaluate/representation.py @@ -504,7 +504,6 @@ class Function(use_metaclass(CachedMetaClass, Wrapper)): if not self.is_decorated: for dec in reversed(decorators): debug.dbg('decorator: %s %s', dec, f) - dec.children dec_results = self._evaluator.eval_element(dec.children[1]) trailer = dec.children[2:-1] if trailer: diff --git a/test/completion/goto.py b/test/completion/goto.py index 18cb8502..1098bed1 100644 --- a/test/completion/goto.py +++ b/test/completion/goto.py @@ -191,3 +191,14 @@ for key, value in [(1,2)]: for i in []: #! ['for i in []: i'] i + +# ----------------- +# decorator +# ----------------- +def dec(dec_param=3): + pass + +#! 8 ['dec_param=3'] +@dec(dec_param=5) +def y(): + pass