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.cache import memoize_default
|
||||||
from jedi.evaluate.filters import DictFilter, AbstractNameDefinition, \
|
from jedi.evaluate.filters import DictFilter, AbstractNameDefinition, \
|
||||||
ParserTreeFilter
|
ParserTreeFilter
|
||||||
|
from jedi.parser_utils import get_comp_fors
|
||||||
|
|
||||||
|
|
||||||
class AbstractSequence(context.Context):
|
class AbstractSequence(context.Context):
|
||||||
@@ -264,7 +265,7 @@ class Comprehension(AbstractSequence):
|
|||||||
@memoize_default(default=[])
|
@memoize_default(default=[])
|
||||||
@common.to_list
|
@common.to_list
|
||||||
def _iterate(self):
|
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):
|
for result in self._nested(comp_fors):
|
||||||
yield result
|
yield result
|
||||||
|
|
||||||
|
|||||||
@@ -1120,16 +1120,6 @@ class CompFor(PythonBaseNode):
|
|||||||
type = 'comp_for'
|
type = 'comp_for'
|
||||||
__slots__ = ()
|
__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):
|
def is_scope(self):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
from jedi.parser.python import tree
|
||||||
|
|
||||||
_EXECUTE_NODES = set([
|
_EXECUTE_NODES = set([
|
||||||
'funcdef', 'classdef', 'import_from', 'import_name', 'test', 'or_test',
|
'funcdef', 'classdef', 'import_from', 'import_name', 'test', 'or_test',
|
||||||
'and_test', 'not_test', 'comparison', 'expr', 'xor_expr', 'and_expr',
|
'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)
|
result += get_executable_nodes(child, last_added)
|
||||||
|
|
||||||
return result
|
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