fix a default argument issue

This commit is contained in:
Dave Halter
2014-06-08 14:19:22 +02:00
parent c8b7d79b54
commit 920eb3b06a
2 changed files with 20 additions and 2 deletions

View File

@@ -170,10 +170,11 @@ def get_params(evaluator, func, var_args):
# about the values inside, it's about the names. Jedi needs to now that
# there's nothing to find for certain names.
for k in set(param_dict) - keys_used:
result.append(_gen_param_name_copy(func, var_args, param_dict[k]))
param = param_dict[k]
result.append(_gen_param_name_copy(func, var_args, param))
if not (non_matching_keys or had_multiple_value_error
or param_dict[k].stars):
or param.stars or param.assignment_details):
# add a warning only if there's not another one.
calling_va = _get_calling_var_args(evaluator, var_args)
if calling_va is not None:

View File

@@ -38,3 +38,20 @@ two_params(1, y=2)
two_params(1, x=2)
#! 17 type-error-too-many-arguments
two_params(1, 2, y=3)
# -----------------
# default arguments
# -----------------
def default(x, y=1, z=2):
return x
#! 7 type-error-too-few-arguments
default()
default(1)
default(1, 2)
default(1, 2, 3)
#! 17 type-error-too-many-arguments
default(1, 2, 3, 4)
default(x=1)