@@ -1347,27 +1347,54 @@ pub(crate) fn runnable(
1347
1347
runnable : Runnable ,
1348
1348
) -> Cancellable < lsp_ext:: Runnable > {
1349
1349
let config = snap. config . runnables ( ) ;
1350
- let spec = CargoTargetSpec :: for_file ( snap, runnable. nav . file_id ) ?;
1351
- let workspace_root = spec. as_ref ( ) . map ( |it| it. workspace_root . clone ( ) ) ;
1352
- let target = spec. as_ref ( ) . map ( |s| s. target . clone ( ) ) ;
1353
- let ( cargo_args, executable_args) =
1354
- CargoTargetSpec :: runnable_args ( snap, spec, & runnable. kind , & runnable. cfg ) ;
1355
- let label = runnable. label ( target) ;
1356
- let location = location_link ( snap, None , runnable. nav ) ?;
1357
-
1358
- Ok ( lsp_ext:: Runnable {
1359
- label,
1360
- location : Some ( location) ,
1361
- kind : lsp_ext:: RunnableKind :: Cargo ,
1362
- args : lsp_ext:: CargoRunnable {
1363
- workspace_root : workspace_root. map ( |it| it. into ( ) ) ,
1364
- override_cargo : config. override_cargo ,
1365
- cargo_args,
1366
- cargo_extra_args : config. cargo_extra_args ,
1367
- executable_args,
1368
- expect_test : None ,
1369
- } ,
1370
- } )
1350
+ let target_spec = CargoTargetSpec :: for_file ( snap, runnable. nav . file_id ) ?;
1351
+
1352
+ match target_spec {
1353
+ Some ( spec) => {
1354
+ let workspace_root = spec. workspace_root . clone ( ) ;
1355
+ let target = spec. target . clone ( ) ;
1356
+
1357
+ let ( cargo_args, executable_args) =
1358
+ CargoTargetSpec :: runnable_args ( snap, Some ( spec) , & runnable. kind , & runnable. cfg ) ;
1359
+
1360
+ let label = runnable. label ( Some ( target) ) ;
1361
+ let location = location_link ( snap, None , runnable. nav ) ?;
1362
+
1363
+ Ok ( lsp_ext:: Runnable {
1364
+ label,
1365
+ location : Some ( location) ,
1366
+ kind : lsp_ext:: RunnableKind :: Cargo ,
1367
+ args : lsp_ext:: CargoRunnable {
1368
+ workspace_root : Some ( workspace_root. into ( ) ) ,
1369
+ override_cargo : config. override_cargo ,
1370
+ cargo_args,
1371
+ cargo_extra_args : config. cargo_extra_args ,
1372
+ executable_args,
1373
+ expect_test : None ,
1374
+ } ,
1375
+ } )
1376
+ }
1377
+ None => {
1378
+ let ( cargo_args, executable_args) =
1379
+ CargoTargetSpec :: runnable_args ( snap, None , & runnable. kind , & runnable. cfg ) ;
1380
+ let label = runnable. label ( None ) ;
1381
+ let location = location_link ( snap, None , runnable. nav ) ?;
1382
+
1383
+ Ok ( lsp_ext:: Runnable {
1384
+ label,
1385
+ location : Some ( location) ,
1386
+ kind : lsp_ext:: RunnableKind :: Cargo ,
1387
+ args : lsp_ext:: CargoRunnable {
1388
+ workspace_root : None ,
1389
+ override_cargo : config. override_cargo ,
1390
+ cargo_args,
1391
+ cargo_extra_args : config. cargo_extra_args ,
1392
+ executable_args,
1393
+ expect_test : None ,
1394
+ } ,
1395
+ } )
1396
+ }
1397
+ }
1371
1398
}
1372
1399
1373
1400
pub ( crate ) fn code_lens (
0 commit comments