1
0
forked from VimPlug/jedi

Temporarily fix an issue with list comprehensions.

This commit is contained in:
Dave Halter
2016-09-19 05:28:35 +02:00
parent 8aeeaec9c3
commit ccc325616a
2 changed files with 10 additions and 5 deletions
+9 -4
View File
@@ -36,7 +36,7 @@ from jedi.evaluate import helpers
from jedi.evaluate.cache import memoize_default from jedi.evaluate.cache import memoize_default
def filter_after_position(names, position): def filter_after_position(names, position, origin=None):
""" """
Removes all names after a certain position. If position is None, just Removes all names after a certain position. If position is None, just
returns the names list. returns the names list.
@@ -47,8 +47,13 @@ def filter_after_position(names, position):
names_new = [] names_new = []
for n in names: for n in names:
# Filter positions and also allow list comprehensions and lambdas. # Filter positions and also allow list comprehensions and lambdas.
if n.start_pos[0] is not None and n.start_pos < position \ if n.start_pos[0] is not None and n.start_pos < position:
or isinstance(n.get_definition(), (tree.CompFor, tree.Lambda)): names_new.append(n)
elif isinstance(n.get_definition(), (tree.CompFor, tree.Lambda)):
if origin is not None and origin.get_definition() != n.get_definition():
# This is extremely hacky. A transition that we have to use
# until we get rid of names_dicts.
continue
names_new.append(n) names_new.append(n)
return names_new return names_new
@@ -67,7 +72,7 @@ def filter_definition_names(names, origin, position=None):
if not (isinstance(scope, er.FunctionExecution) and if not (isinstance(scope, er.FunctionExecution) and
isinstance(scope.base, er.LambdaWrapper)): isinstance(scope.base, er.LambdaWrapper)):
names = filter_after_position(names, position) names = filter_after_position(names, position, origin)
names = [name for name in names if name.is_definition()] names = [name for name in names if name.is_definition()]
# Private name mangling (compile.c) disallows access on names # Private name mangling (compile.c) disallows access on names
+1 -1
View File
@@ -130,7 +130,7 @@ On Linux, if environment variable ``$XDG_CACHE_HOME`` is set,
# parser # parser
# ---------------- # ----------------
fast_parser = False fast_parser = True
""" """
Use the fast parser. This means that reparsing is only being done if Use the fast parser. This means that reparsing is only being done if
something has been changed e.g. to a function. If this happens, only the something has been changed e.g. to a function. If this happens, only the