Skip to content
This repository was archived by the owner on Jan 13, 2026. It is now read-only.

Commit 8d9a5a0

Browse files
committed
Correct parsing of array slices
1 parent 3ddde7a commit 8d9a5a0

File tree

2 files changed

+20
-7
lines changed

2 files changed

+20
-7
lines changed

rewrite/rewrite/python/_parser_visitor.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1745,19 +1745,21 @@ def visit_Slice(self, node):
17451745
prefix = self.__whitespace()
17461746

17471747
lower_expr = self.__convert(node.lower) if node.lower else None
1748-
right_padding = self.__whitespace(':')
1748+
right_padding = self.__whitespace(':') if node.lower else Space.EMPTY
17491749
lower = self.__pad_right(lower_expr, right_padding) if lower_expr else None
17501750
self._cursor += 1
17511751

17521752
upper_expr = self.__convert(node.upper) if node.upper else None
17531753
right_padding = self.__whitespace()
1754+
upper = self.__pad_right(upper_expr if node.upper else j.Empty(random_id(), Space.EMPTY, Markers.EMPTY), right_padding)
17541755
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
1756+
if has_step:
1757+
self._cursor += 1
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 Space.EMPTY
1761+
else:
1762+
step = None
17611763

17621764
return py.Slice(
17631765
random_id(),

rewrite/tests/python/all/array_test.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,17 @@ def test_array_slice_all_empty():
3131
rewrite_run(python("a = [1, 2][ : : ]"))
3232

3333

34+
def test_comment():
35+
# language=python
36+
rewrite_run(
37+
python(r'''
38+
a = d[:0]
39+
a = d[0:]
40+
'''
41+
)
42+
)
43+
44+
3445
def test_array_slice_empty_upper_and_step():
3546
# language=python
3647
rewrite_run(python("a = [1, 2][0::]"))

0 commit comments

Comments
 (0)