summaryrefslogtreecommitdiff
path: root/Tools/parser/unparse.py
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2020-03-07 18:55:32 +0200
committerGitHub <noreply@github.com>2020-03-07 18:55:32 +0200
commit92b72788ecf2ee5dfac780c7dfb5ee5350fc641d (patch)
tree275b322f60b15b95649a6687d787583019009e23 /Tools/parser/unparse.py
parentd692d52f4aaeb6feaabb18f18d49907dd578fbeb (diff)
downloadcpython-git-92b72788ecf2ee5dfac780c7dfb5ee5350fc641d.tar.gz
[3.8] bpo-39889: Fix unparse.py for subscript. (GH-18824). (GH-18826)
(cherry picked from commit c4928fc1a853f3f84e2b4ec1253d0349137745e5)
Diffstat (limited to 'Tools/parser/unparse.py')
-rw-r--r--Tools/parser/unparse.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/Tools/parser/unparse.py b/Tools/parser/unparse.py
index a5cc000676..0642b84dcf 100644
--- a/Tools/parser/unparse.py
+++ b/Tools/parser/unparse.py
@@ -556,7 +556,17 @@ class Unparser:
def _Subscript(self, t):
self.dispatch(t.value)
self.write("[")
- self.dispatch(t.slice)
+ if (isinstance(t.slice, ast.Index)
+ and isinstance(t.slice.value, ast.Tuple)
+ and t.slice.value.elts):
+ if len(t.slice.value.elts) == 1:
+ elt = t.slice.value.elts[0]
+ self.dispatch(elt)
+ self.write(",")
+ else:
+ interleave(lambda: self.write(", "), self.dispatch, t.slice.value.elts)
+ else:
+ self.dispatch(t.slice)
self.write("]")
def _Starred(self, t):
@@ -581,7 +591,12 @@ class Unparser:
self.dispatch(t.step)
def _ExtSlice(self, t):
- interleave(lambda: self.write(', '), self.dispatch, t.dims)
+ if len(t.dims) == 1:
+ elt = t.dims[0]
+ self.dispatch(elt)
+ self.write(",")
+ else:
+ interleave(lambda: self.write(', '), self.dispatch, t.dims)
# argument
def _arg(self, t):