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-not-iterable': (11, TypeError, None),
|
||||||
'type-error-isinstance': (12, TypeError, None),
|
'type-error-isinstance': (12, TypeError, None),
|
||||||
'type-error-not-subscriptable': (13, 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'):
|
'testlist_star_expr'):
|
||||||
dct = {}
|
dct = {}
|
||||||
parts = iter(exprlist.children[::2])
|
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:
|
try:
|
||||||
part = next(parts)
|
part = next(parts)
|
||||||
except StopIteration:
|
except StopIteration:
|
||||||
raise NotImplementedError
|
analysis.add(evaluator, 'value-error-too-many-values', part,
|
||||||
|
message="ValueError: too many values to unpack (expected %s)" % n)
|
||||||
else:
|
else:
|
||||||
dct.update(unpack_tuple_to_dict(evaluator, iter_types, part))
|
dct.update(unpack_tuple_to_dict(evaluator, iter_types, part))
|
||||||
has_parts = next(parts, None)
|
has_parts = next(parts, None)
|
||||||
if has_parts is not 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
|
return dct
|
||||||
elif exprlist.type == 'power':
|
elif exprlist.type == 'power':
|
||||||
# Something like ``arr[x], var = ...``.
|
# Something like ``arr[x], var = ...``.
|
||||||
|
|||||||
@@ -28,3 +28,14 @@ tuple(a + 3 for a in [''])
|
|||||||
|
|
||||||
#! 19 name-error
|
#! 19 name-error
|
||||||
(1 for a in [1] if NOT_DEFINED)
|
(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