aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide/src
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_ide/src')
-rw-r--r--crates/ra_ide/src/hover.rs35
1 files changed, 18 insertions, 17 deletions
diff --git a/crates/ra_ide/src/hover.rs b/crates/ra_ide/src/hover.rs
index c434e5c8b..c4ee2ff79 100644
--- a/crates/ra_ide/src/hover.rs
+++ b/crates/ra_ide/src/hover.rs
@@ -234,9 +234,10 @@ fn runnable_action(
234fn goto_type_action(db: &RootDatabase, def: Definition) -> Option<HoverAction> { 234fn goto_type_action(db: &RootDatabase, def: Definition) -> Option<HoverAction> {
235 match def { 235 match def {
236 Definition::Local(it) => { 236 Definition::Local(it) => {
237 let ty = it.ty(db); 237 let targets = it
238 let v = ty.flattened_type_items(db); 238 .ty(db)
239 let targets = v.into_iter() 239 .flattened_type_items(db)
240 .into_iter()
240 .map(|it| HoverGotoTypeData { 241 .map(|it| HoverGotoTypeData {
241 mod_path: adt_or_trait_mod_path(db, &it), 242 mod_path: adt_or_trait_mod_path(db, &it),
242 nav: it.to_nav(db), 243 nav: it.to_nav(db),
@@ -1980,7 +1981,7 @@ fn func(foo: i32) { if true { <|>foo; }; }
1980 } 1981 }
1981 1982
1982 #[test] 1983 #[test]
1983 fn test_hover_arg_goto_type_action() { 1984 fn test_hover_goto_type_action_links_order() {
1984 let (_, actions) = check_hover_result( 1985 let (_, actions) = check_hover_result(
1985 " 1986 "
1986 //- /lib.rs 1987 //- /lib.rs
@@ -1988,10 +1989,10 @@ fn func(foo: i32) { if true { <|>foo; }; }
1988 trait DynTrait<T> {} 1989 trait DynTrait<T> {}
1989 struct B<T> {} 1990 struct B<T> {}
1990 struct S {} 1991 struct S {}
1991 1992
1992 fn foo(a<|>rg: &impl ImplTrait<B<dyn DynTrait<S>>>) {} 1993 fn foo(a<|>rg: &impl ImplTrait<B<dyn DynTrait<B<S>>>>) {}
1993 ", 1994 ",
1994 &["&impl ImplTrait<B<dyn DynTrait<S>>>"], 1995 &["&impl ImplTrait<B<dyn DynTrait<B<S>>>>"],
1995 ); 1996 );
1996 assert_debug_snapshot!(actions, 1997 assert_debug_snapshot!(actions,
1997 @r###" 1998 @r###"
@@ -2018,20 +2019,20 @@ fn func(foo: i32) { if true { <|>foo; }; }
2018 }, 2019 },
2019 }, 2020 },
2020 HoverGotoTypeData { 2021 HoverGotoTypeData {
2021 mod_path: "S", 2022 mod_path: "B",
2022 nav: NavigationTarget { 2023 nav: NavigationTarget {
2023 file_id: FileId( 2024 file_id: FileId(
2024 1, 2025 1,
2025 ), 2026 ),
2026 full_range: 58..69, 2027 full_range: 43..57,
2027 name: "S", 2028 name: "B",
2028 kind: STRUCT_DEF, 2029 kind: STRUCT_DEF,
2029 focus_range: Some( 2030 focus_range: Some(
2030 65..66, 2031 50..51,
2031 ), 2032 ),
2032 container_name: None, 2033 container_name: None,
2033 description: Some( 2034 description: Some(
2034 "struct S", 2035 "struct B",
2035 ), 2036 ),
2036 docs: None, 2037 docs: None,
2037 }, 2038 },
@@ -2056,20 +2057,20 @@ fn func(foo: i32) { if true { <|>foo; }; }
2056 }, 2057 },
2057 }, 2058 },
2058 HoverGotoTypeData { 2059 HoverGotoTypeData {
2059 mod_path: "B", 2060 mod_path: "S",
2060 nav: NavigationTarget { 2061 nav: NavigationTarget {
2061 file_id: FileId( 2062 file_id: FileId(
2062 1, 2063 1,
2063 ), 2064 ),
2064 full_range: 43..57, 2065 full_range: 58..69,
2065 name: "B", 2066 name: "S",
2066 kind: STRUCT_DEF, 2067 kind: STRUCT_DEF,
2067 focus_range: Some( 2068 focus_range: Some(
2068 50..51, 2069 65..66,
2069 ), 2070 ),
2070 container_name: None, 2071 container_name: None,
2071 description: Some( 2072 description: Some(
2072 "struct B", 2073 "struct S",
2073 ), 2074 ),
2074 docs: None, 2075 docs: None,
2075 }, 2076 },