File tree Expand file tree Collapse file tree 2 files changed +32
-9
lines changed Expand file tree Collapse file tree 2 files changed +32
-9
lines changed Original file line number Diff line number Diff line change @@ -135,8 +135,8 @@ impl NavigationTarget {
135135 db : & RootDatabase ,
136136 node : InFile < & dyn ast:: NameOwner > ,
137137 ) -> NavigationTarget {
138- //FIXME: use `_` instead of empty string
139- let name = node. value . name ( ) . map ( |it| it. text ( ) . clone ( ) ) . unwrap_or_default ( ) ;
138+ let name =
139+ node. value . name ( ) . map ( |it| it. text ( ) . clone ( ) ) . unwrap_or_else ( || SmolStr :: new ( "_" ) ) ;
140140 let focus_range =
141141 node. value . name ( ) . map ( |it| original_range ( db, node. with_value ( it. syntax ( ) ) ) . range ) ;
142142 let frange = original_range ( db, node. map ( |it| it. syntax ( ) ) ) ;
@@ -150,6 +150,25 @@ impl NavigationTarget {
150150 )
151151 }
152152
153+ /// Allows `NavigationTarget` to be created from a `DocCommentsOwner` and a `NameOwner`
154+ pub ( crate ) fn from_doc_commented (
155+ db : & RootDatabase ,
156+ named : InFile < & dyn ast:: NameOwner > ,
157+ node : InFile < & dyn ast:: DocCommentsOwner > ,
158+ ) -> NavigationTarget {
159+ let name =
160+ named. value . name ( ) . map ( |it| it. text ( ) . clone ( ) ) . unwrap_or_else ( || SmolStr :: new ( "_" ) ) ;
161+ let frange = original_range ( db, node. map ( |it| it. syntax ( ) ) ) ;
162+
163+ NavigationTarget :: from_syntax (
164+ frange. file_id ,
165+ name,
166+ None ,
167+ frange. range ,
168+ node. value . syntax ( ) . kind ( ) ,
169+ )
170+ }
171+
153172 fn from_syntax (
154173 file_id : FileId ,
155174 name : SmolStr ,
Original file line number Diff line number Diff line change @@ -171,7 +171,15 @@ fn runnable_fn(
171171 let cfg_exprs =
172172 attrs. by_key ( "cfg" ) . tt_values ( ) . map ( |subtree| ra_cfg:: parse_cfg ( subtree) ) . collect ( ) ;
173173
174- let nav = NavigationTarget :: from_named ( sema. db , InFile :: new ( file_id. into ( ) , & fn_def) ) ;
174+ let nav = if let RunnableKind :: DocTest { .. } = kind {
175+ NavigationTarget :: from_doc_commented (
176+ sema. db ,
177+ InFile :: new ( file_id. into ( ) , & fn_def) ,
178+ InFile :: new ( file_id. into ( ) , & fn_def) ,
179+ )
180+ } else {
181+ NavigationTarget :: from_named ( sema. db , InFile :: new ( file_id. into ( ) , & fn_def) )
182+ } ;
175183 Some ( Runnable { nav, kind, cfg_exprs } )
176184}
177185
@@ -419,9 +427,7 @@ mod tests {
419427 full_range: 22..64,
420428 name: "foo",
421429 kind: FN_DEF,
422- focus_range: Some(
423- 56..59,
424- ),
430+ focus_range: None,
425431 container_name: None,
426432 description: None,
427433 docs: None,
@@ -486,9 +492,7 @@ mod tests {
486492 full_range: 51..105,
487493 name: "foo",
488494 kind: FN_DEF,
489- focus_range: Some(
490- 97..100,
491- ),
495+ focus_range: None,
492496 container_name: None,
493497 description: None,
494498 docs: None,
You can’t perform that action at this time.
0 commit comments