diff options
Diffstat (limited to 'crates/ra_ide/src')
-rw-r--r-- | crates/ra_ide/src/hover.rs | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/crates/ra_ide/src/hover.rs b/crates/ra_ide/src/hover.rs index c4ee2ff79..2a06006e1 100644 --- a/crates/ra_ide/src/hover.rs +++ b/crates/ra_ide/src/hover.rs | |||
@@ -2080,4 +2080,61 @@ fn func(foo: i32) { if true { <|>foo; }; } | |||
2080 | ] | 2080 | ] |
2081 | "###); | 2081 | "###); |
2082 | } | 2082 | } |
2083 | |||
2084 | #[test] | ||
2085 | fn test_hover_associated_type_has_goto_type_action() { | ||
2086 | let (_, actions) = check_hover_result( | ||
2087 | " | ||
2088 | //- /main.rs | ||
2089 | trait Foo { | ||
2090 | type Item; | ||
2091 | fn get(self) -> Self::Item {} | ||
2092 | } | ||
2093 | |||
2094 | struct Bar{} | ||
2095 | struct S{} | ||
2096 | |||
2097 | impl Foo for S{ | ||
2098 | type Item = Bar; | ||
2099 | } | ||
2100 | |||
2101 | fn test() -> impl Foo { | ||
2102 | S{} | ||
2103 | } | ||
2104 | |||
2105 | fn main() { | ||
2106 | let s<|>t = test().get(); | ||
2107 | } | ||
2108 | ", | ||
2109 | &["Foo::Item<impl Foo>"], | ||
2110 | ); | ||
2111 | assert_debug_snapshot!(actions, | ||
2112 | @r###" | ||
2113 | [ | ||
2114 | GoToType( | ||
2115 | [ | ||
2116 | HoverGotoTypeData { | ||
2117 | mod_path: "Foo", | ||
2118 | nav: NavigationTarget { | ||
2119 | file_id: FileId( | ||
2120 | 1, | ||
2121 | ), | ||
2122 | full_range: 0..62, | ||
2123 | name: "Foo", | ||
2124 | kind: TRAIT_DEF, | ||
2125 | focus_range: Some( | ||
2126 | 6..9, | ||
2127 | ), | ||
2128 | container_name: None, | ||
2129 | description: Some( | ||
2130 | "trait Foo", | ||
2131 | ), | ||
2132 | docs: None, | ||
2133 | }, | ||
2134 | }, | ||
2135 | ], | ||
2136 | ), | ||
2137 | ] | ||
2138 | "###); | ||
2139 | } | ||
2083 | } | 2140 | } |