diff --git a/jedi/evaluate/__init__.py b/jedi/evaluate/__init__.py index d7405739..103f5ca0 100644 --- a/jedi/evaluate/__init__.py +++ b/jedi/evaluate/__init__.py @@ -207,7 +207,7 @@ class Evaluator(object): if isinstance(atom, pr.Name): # This is the first global lookup. stmt = atom.get_parent_until((pr.ExprStmt, pr.ReturnStmt, pr.Scope)) - return self.find_types(stmt.parent, atom, stmt.start_pos, + return self.find_types(stmt.get_parent_until(pr.IsScope), atom, stmt.start_pos, search_global=True) elif isinstance(atom, pr.Literal): return [compiled.create(self, atom.eval())] diff --git a/jedi/evaluate/finder.py b/jedi/evaluate/finder.py index 59695762..e0361617 100644 --- a/jedi/evaluate/finder.py +++ b/jedi/evaluate/finder.py @@ -87,6 +87,7 @@ class NameFinder(object): stmt = name.get_definition() scope = stmt.parent + print(name.parent, stmt, scope) if scope in break_scopes: continue diff --git a/jedi/evaluate/param.py b/jedi/evaluate/param.py index 241c3d61..255c7dc9 100644 --- a/jedi/evaluate/param.py +++ b/jedi/evaluate/param.py @@ -125,9 +125,6 @@ class ExecutedParam(pr.Param): instance.var_args = var_args return instance - def get_parent_until(self, *args, **kwargs): - return self.parent.get_parent_until(*args, **kwargs) - def _get_calling_var_args(evaluator, var_args): old_var_args = None diff --git a/jedi/parser/representation.py b/jedi/parser/representation.py index a65048b4..ac881abf 100644 --- a/jedi/parser/representation.py +++ b/jedi/parser/representation.py @@ -1225,7 +1225,7 @@ class ArrayStmt(Statement): """ -class Param(object): +class Param(Base): """ The class which shows definitions of params of classes and functions. But this is not to define function calls. @@ -1240,12 +1240,20 @@ class Param(object): self.default = default self.stars = stars + @property + def start_pos(self): + return self.tfpdef.start_pos + def get_name(self): if is_node(self.tfpdef, 'tfpdef'): return self.tfpdef.children[0] else: return self.tfpdef + @property + def parent_function(self): + return self.get_parent_until(IsScope) + def __init__old(self): kwargs.pop('names_are_set_vars', None) super(Param, self).__init__(*args, names_are_set_vars=True, **kwargs)