From 67a9c457e665e99f5976f7ceb2724f308dcd1bfb Mon Sep 17 00:00:00 2001 From: Teddy_Wang Date: Thu, 9 Sep 2021 23:31:13 -0400 Subject: [PATCH] Add tests. The tests with coercion fail, but I have no clue why. --- crates/ide/src/hover.rs | 64 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs index af65cfce86..49c9f487e0 100644 --- a/crates/ide/src/hover.rs +++ b/crates/ide/src/hover.rs @@ -4510,4 +4510,68 @@ fn foo() -> Option<()> { ```"#]], ); } + + + #[test] + fn hover_deref_expr() { + check_hover_range( + r#" +//- minicore: deref +struct DerefExample { + value: T +} + +impl Deref for DerefExample { + type Target = T; + + fn deref(&self) -> &Self::Target { + &self.value + } +} + +fn foo() { + let x = DerefExample { value: 0 }; + let y: i32 = $0*x$0; +} +"#, + expect![[r#" + ```text + Type: i32 + Derefenced from: DerefExample + ``` + "#]], + ); + } + + #[test] + fn hover_deref_expr_with_coercion() { + check_hover_range( + r#" +//- minicore: deref +struct DerefExample { + value: T +} + +impl Deref for DerefExample { + type Target = T; + + fn deref(&self) -> &Self::Target { + &self.value + } +} + +fn foo() { + let x = DerefExample { value: &&&&&0 }; + let y: &i32 = $0*x$0; +} +"#, + expect![[r#" + ```text + Type: &&&&&i32 + Coerced to: &i32 + Derefenced from: DerefExample<&&&&&i32> + ``` + "#]], + ); + } }