@@ -212,6 +212,10 @@ def ast3_parse(
212212 MatchAs = Any
213213 MatchOr = Any
214214 AstNode = Union [ast3 .expr , ast3 .stmt , ast3 .ExceptHandler ]
215+ if sys .version_info >= (3 , 11 ):
216+ TryStar = ast3 .TryStar
217+ else :
218+ TryStar = Any
215219except ImportError :
216220 try :
217221 from typed_ast import ast35 # type: ignore[attr-defined] # noqa: F401
@@ -1249,6 +1253,24 @@ def visit_Try(self, n: ast3.Try) -> TryStmt:
12491253 )
12501254 return self .set_line (node , n )
12511255
1256+ def visit_TryStar (self , n : TryStar ) -> TryStmt :
1257+ # TODO: we treat TryStar exactly like Try, which makes mypy not crash. See #12840
1258+ vs = [
1259+ self .set_line (NameExpr (h .name ), h ) if h .name is not None else None for h in n .handlers
1260+ ]
1261+ types = [self .visit (h .type ) for h in n .handlers ]
1262+ handlers = [self .as_required_block (h .body , h .lineno ) for h in n .handlers ]
1263+
1264+ node = TryStmt (
1265+ self .as_required_block (n .body , n .lineno ),
1266+ vs ,
1267+ types ,
1268+ handlers ,
1269+ self .as_block (n .orelse , n .lineno ),
1270+ self .as_block (n .finalbody , n .lineno ),
1271+ )
1272+ return self .set_line (node , n )
1273+
12521274 # Assert(expr test, expr? msg)
12531275 def visit_Assert (self , n : ast3 .Assert ) -> AssertStmt :
12541276 node = AssertStmt (self .visit (n .test ), self .visit (n .msg ))
0 commit comments