circuitpython/tests/basics/fun_calldblstar.py
David Lechner d5181034f2 py/bc: Fix checking for duplicate **kwargs.
The code was already checking for duplicate kwargs for named parameters but
if `**kwargs` was given as a parameter, it did not check for multiples of
the same argument name.

This fixes the issue by adding an addition test to catch duplicates and
adds a test to exercise the code.

Fixes issue #10083.

Signed-off-by: David Lechner <david@pybricks.com>
2022-11-28 11:23:22 +11:00

33 lines
565 B
Python

# test calling a function with keywords given by **dict
def f(a, b):
print(a, b)
f(1, **{'b':2})
f(1, **{'b':val for val in range(1)})
try:
f(1, **{len:2})
except TypeError:
print('TypeError')
# test calling a method with keywords given by **dict
class A:
def f(self, a, b):
print(a, b)
a = A()
a.f(1, **{'b':2})
a.f(1, **{'b':val for val in range(1)})
# test for duplicate keys in **kwargs not allowed
def f1(**kwargs):
print(kwargs)
try:
f1(**{'a': 1, 'b': 2}, **{'b': 3, 'c': 4})
except TypeError:
print('TypeError')