@@ -208,7 +208,9 @@ pub(crate) fn runnables(db: &RootDatabase, file_id: FileId) -> Vec<Runnable> {
208
208
// |===
209
209
pub ( crate ) fn selected_test ( db : & RootDatabase , position : FilePosition ) -> Option < Runnable > {
210
210
let sema = Semantics :: new ( db) ;
211
- let syntax = sema. parse ( position. file_id ) . syntax ( ) . clone ( ) ;
211
+ let parsed = sema. parse ( position. file_id ) ;
212
+ let syntax = parsed. syntax ( ) ;
213
+
212
214
return find_selected_test ( & sema, & syntax, position) ;
213
215
}
214
216
@@ -219,11 +221,11 @@ fn find_selected_test(
219
221
) -> Option < Runnable > {
220
222
syntax
221
223
. token_at_offset ( position. offset )
222
- . find ( |_| true )
224
+ . next ( )
223
225
. and_then ( |token| token. parent ( ) )
224
226
. and_then ( |node| {
225
227
node. ancestors ( ) . find_map ( |ancestor| {
226
- let fn_def = ast:: Fn :: cast ( ancestor. clone ( ) ) ?;
228
+ let fn_def = ast:: Fn :: cast ( ancestor) ?;
227
229
test_related_attribute ( & fn_def) ?;
228
230
as_test_runnable ( sema, & fn_def)
229
231
} )
@@ -249,7 +251,8 @@ pub(crate) fn related_tests(
249
251
) -> Vec < Runnable > {
250
252
let sema = Semantics :: new ( db) ;
251
253
let mut res: FxHashSet < Runnable > = FxHashSet :: default ( ) ;
252
- let syntax = sema. parse ( position. file_id ) . syntax ( ) . clone ( ) ;
254
+ let parsed = sema. parse ( position. file_id ) ;
255
+ let syntax = parsed. syntax ( ) ;
253
256
254
257
find_related_tests ( & sema, & syntax, position, search_scope, & mut res) ;
255
258
0 commit comments