HIR ty lowering: Clean up & refactor the lowering of type-relative paths by fmease · Pull Request #140218 · rust-lang/rust (original) (raw)

While rebasing #126651 I realized that HIR ty lowering could benefit from some spring cleaning now that it's been extended to handle RTN and mGCA paths.

More seriously, similar to my merged PR #118668 which unified the handling of all associated item constraints (assoc ty, const (ACE) & fn (RTN)), this PR (commit 695fcf5) partially1 deduplicates the resolution code for all type-relative paths (assoc ty, const (mGCA) & fn (RTN)).

Why? DRY'ing that part of the code means PR #126651 will automatically support RTN paths like Ty::AssocTy::assoc_fn(..) and it also implies shared diagnostic code and thus better diagnostics for RTN.


The other commits represent cleanups, renamings, moves. More notably, I've renamed path lowering methods to be a lot more descriptive, so ones lowering QPath(Resolved) paths now have _resolved_ in their name and ones lowering QPath(TypeRelative) paths now have _type_relative_ in their name. This should make it stupidly obvious what their purpose is.


Best reviewed commit by commit. The changes are close to trivial but the diff might make it look hairier.
r? compiler-errors

Footnotes

  1. Sadly, I couldn't unify as much compared to the other PR without introducing unnecessary unreachable!()s or rendering the code otherwise illegible with flags and micro helper traits.