I think that there is an opportunity to do something here. I am thinking about adding a fix for the case where, like here, all the indices are constants. In that case, if the constants are all statically, "cleanly" convertible to integers, we go ahead with the optimization. In the case where that's not true, we skip ionization entirely.
I'd love to hear what people thought about that approach.
It seems to be what already happens implicitly. In other words, if the index is a double but converts to an integer without loss of precision, the ionized code runs happily. On the other hand, when there is a loss of precision, there is a bailout.