@@ -274,6 +274,78 @@ def test_argument_unpacking_2(self):
274
274
def test_argument_unpacking_3 (self ):
275
275
self .validate ("""f(2, *a, *b, **b, **c, **d)""" )
276
276
277
+ def test_trailing_commas_1 (self ):
278
+ self .validate ("def f(a, b): call(a, b)" )
279
+ self .validate ("def f(a, b,): call(a, b,)" )
280
+
281
+ def test_trailing_commas_2 (self ):
282
+ self .validate ("def f(a, *b): call(a, *b)" )
283
+ self .validate ("def f(a, *b,): call(a, *b,)" )
284
+
285
+ def test_trailing_commas_3 (self ):
286
+ self .validate ("def f(a, b=1): call(a, b=1)" )
287
+ self .validate ("def f(a, b=1,): call(a, b=1,)" )
288
+
289
+ def test_trailing_commas_4 (self ):
290
+ self .validate ("def f(a, **b): call(a, **b)" )
291
+ self .validate ("def f(a, **b,): call(a, **b,)" )
292
+
293
+ def test_trailing_commas_5 (self ):
294
+ self .validate ("def f(*a, b=1): call(*a, b=1)" )
295
+ self .validate ("def f(*a, b=1,): call(*a, b=1,)" )
296
+
297
+ def test_trailing_commas_6 (self ):
298
+ self .validate ("def f(*a, **b): call(*a, **b)" )
299
+ self .validate ("def f(*a, **b,): call(*a, **b,)" )
300
+
301
+ def test_trailing_commas_7 (self ):
302
+ self .validate ("def f(*, b=1): call(*b)" )
303
+ self .validate ("def f(*, b=1,): call(*b,)" )
304
+
305
+ def test_trailing_commas_8 (self ):
306
+ self .validate ("def f(a=1, b=2): call(a=1, b=2)" )
307
+ self .validate ("def f(a=1, b=2,): call(a=1, b=2,)" )
308
+
309
+ def test_trailing_commas_9 (self ):
310
+ self .validate ("def f(a=1, **b): call(a=1, **b)" )
311
+ self .validate ("def f(a=1, **b,): call(a=1, **b,)" )
312
+
313
+ def test_trailing_commas_lambda_1 (self ):
314
+ self .validate ("f = lambda a, b: call(a, b)" )
315
+ self .validate ("f = lambda a, b,: call(a, b,)" )
316
+
317
+ def test_trailing_commas_lambda_2 (self ):
318
+ self .validate ("f = lambda a, *b: call(a, *b)" )
319
+ self .validate ("f = lambda a, *b,: call(a, *b,)" )
320
+
321
+ def test_trailing_commas_lambda_3 (self ):
322
+ self .validate ("f = lambda a, b=1: call(a, b=1)" )
323
+ self .validate ("f = lambda a, b=1,: call(a, b=1,)" )
324
+
325
+ def test_trailing_commas_lambda_4 (self ):
326
+ self .validate ("f = lambda a, **b: call(a, **b)" )
327
+ self .validate ("f = lambda a, **b,: call(a, **b,)" )
328
+
329
+ def test_trailing_commas_lambda_5 (self ):
330
+ self .validate ("f = lambda *a, b=1: call(*a, b=1)" )
331
+ self .validate ("f = lambda *a, b=1,: call(*a, b=1,)" )
332
+
333
+ def test_trailing_commas_lambda_6 (self ):
334
+ self .validate ("f = lambda *a, **b: call(*a, **b)" )
335
+ self .validate ("f = lambda *a, **b,: call(*a, **b,)" )
336
+
337
+ def test_trailing_commas_lambda_7 (self ):
338
+ self .validate ("f = lambda *, b=1: call(*b)" )
339
+ self .validate ("f = lambda *, b=1,: call(*b,)" )
340
+
341
+ def test_trailing_commas_lambda_8 (self ):
342
+ self .validate ("f = lambda a=1, b=2: call(a=1, b=2)" )
343
+ self .validate ("f = lambda a=1, b=2,: call(a=1, b=2,)" )
344
+
345
+ def test_trailing_commas_lambda_9 (self ):
346
+ self .validate ("f = lambda a=1, **b: call(a=1, **b)" )
347
+ self .validate ("f = lambda a=1, **b,: call(a=1, **b,)" )
348
+
277
349
278
350
# Adapted from Python 3's Lib/test/test_grammar.py:GrammarTests.testFuncdef
279
351
class TestFunctionAnnotations (GrammarTest ):
@@ -335,6 +407,42 @@ def test_12(self):
335
407
call(*args,)"""
336
408
self .validate (s )
337
409
410
+ def test_13 (self ):
411
+ self .validate ("def f(a: str, b: int) -> None: call(a, b)" )
412
+ self .validate ("def f(a: str, b: int,) -> None: call(a, b,)" )
413
+
414
+ def test_14 (self ):
415
+ self .validate ("def f(a: str, *b: int) -> None: call(a, *b)" )
416
+ self .validate ("def f(a: str, *b: int,) -> None: call(a, *b,)" )
417
+
418
+ def test_15 (self ):
419
+ self .validate ("def f(a: str, b: int=1) -> None: call(a, b=1)" )
420
+ self .validate ("def f(a: str, b: int=1,) -> None: call(a, b=1,)" )
421
+
422
+ def test_16 (self ):
423
+ self .validate ("def f(a: str, **b: int) -> None: call(a, **b)" )
424
+ self .validate ("def f(a: str, **b: int,) -> None: call(a, **b,)" )
425
+
426
+ def test_17 (self ):
427
+ self .validate ("def f(*a: str, b: int=1) -> None: call(*a, b=1)" )
428
+ self .validate ("def f(*a: str, b: int=1,) -> None: call(*a, b=1,)" )
429
+
430
+ def test_18 (self ):
431
+ self .validate ("def f(*a: str, **b: int) -> None: call(*a, **b)" )
432
+ self .validate ("def f(*a: str, **b: int,) -> None: call(*a, **b,)" )
433
+
434
+ def test_19 (self ):
435
+ self .validate ("def f(*, b: int=1) -> None: call(*b)" )
436
+ self .validate ("def f(*, b: int=1,) -> None: call(*b,)" )
437
+
438
+ def test_20 (self ):
439
+ self .validate ("def f(a: str='', b: int=2) -> None: call(a=a, b=2)" )
440
+ self .validate ("def f(a: str='', b: int=2,) -> None: call(a=a, b=2,)" )
441
+
442
+ def test_21 (self ):
443
+ self .validate ("def f(a: str='', **b: int) -> None: call(a=a, **b)" )
444
+ self .validate ("def f(a: str='', **b: int,) -> None: call(a=a, **b,)" )
445
+
338
446
339
447
# Adapted from Python 3's Lib/test/test_grammar.py:GrammarTests.test_var_annot
340
448
class TestVarAnnotations (GrammarTest ):
0 commit comments