diff --git a/jedi/evaluate/finder.py b/jedi/evaluate/finder.py index a3000617..da07de07 100644 --- a/jedi/evaluate/finder.py +++ b/jedi/evaluate/finder.py @@ -66,18 +66,7 @@ class NameFinder(object): if search_global: return get_names_of_scope(self._evaluator, self.scope, self.position) else: - try: - gen = self.scope.scope_names_generator - except AttributeError: - if isinstance(self.scope, er.Class): - # Classes don't have a positional limitation of their - # state. It's the whole class. - names = self.scope.get_defined_names() - else: - names = _get_defined_names_for_position(self.scope, self.position) - return iter([(self.scope, names)]) - else: - return gen(self.position) + return self.scope.scope_names_generator(self.position) def filter_name(self, scope_names_generator): """ diff --git a/jedi/parser/representation.py b/jedi/parser/representation.py index 192ee35d..950539f7 100644 --- a/jedi/parser/representation.py +++ b/jedi/parser/representation.py @@ -705,6 +705,10 @@ class Flow(Scope): self.next.parent = self.parent return next + def scope_names_generator(self, position=None): + # For `with` and `for`. + yield self, filter_after_position(self.get_defined_names(), position) + class ForFlow(Flow): """