From 821d2b9220c3c15610f8649268be1859e9fdd9a7 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Tue, 7 Jan 2014 11:28:01 +0100 Subject: [PATCH] remove some recursion --- jedi/evaluate/finder.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/jedi/evaluate/finder.py b/jedi/evaluate/finder.py index 98f9f8b0..6b4e3657 100644 --- a/jedi/evaluate/finder.py +++ b/jedi/evaluate/finder.py @@ -155,11 +155,14 @@ class NameFinder(object): flow_scope = flow_scope.parent for name in names: - types += self._remove_statements(name.parent, resolve_decorator) - + typ = name.parent + if typ.isinstance(pr.ForFlow): + types += self._handle_for_loops(typ) + else: + types += self._remove_statements(typ, resolve_decorator) return types - def _remove_statements(self, r, resolve_decorator=True): + def _remove_statements(self, r, resolve_decorator=False): """ This is the part where statements are being stripped. @@ -237,8 +240,7 @@ class NameFinder(object): #if r.docstr: #res_new.append(r) - for scope in evaluator.eval_statement(r, seek_name=self.name_str): - add += self._remove_statements(scope) + add += evaluator.eval_statement(r, seek_name=self.name_str) if check_instance is not None: # class renames @@ -246,16 +248,15 @@ class NameFinder(object): if isinstance(a, (er.Function, pr.Function)) else a for a in add] res_new += add - elif r.isinstance(pr.ForFlow): - res_new += self._handle_for_loops(r) else: if isinstance(r, pr.Class): - r = er.Class(evaluator, r) + r = er.Class(self._evaluator, r) elif isinstance(r, pr.Function): - r = er.Function(evaluator, r) + r = er.Function(self._evaluator, r) if r.isinstance(er.Function) and resolve_decorator: r = r.get_decorated_func() res_new.append(r) + return res_new def _handle_for_loops(self, loop):