mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-07 22:44:27 +08:00
too many values and too few values errors implemented for list comprehensions tuple unpacking.
This commit is contained in:
@@ -22,6 +22,8 @@ CODES = {
|
||||
'type-error-not-iterable': (11, TypeError, None),
|
||||
'type-error-isinstance': (12, TypeError, None),
|
||||
'type-error-not-subscriptable': (13, TypeError, None),
|
||||
'value-error-too-many-values': (13, ValueError, None),
|
||||
'value-error-too-few-values': (13, ValueError, None),
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -392,16 +392,20 @@ def unpack_tuple_to_dict(evaluator, types, exprlist):
|
||||
'testlist_star_expr'):
|
||||
dct = {}
|
||||
parts = iter(exprlist.children[::2])
|
||||
for iter_types in py__iter__(evaluator, types, exprlist):
|
||||
n = 1
|
||||
for iter_types in enumerate(py__iter__(evaluator, types, exprlist)):
|
||||
n += 1
|
||||
try:
|
||||
part = next(parts)
|
||||
except StopIteration:
|
||||
raise NotImplementedError
|
||||
analysis.add(evaluator, 'value-error-too-many-values', part,
|
||||
message="ValueError: too many values to unpack (expected %s)" % n)
|
||||
else:
|
||||
dct.update(unpack_tuple_to_dict(evaluator, iter_types, part))
|
||||
has_parts = next(parts, None)
|
||||
if has_parts is not None:
|
||||
raise NotImplementedError
|
||||
analysis.add(evaluator, 'value-error-too-few-values', has_parts,
|
||||
message="ValueError: need more than %s values to unpack" % n)
|
||||
return dct
|
||||
elif exprlist.type == 'power':
|
||||
# Something like ``arr[x], var = ...``.
|
||||
|
||||
@@ -28,3 +28,14 @@ tuple(a + 3 for a in [''])
|
||||
|
||||
#! 19 name-error
|
||||
(1 for a in [1] if NOT_DEFINED)
|
||||
|
||||
# ----------
|
||||
# unbalanced sides.
|
||||
# ----------
|
||||
|
||||
# ok
|
||||
(1 for a, b in [(1, 2)])
|
||||
#! 13 value-error-too-few-values
|
||||
(1 for a, b, c in [(1, 2)])
|
||||
#! 10 value-error-too-many-values
|
||||
(1 for a, b in [(1, 2, 3)])
|
||||
|
||||
Reference in New Issue
Block a user