diff options
Diffstat (limited to 'crates/ra_analysis/src/goto_defenition.rs')
-rw-r--r-- | crates/ra_analysis/src/goto_defenition.rs | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/crates/ra_analysis/src/goto_defenition.rs b/crates/ra_analysis/src/goto_defenition.rs index 91de7ef65..08d1809ee 100644 --- a/crates/ra_analysis/src/goto_defenition.rs +++ b/crates/ra_analysis/src/goto_defenition.rs | |||
@@ -78,3 +78,61 @@ fn name_defenition( | |||
78 | } | 78 | } |
79 | Ok(None) | 79 | Ok(None) |
80 | } | 80 | } |
81 | |||
82 | #[cfg(test)] | ||
83 | mod tests { | ||
84 | use test_utils::assert_eq_dbg; | ||
85 | use crate::mock_analysis::analysis_and_position; | ||
86 | |||
87 | #[test] | ||
88 | fn goto_defenition_works_in_items() { | ||
89 | let (analysis, pos) = analysis_and_position( | ||
90 | " | ||
91 | //- /lib.rs | ||
92 | struct Foo; | ||
93 | enum E { X(Foo<|>) } | ||
94 | ", | ||
95 | ); | ||
96 | |||
97 | let symbols = analysis.goto_defenition(pos).unwrap().unwrap(); | ||
98 | assert_eq_dbg( | ||
99 | r#"[NavigationTarget { file_id: FileId(1), name: "Foo", | ||
100 | kind: STRUCT_DEF, range: [0; 11), | ||
101 | ptr: Some(LocalSyntaxPtr { range: [0; 11), kind: STRUCT_DEF }) }]"#, | ||
102 | &symbols, | ||
103 | ); | ||
104 | } | ||
105 | |||
106 | #[test] | ||
107 | fn goto_defenition_works_for_module_declaration() { | ||
108 | let (analysis, pos) = analysis_and_position( | ||
109 | " | ||
110 | //- /lib.rs | ||
111 | mod <|>foo; | ||
112 | //- /foo.rs | ||
113 | // empty | ||
114 | ", | ||
115 | ); | ||
116 | |||
117 | let symbols = analysis.goto_defenition(pos).unwrap().unwrap(); | ||
118 | assert_eq_dbg( | ||
119 | r#"[NavigationTarget { file_id: FileId(2), name: "foo", kind: MODULE, range: [0; 0), ptr: None }]"#, | ||
120 | &symbols, | ||
121 | ); | ||
122 | |||
123 | let (analysis, pos) = analysis_and_position( | ||
124 | " | ||
125 | //- /lib.rs | ||
126 | mod <|>foo; | ||
127 | //- /foo/mod.rs | ||
128 | // empty | ||
129 | ", | ||
130 | ); | ||
131 | |||
132 | let symbols = analysis.goto_defenition(pos).unwrap().unwrap(); | ||
133 | assert_eq_dbg( | ||
134 | r#"[NavigationTarget { file_id: FileId(2), name: "foo", kind: MODULE, range: [0; 0), ptr: None }]"#, | ||
135 | &symbols, | ||
136 | ); | ||
137 | } | ||
138 | } | ||