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