af30656785
Normalize associated types in paths in expressions Part of #14393 When we resolve paths in expressions (either path expressions or paths in struct expressions), there's a need of projection normalization, which `TyLoweringContext` cannot do on its own. We've been properly applying normalization for paths in struct expressions without type anchor, but not for others: ```rust enum E { S { v: i32 } Empty, } impl Foo for Bar { type Assoc = E; fn foo() { let _ = Self::Assoc::S { v: 42 }; // path in struct expr without type anchor; we already support this let _ = <Self>::Assoc::S { v: 42 }; // path in struct expr with type anchor; resolves with this PR let _ = Self::Assoc::Empty; // path expr; resolves with this PR } } ``` With this PR we correctly resolve the whole path, but we need some more tweaks in HIR and/or IDE layers to properly resolve a qualifier (prefix) of such paths and provide IDE features that are pointed out in #14393 to be currently broken. |
||
---|---|---|
.. | ||
consteval | ||
diagnostics | ||
infer | ||
layout | ||
mir | ||
tests | ||
autoderef.rs | ||
builder.rs | ||
chalk_db.rs | ||
chalk_ext.rs | ||
consteval.rs | ||
db.rs | ||
diagnostics.rs | ||
display.rs | ||
infer.rs | ||
inhabitedness.rs | ||
interner.rs | ||
lang_items.rs | ||
layout.rs | ||
lib.rs | ||
lower.rs | ||
mapping.rs | ||
method_resolution.rs | ||
mir.rs | ||
primitive.rs | ||
test_db.rs | ||
tests.rs | ||
tls.rs | ||
traits.rs | ||
utils.rs |