This introduces a new way of identifying items/paths using extension traits with a composable set of functions rather than unique functions for various combinations of starting points and target items. Altogether this is a set of five traits: * `MaybeTypeckRes`: Allows both `LateContext` and `TypeckResults` to be used for type-dependent lookup. The implementation here will avoid ICEs by returning `None` when debug assertions are disabled. With assertions this will assert that we don't silently lookup anything from a different body than the current one and that a definition actually exists. * `HasHirId`: Simply a convenience to allow not typing `.hir_id` at call sites. * `MaybeQPath`: This is the old `MaybePath`. Extension functions for type-dependent path lookups exist here. A lot of these functions aren't used in the current PR, but what they accomplish is done in various places I haven't cleaned up yet. * `MaybeResPath`: Like `MaybeQPath`, but only does non-type-dependent lookup (`QPath::Resolved`). * `MaybeDef`: Extension functions for identifying the current definition and accessing properties. Implemented for several types for convenience. `MaybeDef` is implemented for `Option` to allow chaining methods together. e.g. `cx.ty_based_def(e).opt_parent(cx).opt_impl_ty(cx).is_diag_item(..)` would chaining `and_then` or `if let` on every step. `MaybeQPath` and `MaybeResPath` are also implemented for `Option` for the same reason. `ty_based_def` is just a shorter name for `type_dependent_def`. I'm not really attached to it, but it's nice that it's a little shorter. changelog: none |
||
|---|---|---|
| .. | ||
| test_utils | ||
| ui | ||
| ui-cargo | ||
| ui-internal | ||
| ui-toml | ||
| workspace_test | ||
| check-fmt.rs | ||
| clippy.toml | ||
| compile-test.rs | ||
| config-consistency.rs | ||
| config-metadata.rs | ||
| dogfood.rs | ||
| integration.rs | ||
| lint_message_convention.rs | ||
| missing-test-files.rs | ||
| no-profile-in-cargo-toml.rs | ||
| symbols-used.rs | ||
| versioncheck.rs | ||
| workspace.rs | ||