mirror of
https://github.com/python/cpython.git
synced 2025-10-08 08:01:55 +00:00
bpo-45292: [PEP-654] add except* (GH-29581)
This commit is contained in:
parent
850aefc2c6
commit
d60457a667
34 changed files with 7070 additions and 3332 deletions
21
Lib/ast.py
21
Lib/ast.py
|
@ -683,6 +683,7 @@ class _Unparser(NodeVisitor):
|
|||
self._type_ignores = {}
|
||||
self._indent = 0
|
||||
self._avoid_backslashes = _avoid_backslashes
|
||||
self._in_try_star = False
|
||||
|
||||
def interleave(self, inter, f, seq):
|
||||
"""Call f on each item in seq, calling inter() in between."""
|
||||
|
@ -953,7 +954,7 @@ class _Unparser(NodeVisitor):
|
|||
self.write(" from ")
|
||||
self.traverse(node.cause)
|
||||
|
||||
def visit_Try(self, node):
|
||||
def do_visit_try(self, node):
|
||||
self.fill("try")
|
||||
with self.block():
|
||||
self.traverse(node.body)
|
||||
|
@ -968,8 +969,24 @@ class _Unparser(NodeVisitor):
|
|||
with self.block():
|
||||
self.traverse(node.finalbody)
|
||||
|
||||
def visit_Try(self, node):
|
||||
prev_in_try_star = self._in_try_star
|
||||
try:
|
||||
self._in_try_star = False
|
||||
self.do_visit_try(node)
|
||||
finally:
|
||||
self._in_try_star = prev_in_try_star
|
||||
|
||||
def visit_TryStar(self, node):
|
||||
prev_in_try_star = self._in_try_star
|
||||
try:
|
||||
self._in_try_star = True
|
||||
self.do_visit_try(node)
|
||||
finally:
|
||||
self._in_try_star = prev_in_try_star
|
||||
|
||||
def visit_ExceptHandler(self, node):
|
||||
self.fill("except")
|
||||
self.fill("except*" if self._in_try_star else "except")
|
||||
if node.type:
|
||||
self.write(" ")
|
||||
self.traverse(node.type)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue