@@ -1347,27 +1347,54 @@ pub(crate) fn runnable(
13471347 runnable : Runnable ,
13481348) -> Cancellable < lsp_ext:: Runnable > {
13491349 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+ }
13711398}
13721399
13731400pub ( crate ) fn code_lens (
0 commit comments