Skip to content

Commit a9f151c

Browse files
committed
Avoid inplace mutation
1 parent 22e8e3a commit a9f151c

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

mypy/fastparse.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from mypy.util import unnamed_function
2+
import copy
23
import re
34
import sys
45
import warnings
@@ -1570,19 +1571,20 @@ def visit_Subscript(self, n: ast3.Subscript) -> Type:
15701571
elif isinstance(n.slice, ast3.Index):
15711572
sliceval: Any = n.slice.value
15721573
elif isinstance(n.slice, ast3.Slice):
1573-
sliceval = n.slice
1574+
sliceval = copy.deepcopy(n.slice) # so we don't mutate passed AST
15741575
if getattr(sliceval, "col_offset", None) is None:
15751576
# Fix column information so that we get Python 3.9+ message order
15761577
sliceval.col_offset = sliceval.lower.col_offset
15771578
else:
15781579
assert isinstance(n.slice, ast3.ExtSlice)
1579-
for s in n.slice.dims:
1580+
dims = copy.deepcopy(n.slice.dims)
1581+
for s in dims:
15801582
if getattr(s, "col_offset", None) is None:
15811583
if isinstance(s, ast3.Index):
15821584
s.col_offset = s.value.col_offset # type: ignore
15831585
elif isinstance(s, ast3.Slice):
15841586
s.col_offset = s.lower.col_offset # type: ignore
1585-
sliceval = ast3.Tuple(n.slice.dims, n.ctx)
1587+
sliceval = ast3.Tuple(dims, n.ctx)
15861588

15871589
empty_tuple_index = False
15881590
if isinstance(sliceval, ast3.Tuple):

0 commit comments

Comments
 (0)