|
1 | 1 | from mypy.util import unnamed_function
|
| 2 | +import copy |
2 | 3 | import re
|
3 | 4 | import sys
|
4 | 5 | import warnings
|
@@ -1570,19 +1571,20 @@ def visit_Subscript(self, n: ast3.Subscript) -> Type:
|
1570 | 1571 | elif isinstance(n.slice, ast3.Index):
|
1571 | 1572 | sliceval: Any = n.slice.value
|
1572 | 1573 | elif isinstance(n.slice, ast3.Slice):
|
1573 |
| - sliceval = n.slice |
| 1574 | + sliceval = copy.deepcopy(n.slice) # so we don't mutate passed AST |
1574 | 1575 | if getattr(sliceval, "col_offset", None) is None:
|
1575 | 1576 | # Fix column information so that we get Python 3.9+ message order
|
1576 | 1577 | sliceval.col_offset = sliceval.lower.col_offset
|
1577 | 1578 | else:
|
1578 | 1579 | 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: |
1580 | 1582 | if getattr(s, "col_offset", None) is None:
|
1581 | 1583 | if isinstance(s, ast3.Index):
|
1582 | 1584 | s.col_offset = s.value.col_offset # type: ignore
|
1583 | 1585 | elif isinstance(s, ast3.Slice):
|
1584 | 1586 | 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) |
1586 | 1588 |
|
1587 | 1589 | empty_tuple_index = False
|
1588 | 1590 | if isinstance(sliceval, ast3.Tuple):
|
|
0 commit comments