@@ -1344,27 +1344,54 @@ pub(crate) fn runnable(
13441344 runnable : Runnable ,
13451345) -> Cancellable < lsp_ext:: Runnable > {
13461346 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+ }
13681395}
13691396
13701397pub ( crate ) fn code_lens (
0 commit comments