mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-11-15 01:17:27 +00:00
fix: resolve all inference vars in InferenceResult::assoc_resolutions
This commit is contained in:
parent
4596847a88
commit
bb99d2a6fb
2 changed files with 34 additions and 0 deletions
|
@ -535,6 +535,9 @@ impl<'a> InferenceContext<'a> {
|
|||
for (_, subst) in result.method_resolutions.values_mut() {
|
||||
*subst = table.resolve_completely(subst.clone());
|
||||
}
|
||||
for (_, subst) in result.assoc_resolutions.values_mut() {
|
||||
*subst = table.resolve_completely(subst.clone());
|
||||
}
|
||||
for adjustment in result.expr_adjustments.values_mut().flatten() {
|
||||
adjustment.target = table.resolve_completely(adjustment.target.clone());
|
||||
}
|
||||
|
|
|
@ -4079,6 +4079,37 @@ const FOO$0: f64 = 1.0f64;
|
|||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn hover_const_eval_in_generic_trait() {
|
||||
// Doesn't compile, but we shouldn't crash.
|
||||
check(
|
||||
r#"
|
||||
trait Trait<T> {
|
||||
const FOO: bool = false;
|
||||
}
|
||||
struct S<T>(T);
|
||||
impl<T> Trait<T> for S<T> {
|
||||
const FOO: bool = true;
|
||||
}
|
||||
|
||||
fn test() {
|
||||
S::FOO$0;
|
||||
}
|
||||
"#,
|
||||
expect![[r#"
|
||||
*FOO*
|
||||
|
||||
```rust
|
||||
test
|
||||
```
|
||||
|
||||
```rust
|
||||
const FOO: bool = true
|
||||
```
|
||||
"#]],
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn hover_const_pat() {
|
||||
check(
|
||||
|
|
Loading…
Reference in a new issue