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/display/navigation_target.rs6
-rw-r--r--crates/ra_ide/src/impls.rs12
2 files changed, 17 insertions, 1 deletions
diff --git a/crates/ra_ide/src/display/navigation_target.rs b/crates/ra_ide/src/display/navigation_target.rs
index f2e45fa31..b2af3479c 100644
--- a/crates/ra_ide/src/display/navigation_target.rs
+++ b/crates/ra_ide/src/display/navigation_target.rs
@@ -251,7 +251,11 @@ impl ToNav for hir::Module {
251impl ToNav for hir::ImplBlock { 251impl ToNav for hir::ImplBlock {
252 fn to_nav(&self, db: &RootDatabase) -> NavigationTarget { 252 fn to_nav(&self, db: &RootDatabase) -> NavigationTarget {
253 let src = self.source(db); 253 let src = self.source(db);
254 let frange = original_range(db, src.as_ref().map(|it| it.syntax())); 254 let frange = if let Some(item) = self.is_builtin_derive(db) {
255 original_range(db, item.syntax())
256 } else {
257 original_range(db, src.as_ref().map(|it| it.syntax()))
258 };
255 259
256 NavigationTarget::from_syntax( 260 NavigationTarget::from_syntax(
257 frange.file_id, 261 frange.file_id,
diff --git a/crates/ra_ide/src/impls.rs b/crates/ra_ide/src/impls.rs
index 9b165ee2a..31195036e 100644
--- a/crates/ra_ide/src/impls.rs
+++ b/crates/ra_ide/src/impls.rs
@@ -203,4 +203,16 @@ mod tests {
203 ], 203 ],
204 ); 204 );
205 } 205 }
206
207 #[test]
208 fn goto_implementation_to_builtin_derive() {
209 check_goto(
210 "
211 //- /lib.rs
212 #[derive(Copy)]
213 struct Foo<|>;
214 ",
215 &["impl IMPL_BLOCK FileId(1) [0; 15)"],
216 );
217 }
206} 218}