I used astsearch to search all combinations and also only found four (which were not sliced, just indexed)
sympymaster%=$astsearch 'range(?)[?]' sympy/
sympy/matrices/dense.py
77| i = range(self.rows)[i]
83| j = range(self.cols)[j]
sympy/matrices/sparse.py
99| i = range(self.rows)[i]
107| j = range(self.cols)[j]
sympymaster%=$astsearch 'range(?)[?:?]' sympy/
sympymaster%=$astsearch 'range(?)[?:?:?]' sympy/
sympymaster%=$astsearch 'range(?)[?::?]' sympy/
sympymaster%=$astsearch 'range(?)[:?:?]' sympy/
sympymaster%=$astsearch 'range(?)[?:?:]' sympy/
sympymaster%=$astsearch 'range(?)[?:]' sympy/
sympymaster%=$astsearch 'range(?)[:?]' sympy/
sympymaster%=$astsearch 'range(?)[:]' sympy/
sympymaster%=$astsearch 'range(?)[::]' sympy/
sympymaster%=$astsearch 'range(?)[?::]' sympy/
sympymaster%=$astsearch 'range(?)[:?:]' sympy/
sympymaster%=$astsearch 'range(?)[::?]' sympy/
And there's probably a better way to manage the logic than by using IndexError anyway.