Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rollup merge of rust-lang#59894 - Xanewok:save-assoc-ty-qpath, r=eddyb
save-analysis: Pull associated type definition using `qpath_def` Closes rust-lang/rls#1390 This (probably?) fixes the case where we run the save-analysis code on the following snippet: ```rust trait Test<'a> { type Thing: Test2; } trait Test2 { fn print(); } #[allow(unused)] fn example<T>(t: T) where T: for<'a> Test<'a> { T::Thing::print(); //~ ERROR cannot extract an associated type from a higher-ranked trait bound in this context // ^ only errors in save-analysis mode } ``` The chain is as follows: - culprit is `hir_ty_to_ty` - which calls `ast_ty_to_ty` in the `ItemCtxt` - which calls `associated_path_to_ty` - which finally fails on `projected_ty_from_poly_trait_ref` https://github.com/rust-lang/rust/blob/3de0106789468b211bcc3a25c09c0cf07119186d/src/librustc_typeck/collect.rs#L212-L224 I'm not exactly sure why `hir_ty_to_ty` fails - is it because it needs more setup from typeck to work correctly? I'm guessing the fix is okay since we just pull the already typeck'd data (we run save-analysis after all the analysis passes are complete) from the tables. With this change we can 'go to def' on all segments in the `T::Thing::print()` path.
- Loading branch information