mirror of
https://github.com/davidhalter/jedi.git
synced 2026-05-07 06:24:01 +08:00
Attempt to improve tuple unpackings
This commit is contained in:
@@ -865,10 +865,16 @@ def check_tuple_assignments(name, value_set):
|
||||
# For no star unpacking is not possible.
|
||||
return NO_VALUES
|
||||
i = 0
|
||||
lazy_value = None
|
||||
while i <= index:
|
||||
try:
|
||||
lazy_value = next(iterated)
|
||||
except StopIteration:
|
||||
# A desperate attempt to fix inference for tuples from an
|
||||
# iterator.
|
||||
if lazy_value is not None:
|
||||
return lazy_value.infer()
|
||||
|
||||
# We could do this with the default param in next. But this
|
||||
# would allow this loop to run for a very long time if the
|
||||
# index number is high. Therefore break if the loop is
|
||||
|
||||
@@ -155,8 +155,9 @@ class AbstractInstanceValue(Value):
|
||||
return super().py__iter__(contextualized_node)
|
||||
|
||||
def iterate():
|
||||
for generator in self.execute_function_slots(iter_slot_names):
|
||||
yield from generator.py__next__(contextualized_node)
|
||||
yield LazyKnownValues(
|
||||
self.execute_function_slots(iter_slot_names).py__next__(contextualized_node).infer()
|
||||
)
|
||||
return iterate()
|
||||
|
||||
def __repr__(self):
|
||||
|
||||
@@ -207,16 +207,16 @@ C().a
|
||||
(f, g) = (1,)
|
||||
#? int()
|
||||
f
|
||||
#? []
|
||||
g.
|
||||
#? int()
|
||||
g
|
||||
|
||||
(f, g, h) = (1,'')
|
||||
#? int()
|
||||
f
|
||||
#? str()
|
||||
g
|
||||
#? []
|
||||
h.
|
||||
#? str()
|
||||
h
|
||||
|
||||
(f1, g1) = 1
|
||||
#? []
|
||||
@@ -311,9 +311,13 @@ for x in {1: 3.0, '': 1j}:
|
||||
dict().values().__iter__
|
||||
|
||||
d = dict(a=3, b='')
|
||||
x, = d.values()
|
||||
x, y, z = d.values()
|
||||
#? int() str()
|
||||
x
|
||||
#? int() str()
|
||||
y
|
||||
#? int() str()
|
||||
z
|
||||
#? int()
|
||||
d['a']
|
||||
#? int() str() None
|
||||
|
||||
Reference in New Issue
Block a user