forked from VimPlug/jedi
Fix a very complicated issue with comprehensions.
This commit is contained in:
@@ -41,7 +41,9 @@ def filter_after_position(names, position):
|
|||||||
|
|
||||||
names_new = []
|
names_new = []
|
||||||
for n in names:
|
for n in names:
|
||||||
if n.start_pos[0] is not None and n.start_pos < position:
|
# Filter positions and also allow list comprehensions and lambdas.
|
||||||
|
if n.start_pos[0] is not None and n.start_pos < position \
|
||||||
|
or isinstance(n.get_definition(), (pr.CompFor, pr.Lambda)):
|
||||||
names_new.append(n)
|
names_new.append(n)
|
||||||
return names_new
|
return names_new
|
||||||
|
|
||||||
@@ -54,8 +56,6 @@ def filter_definition_names(names, origin, position=None):
|
|||||||
# Just calculate the scope from the first
|
# Just calculate the scope from the first
|
||||||
stmt = names[0].get_definition()
|
stmt = names[0].get_definition()
|
||||||
scope = stmt.get_parent_scope()
|
scope = stmt.get_parent_scope()
|
||||||
if isinstance(stmt, (pr.CompFor, pr.Lambda)):
|
|
||||||
return names
|
|
||||||
|
|
||||||
if not (isinstance(scope, er.FunctionExecution)
|
if not (isinstance(scope, er.FunctionExecution)
|
||||||
and isinstance(scope.base, er.LambdaWrapper)):
|
and isinstance(scope.base, er.LambdaWrapper)):
|
||||||
|
|||||||
@@ -135,6 +135,12 @@ a = [a for a in [1]]
|
|||||||
#? int()
|
#? int()
|
||||||
a[0]
|
a[0]
|
||||||
|
|
||||||
|
y = 1.0
|
||||||
|
# Should not leak.
|
||||||
|
[y for y in [3]]
|
||||||
|
#? float()
|
||||||
|
y
|
||||||
|
|
||||||
a = [a for a in (1, 2)]
|
a = [a for a in (1, 2)]
|
||||||
#? int()
|
#? int()
|
||||||
a[0]
|
a[0]
|
||||||
@@ -229,6 +235,14 @@ left, right = (i for i in
|
|||||||
#? str()
|
#? str()
|
||||||
left
|
left
|
||||||
|
|
||||||
|
# -----------------
|
||||||
|
# name resolution in comprehensions.
|
||||||
|
# -----------------
|
||||||
|
|
||||||
|
def x():
|
||||||
|
#? 22
|
||||||
|
[a for a in h if hio]
|
||||||
|
if hio: pass
|
||||||
|
|
||||||
# -----------------
|
# -----------------
|
||||||
# ternary operator
|
# ternary operator
|
||||||
|
|||||||
Reference in New Issue
Block a user