@@ -330,6 +330,24 @@ def __init__(self):
330330 """
331331 self .expect_failure (block , err , lineno = 8 )
332332
333+ def test_ambiguous_group_and_optional_parameters (self ):
334+ err = ("Function 'my_test_func' has an ambiguous group configuration: "
335+ "a call with 2 argument(s) can be parsed in more than one way." )
336+ block = """
337+ /*[clinic input]
338+ my_test_func
339+
340+ [
341+ a: object
342+ b: object
343+ ]
344+ c: object = None
345+ d: object = None
346+ /
347+ [clinic start generated code]*/
348+ """
349+ self .expect_failure (block , err )
350+
333351 def test_star_after_vararg (self ):
334352 err = "'my_test_func' uses '*' more than once."
335353 block = """
@@ -4003,6 +4021,27 @@ def test_varpos_kwonly_req_opt(self):
40034021 self .assertEqual (fn (1 , a = 2 , b = 3 ), ((1 ,), 2 , 3 , False ))
40044022 self .assertEqual (fn (1 , a = 2 , b = 3 , c = 4 ), ((1 ,), 2 , 3 , 4 ))
40054023
4024+ def test_group_and_opt (self ):
4025+ # fn([a, b,] c=None)
4026+ fn = ac_tester .group_and_opt
4027+ self .assertEqual (fn (), (False , None , None , None ))
4028+ self .assertEqual (fn (1 ), (False , None , None , 1 ))
4029+ self .assertEqual (fn (1 , 2 ), (True , 1 , 2 , None ))
4030+ self .assertEqual (fn (1 , 2 , 3 ), (True , 1 , 2 , 3 ))
4031+ self .assertRaises (TypeError , fn , 1 , 2 , 3 , 4 )
4032+ self .assertRaises (TypeError , fn , c = 1 )
4033+
4034+ def test_group_and_two_opt (self ):
4035+ # fn([a, b, c,] d=None, e=None)
4036+ fn = ac_tester .group_and_two_opt
4037+ self .assertEqual (fn (), (False , None , None , None , None , None ))
4038+ self .assertEqual (fn (1 ), (False , None , None , None , 1 , None ))
4039+ self .assertEqual (fn (1 , 2 ), (False , None , None , None , 1 , 2 ))
4040+ self .assertEqual (fn (1 , 2 , 3 ), (True , 1 , 2 , 3 , None , None ))
4041+ self .assertEqual (fn (1 , 2 , 3 , 4 ), (True , 1 , 2 , 3 , 4 , None ))
4042+ self .assertEqual (fn (1 , 2 , 3 , 4 , 5 ), (True , 1 , 2 , 3 , 4 , 5 ))
4043+ self .assertRaises (TypeError , fn , 1 , 2 , 3 , 4 , 5 , 6 )
4044+
40064045 def test_gh_32092_oob (self ):
40074046 ac_tester .gh_32092_oob (1 , 2 , 3 , 4 , kw1 = 5 , kw2 = 6 )
40084047
0 commit comments