1
0
forked from VimPlug/jedi

Fix a decorator goto issue.

This commit is contained in:
Dave Halter
2015-03-02 13:23:13 +01:00
parent 6d3bb5c4b1
commit 5a845e4dea
3 changed files with 19 additions and 7 deletions

View File

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

View File

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

View File

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