The behavior here isn't really ideal, but we can't really do much better given the current state of constant evaluation. The changes to ExprUseVisitor are to avoid a compile error; apparently that bit of code is extremely sensitive to changes in other areas of the compiler. Fixes #28670, and probably a bunch of duplicates.