diff --git a/jedi/evaluate/param.py b/jedi/evaluate/param.py index 4b5eda37..8913b88c 100644 --- a/jedi/evaluate/param.py +++ b/jedi/evaluate/param.py @@ -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: diff --git a/test/static_analysis/arguments.py b/test/static_analysis/arguments.py index 9e1d7965..59c9c06a 100644 --- a/test/static_analysis/arguments.py +++ b/test/static_analysis/arguments.py @@ -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)