What you want is some sort of normalize to resolve the projection; perhaps rustc_trait_selection::traits::normalize? The raw query is on tcx but you're supposed to call it through a wrapper normalize rather than directly and I can't quickly find the one you probably want in rustdoc.
has_projections `for<'r> fn(&'r mut range::Rng) -> std::option::Option<<range::Rng as std::iter::Iterator>::Item> {<range::Rng as std::iter::Iterator>::next}` = false
all the rest of the code in normalize_erasing_regions skips normalization when the above is false. Is the idea that the normalization doesn't happen for a whole function signature but must be done separately on each component?
I'm not super familiar with this part of rustc, but yeah, you'll have the most luck if you can drill down to the part of the type with the projection you care about and then normalize/resolve that.