Unnamed repository; edit this file 'description' to name the repository.
Auto merge of #13749 - WaffleLapkin:remove_some_redudant_adjustment_hints, r=Veykril
fix: Don't show duplicated adjustment hints for blocks, ifs and matches Before: ![2022-12-09_21-10](https://user-images.githubusercontent.com/38225716/206761100-5511d91b-2543-4166-aa2c-abdb8bad3613.png) After: ![2022-12-09_21-22](https://user-images.githubusercontent.com/38225716/206761113-c58dbb5a-8616-4287-a3b4-69c13703294d.png) ---- I want to improve adjustment hints, this is the first step :)
bors 2022-12-10
parent a0296c2 · parent 7c9a85b · commit 1449204
-rw-r--r--crates/ide/src/inlay_hints.rs37
1 files changed, 35 insertions, 2 deletions
diff --git a/crates/ide/src/inlay_hints.rs b/crates/ide/src/inlay_hints.rs
index 37384c4e7e..08ce7be181 100644
--- a/crates/ide/src/inlay_hints.rs
+++ b/crates/ide/src/inlay_hints.rs
@@ -638,8 +638,12 @@ fn adjustment_hints(
return None;
}
- if let ast::Expr::ParenExpr(_) = expr {
- // These inherit from the inner expression which would result in duplicate hints
+ // These inherit from the inner expression which would result in duplicate hints
+ if let ast::Expr::ParenExpr(_)
+ | ast::Expr::IfExpr(_)
+ | ast::Expr::BlockExpr(_)
+ | ast::Expr::MatchExpr(_) = expr
+ {
return None;
}
@@ -3083,6 +3087,33 @@ fn main() {
//^^^^^^^^^^^&
//^^^^^^^^^^^*
(&mut Struct).by_ref_mut();
+
+ // Check that block-like expressions don't duplicate hints
+ let _: &mut [u32] = (&mut []);
+ //^^^^^^^<unsize>
+ //^^^^^^^&mut $
+ //^^^^^^^*
+ let _: &mut [u32] = { &mut [] };
+ //^^^^^^^<unsize>
+ //^^^^^^^&mut $
+ //^^^^^^^*
+ let _: &mut [u32] = unsafe { &mut [] };
+ //^^^^^^^<unsize>
+ //^^^^^^^&mut $
+ //^^^^^^^*
+ let _: &mut [u32] = if true {
+ &mut []
+ //^^^^^^^<unsize>
+ //^^^^^^^&mut $
+ //^^^^^^^*
+ } else {
+ loop {}
+ //^^^^^^^<never-to-any>
+ };
+ let _: &mut [u32] = match () { () => &mut [] }
+ //^^^^^^^<unsize>
+ //^^^^^^^&mut $
+ //^^^^^^^*
}
#[derive(Copy, Clone)]
@@ -3092,6 +3123,8 @@ impl Struct {
fn by_ref(&self) {}
fn by_ref_mut(&mut self) {}
}
+trait Trait {}
+impl Trait for Struct {}
"#,
)
}