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 {
135
135
db : & RootDatabase ,
136
136
node : InFile < & dyn ast:: NameOwner > ,
137
137
) -> 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 ( "_" ) ) ;
140
140
let focus_range =
141
141
node. value . name ( ) . map ( |it| original_range ( db, node. with_value ( it. syntax ( ) ) ) . range ) ;
142
142
let frange = original_range ( db, node. map ( |it| it. syntax ( ) ) ) ;
@@ -150,6 +150,25 @@ impl NavigationTarget {
150
150
)
151
151
}
152
152
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
+
153
172
fn from_syntax (
154
173
file_id : FileId ,
155
174
name : SmolStr ,
Original file line number Diff line number Diff line change @@ -171,7 +171,15 @@ fn runnable_fn(
171
171
let cfg_exprs =
172
172
attrs. by_key ( "cfg" ) . tt_values ( ) . map ( |subtree| ra_cfg:: parse_cfg ( subtree) ) . collect ( ) ;
173
173
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
+ } ;
175
183
Some ( Runnable { nav, kind, cfg_exprs } )
176
184
}
177
185
@@ -419,9 +427,7 @@ mod tests {
419
427
full_range: 22..64,
420
428
name: "foo",
421
429
kind: FN_DEF,
422
- focus_range: Some(
423
- 56..59,
424
- ),
430
+ focus_range: None,
425
431
container_name: None,
426
432
description: None,
427
433
docs: None,
@@ -486,9 +492,7 @@ mod tests {
486
492
full_range: 51..105,
487
493
name: "foo",
488
494
kind: FN_DEF,
489
- focus_range: Some(
490
- 97..100,
491
- ),
495
+ focus_range: None,
492
496
container_name: None,
493
497
description: None,
494
498
docs: None,
You can’t perform that action at this time.
0 commit comments