1
0
forked from VimPlug/jedi

Move get_comp_fors out of the parser.

This commit is contained in:
Dave Halter
2017-04-08 14:16:00 +02:00
parent 4cd7f40e3b
commit 1625834f81
3 changed files with 15 additions and 11 deletions

View File

@@ -35,6 +35,7 @@ from jedi.evaluate import recursion
from jedi.evaluate.cache import memoize_default
from jedi.evaluate.filters import DictFilter, AbstractNameDefinition, \
ParserTreeFilter
from jedi.parser_utils import get_comp_fors
class AbstractSequence(context.Context):
@@ -264,7 +265,7 @@ class Comprehension(AbstractSequence):
@memoize_default(default=[])
@common.to_list
def _iterate(self):
comp_fors = tuple(self._get_comp_for().get_comp_fors())
comp_fors = tuple(get_comp_fors(self._get_comp_for()))
for result in self._nested(comp_fors):
yield result

View File

@@ -1120,16 +1120,6 @@ class CompFor(PythonBaseNode):
type = 'comp_for'
__slots__ = ()
def get_comp_fors(self):
yield self
last = self.children[-1]
while True:
if isinstance(last, CompFor):
yield last
elif not last.type == 'comp_if':
break
last = last.children[-1]
def is_scope(self):
return True

View File

@@ -1,3 +1,5 @@
from jedi.parser.python import tree
_EXECUTE_NODES = set([
'funcdef', 'classdef', 'import_from', 'import_name', 'test', 'or_test',
'and_test', 'not_test', 'comparison', 'expr', 'xor_expr', 'and_expr',
@@ -45,3 +47,14 @@ def get_executable_nodes(node, last_added=False):
result += get_executable_nodes(child, last_added)
return result
def get_comp_fors(comp_for):
yield comp_for
last = comp_for.children[-1]
while True:
if last.type == 'comp_for':
yield last
elif not last.type == 'comp_if':
break
last = last.children[-1]