forked from VimPlug/jedi
Move get_comp_fors out of the parser.
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user