Fix incorrect Parameter range for *args and **kwargs (#10283) · astral-sh/ruff@a067d87 (original) (raw)

`@@ -176,19 +176,27 @@ mod tests {

`

176

176

`function_and_lambda! {

`

177

177

` test_function_no_args: "def f(): pass",

`

178

178

` test_function_pos_args: "def f(a, b, c): pass",

`

179

``

`-

test_function_pos_args_with_defaults: "def f(a, b=20, c=30): pass",

`

``

179

`+

test_function_posonly_and_pos_args: "def f(a, /, b, c): pass",

`

``

180

`+

test_function_pos_args_with_defaults: "def f(a, b=20, /, c=30): pass",

`

``

181

`+

test_function_pos_args_with_defaults_and_varargs_and_kwargs: "def f(a, b=20, /, c=30, *args, **kwargs): pass",

`

180

182

` test_function_kw_only_args: "def f(*, a, b, c): pass",

`

181

183

` test_function_kw_only_args_with_defaults: "def f(*, a, b=20, c=30): pass",

`

182

``

`-

test_function_pos_and_kw_only_args: "def f(a, b, c, *, d, e, f): pass",

`

183

``

`-

test_function_pos_and_kw_only_args_with_defaults: "def f(a, b, c, *, d, e=20, f=30): pass",

`

184

``

`-

test_function_pos_and_kw_only_args_with_defaults_and_varargs: "def f(a, b, c, *args, d, e=20, f=30): pass",

`

185

``

`-

test_function_pos_and_kw_only_args_with_defaults_and_varargs_and_kwargs: "def f(a, b, c, *args, d, e=20, f=30, **kwargs): pass",

`

``

184

`+

test_function_kw_only_args_with_defaults_and_varargs: "def f(*args, a, b=20, c=30): pass",

`

``

185

`+

test_function_kw_only_args_with_defaults_and_kwargs: "def f(*, a, b=20, c=30, **kwargs): pass",

`

``

186

`+

test_function_kw_only_args_with_defaults_and_varargs_and_kwargs: "def f(*args, a, b=20, c=30, **kwargs): pass",

`

``

187

`+

test_function_pos_and_kw_only_args: "def f(a, b, /, c, *, d, e, f): pass",

`

``

188

`+

test_function_pos_and_kw_only_args_with_defaults: "def f(a, b, /, c, *, d, e=20, f=30): pass",

`

``

189

`+

test_function_pos_and_kw_only_args_with_defaults_and_varargs: "def f(a, b, /, c, *args, d, e=20, f=30): pass",

`

``

190

`+

test_function_pos_and_kw_only_args_with_defaults_and_kwargs: "def f(a, b, /, c, *, d, e=20, f=30, **kwargs): pass",

`

``

191

`+

test_function_pos_and_kw_only_args_with_defaults_and_varargs_and_kwargs: "def f(a, b, /, c, *args, d, e=20, f=30, **kwargs): pass",

`

186

192

` test_lambda_no_args: "lambda: 1",

`

187

193

` test_lambda_pos_args: "lambda a, b, c: 1",

`

188

``

`-

test_lambda_pos_args_with_defaults: "lambda a, b=20, c=30: 1",

`

``

194

`+

test_lambda_posonly_args: "lambda a, b, /, c: 1",

`

``

195

`+

test_lambda_pos_args_with_defaults: "lambda a, b=20, /, c=30: 1",

`

189

196

` test_lambda_kw_only_args: "lambda *, a, b, c: 1",

`

190

197

` test_lambda_kw_only_args_with_defaults: "lambda *, a, b=20, c=30: 1",

`

191

``

`-

test_lambda_pos_and_kw_only_args: "lambda a, b, c, *, d, e: 0",

`

``

198

`+

test_lambda_pos_and_kw_only_args: "lambda a, b, /, c, *, d, e: 0",

`

``

199

`+

test_lambda_pos_and_kw_only_args_and_vararg_and_kwarg: "lambda a, b, /, c, *d, e, **f: 0",

`

192

200

`}

`

193

201

``

194

202

`fn function_parse_error(src: &str) -> LexicalErrorType {

`

`@@ -219,14 +227,16 @@ mod tests {

`

219

227

` test_duplicates_f2: "def f(a, *, a): pass", LexicalErrorType::DuplicateArgumentError("a".to_string().into_boxed_str()),

`

220

228

` test_duplicates_f3: "def f(a, a=20): pass", LexicalErrorType::DuplicateArgumentError("a".to_string().into_boxed_str()),

`

221

229

` test_duplicates_f4: "def f(a, *a): pass", LexicalErrorType::DuplicateArgumentError("a".to_string().into_boxed_str()),

`

222

``

`-

test_duplicates_f5: "def f(a, *, **a): pass", LexicalErrorType::DuplicateArgumentError("a".to_string().into_boxed_str()),

`

``

230

`+

test_duplicates_f5: "def f(a, *, b, **a): pass", LexicalErrorType::DuplicateArgumentError("a".to_string().into_boxed_str()),

`

223

231

` test_duplicates_l1: "lambda a, a: 1", LexicalErrorType::DuplicateArgumentError("a".to_string().into_boxed_str()),

`

224

232

` test_duplicates_l2: "lambda a, *, a: 1", LexicalErrorType::DuplicateArgumentError("a".to_string().into_boxed_str()),

`

225

233

` test_duplicates_l3: "lambda a, a=20: 1", LexicalErrorType::DuplicateArgumentError("a".to_string().into_boxed_str()),

`

226

234

` test_duplicates_l4: "lambda a, *a: 1", LexicalErrorType::DuplicateArgumentError("a".to_string().into_boxed_str()),

`

227

``

`-

test_duplicates_l5: "lambda a, *, **a: 1", LexicalErrorType::DuplicateArgumentError("a".to_string().into_boxed_str()),

`

``

235

`+

test_duplicates_l5: "lambda a, *, b, **a: 1", LexicalErrorType::DuplicateArgumentError("a".to_string().into_boxed_str()),

`

228

236

` test_default_arg_error_f: "def f(a, b=20, c): pass", LexicalErrorType::DefaultArgumentError,

`

229

237

` test_default_arg_error_l: "lambda a, b=20, c: 1", LexicalErrorType::DefaultArgumentError,

`

``

238

`+

test_named_arguments_follow_bare_star_1: "def f(*): pass", LexicalErrorType::OtherError("named arguments must follow bare *".to_string().into_boxed_str()),

`

``

239

`+

test_named_arguments_follow_bare_star_2: "def f(*, **kwargs): pass", LexicalErrorType::OtherError("named arguments must follow bare *".to_string().into_boxed_str()),

`

230

240

``

231

241

`// Check some calls.

`

232

242

` test_positional_arg_error_f: "f(b=20, c)", LexicalErrorType::PositionalArgumentError,

`