diff options
Diffstat (limited to 'crates/ra_ide_api/src/navigation_target.rs')
-rw-r--r-- | crates/ra_ide_api/src/navigation_target.rs | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/crates/ra_ide_api/src/navigation_target.rs b/crates/ra_ide_api/src/navigation_target.rs index 19cea2fd6..b92670f36 100644 --- a/crates/ra_ide_api/src/navigation_target.rs +++ b/crates/ra_ide_api/src/navigation_target.rs | |||
@@ -114,17 +114,23 @@ impl NavigationTarget { | |||
114 | hir::ModuleDef::Function(func) => { | 114 | hir::ModuleDef::Function(func) => { |
115 | return Some(NavigationTarget::from_function(db, func)); | 115 | return Some(NavigationTarget::from_function(db, func)); |
116 | } | 116 | } |
117 | }; | 117 | hir::ModuleDef::Struct(s) => { |
118 | |||
119 | let res = match def { | ||
120 | Def::Struct(s) => { | ||
121 | let (file_id, node) = s.source(db); | 118 | let (file_id, node) = s.source(db); |
122 | NavigationTarget::from_named(file_id.original_file(db), &*node) | 119 | return Some(NavigationTarget::from_named( |
120 | file_id.original_file(db), | ||
121 | &*node, | ||
122 | )); | ||
123 | } | 123 | } |
124 | Def::Enum(e) => { | 124 | hir::ModuleDef::Enum(e) => { |
125 | let (file_id, node) = e.source(db); | 125 | let (file_id, node) = e.source(db); |
126 | NavigationTarget::from_named(file_id.original_file(db), &*node) | 126 | return Some(NavigationTarget::from_named( |
127 | file_id.original_file(db), | ||
128 | &*node, | ||
129 | )); | ||
127 | } | 130 | } |
131 | }; | ||
132 | |||
133 | let res = match def { | ||
128 | Def::EnumVariant(ev) => { | 134 | Def::EnumVariant(ev) => { |
129 | let (file_id, node) = ev.source(db); | 135 | let (file_id, node) = ev.source(db); |
130 | NavigationTarget::from_named(file_id.original_file(db), &*node) | 136 | NavigationTarget::from_named(file_id.original_file(db), &*node) |