@@ -86,6 +86,8 @@ def to_tuple(t):
86
86
"try:\n pass\n except Exception:\n pass" ,
87
87
# TryFinally
88
88
"try:\n pass\n finally:\n pass" ,
89
+ # TryStarExcept
90
+ "try:\n pass\n except* Exception:\n pass" ,
89
91
# Assert
90
92
"assert v" ,
91
93
# Import
@@ -1310,6 +1312,26 @@ def test_try(self):
1310
1312
t = ast .Try ([p ], e , [p ], [ast .Expr (ast .Name ("x" , ast .Store ()))])
1311
1313
self .stmt (t , "must have Load context" )
1312
1314
1315
+ def test_try_star (self ):
1316
+ p = ast .Pass ()
1317
+ t = ast .TryStar ([], [], [], [p ])
1318
+ self .stmt (t , "empty body on TryStar" )
1319
+ t = ast .TryStar ([ast .Expr (ast .Name ("x" , ast .Store ()))], [], [], [p ])
1320
+ self .stmt (t , "must have Load context" )
1321
+ t = ast .TryStar ([p ], [], [], [])
1322
+ self .stmt (t , "TryStar has neither except handlers nor finalbody" )
1323
+ t = ast .TryStar ([p ], [], [p ], [p ])
1324
+ self .stmt (t , "TryStar has orelse but no except handlers" )
1325
+ t = ast .TryStar ([p ], [ast .ExceptHandler (None , "x" , [])], [], [])
1326
+ self .stmt (t , "empty body on ExceptHandler" )
1327
+ e = [ast .ExceptHandler (ast .Name ("x" , ast .Store ()), "y" , [p ])]
1328
+ self .stmt (ast .TryStar ([p ], e , [], []), "must have Load context" )
1329
+ e = [ast .ExceptHandler (None , "x" , [p ])]
1330
+ t = ast .TryStar ([p ], e , [ast .Expr (ast .Name ("x" , ast .Store ()))], [p ])
1331
+ self .stmt (t , "must have Load context" )
1332
+ t = ast .TryStar ([p ], e , [p ], [ast .Expr (ast .Name ("x" , ast .Store ()))])
1333
+ self .stmt (t , "must have Load context" )
1334
+
1313
1335
def test_assert (self ):
1314
1336
self .stmt (ast .Assert (ast .Name ("x" , ast .Store ()), None ),
1315
1337
"must have Load context" )
@@ -2316,6 +2338,7 @@ def main():
2316
2338
('Module' , [('Raise' , (1 , 0 , 1 , 25 ), ('Call' , (1 , 6 , 1 , 25 ), ('Name' , (1 , 6 , 1 , 15 ), 'Exception' , ('Load' ,)), [('Constant' , (1 , 16 , 1 , 24 ), 'string' , None )], []), None )], []),
2317
2339
('Module' , [('Try' , (1 , 0 , 4 , 6 ), [('Pass' , (2 , 2 , 2 , 6 ))], [('ExceptHandler' , (3 , 0 , 4 , 6 ), ('Name' , (3 , 7 , 3 , 16 ), 'Exception' , ('Load' ,)), None , [('Pass' , (4 , 2 , 4 , 6 ))])], [], [])], []),
2318
2340
('Module' , [('Try' , (1 , 0 , 4 , 6 ), [('Pass' , (2 , 2 , 2 , 6 ))], [], [], [('Pass' , (4 , 2 , 4 , 6 ))])], []),
2341
+ ('Module' , [('TryStar' , (1 , 0 , 4 , 6 ), [('Pass' , (2 , 2 , 2 , 6 ))], [('ExceptHandler' , (3 , 0 , 4 , 6 ), ('Name' , (3 , 8 , 3 , 17 ), 'Exception' , ('Load' ,)), None , [('Pass' , (4 , 2 , 4 , 6 ))])], [], [])], []),
2319
2342
('Module' , [('Assert' , (1 , 0 , 1 , 8 ), ('Name' , (1 , 7 , 1 , 8 ), 'v' , ('Load' ,)), None )], []),
2320
2343
('Module' , [('Import' , (1 , 0 , 1 , 10 ), [('alias' , (1 , 7 , 1 , 10 ), 'sys' , None )])], []),
2321
2344
('Module' , [('ImportFrom' , (1 , 0 , 1 , 17 ), 'sys' , [('alias' , (1 , 16 , 1 , 17 ), 'v' , None )], 0 )], []),
0 commit comments