Skip to content

Commit 3ddde7a

Browse files
committed
Small corrections to array slice parsing
1 parent 2710b03 commit 3ddde7a

File tree

2 files changed

+26
-8
lines changed

2 files changed

+26
-8
lines changed

rewrite/rewrite/python/_parser_visitor.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1743,14 +1743,22 @@ def visit_SetComp(self, node):
17431743

17441744
def visit_Slice(self, node):
17451745
prefix = self.__whitespace()
1746-
if node.lower:
1747-
lower = self.__pad_right(self.__convert(node.lower), self.__source_before(':'))
1748-
else:
1749-
lower = self.__pad_right(j.Empty(random_id(), Space.EMPTY, Markers.EMPTY), self.__source_before(':'))
1750-
upper = self.__pad_right(
1751-
self.__convert(node.upper) if node.upper else j.Empty(random_id(), Space.EMPTY, Markers.EMPTY),
1752-
self.__source_before(':') if node.step else self.__whitespace('\n'))
1753-
step = self.__pad_right(self.__convert(node.step), self.__whitespace('\n')) if node.step else None
1746+
1747+
lower_expr = self.__convert(node.lower) if node.lower else None
1748+
right_padding = self.__whitespace(':')
1749+
lower = self.__pad_right(lower_expr, right_padding) if lower_expr else None
1750+
self._cursor += 1
1751+
1752+
upper_expr = self.__convert(node.upper) if node.upper else None
1753+
right_padding = self.__whitespace()
1754+
has_step = self.__cursor_at(':')
1755+
upper = self.__pad_right(upper_expr if node.upper else j.Empty(random_id(), self.__whitespace(), Markers.EMPTY), right_padding)
1756+
self._cursor += 1
1757+
1758+
step = self.__pad_right(
1759+
self.__convert(node.step) if node.step else j.Empty(random_id(), Space.EMPTY, Markers.EMPTY),
1760+
self.__whitespace(']')) if node.step or has_step else None
1761+
17541762
return py.Slice(
17551763
random_id(),
17561764
prefix,

rewrite/tests/python/all/array_test.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,16 @@ def test_array_slice_no_upper():
2626
rewrite_run(python("a = [1, 2][0:]"))
2727

2828

29+
def test_array_slice_all_empty():
30+
# language=python
31+
rewrite_run(python("a = [1, 2][ : : ]"))
32+
33+
34+
def test_array_slice_empty_upper_and_step():
35+
# language=python
36+
rewrite_run(python("a = [1, 2][0::]"))
37+
38+
2939
def test_array_slice_no_lower():
3040
# language=python
3141
rewrite_run(python("a = [1, 2][:1]"))

0 commit comments

Comments
 (0)