From 1f142d79ed251db58570a5863b06c8826221f9c9 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 18 Feb 2020 12:17:47 +0100 Subject: Refactor --- crates/ra_lsp_server/src/cargo_target_spec.rs | 98 +++++++++++++------------- crates/ra_lsp_server/src/main_loop/handlers.rs | 6 +- 2 files changed, 52 insertions(+), 52 deletions(-) (limited to 'crates/ra_lsp_server') diff --git a/crates/ra_lsp_server/src/cargo_target_spec.rs b/crates/ra_lsp_server/src/cargo_target_spec.rs index e08cc30e2..d0a52670a 100644 --- a/crates/ra_lsp_server/src/cargo_target_spec.rs +++ b/crates/ra_lsp_server/src/cargo_target_spec.rs @@ -5,55 +5,6 @@ use ra_project_model::{self, ProjectWorkspace, TargetKind}; use crate::{world::WorldSnapshot, Result}; -pub(crate) fn runnable_args( - spec: Option, - kind: &RunnableKind, -) -> Result> { - let mut res = Vec::new(); - match kind { - RunnableKind::Test { test_id } => { - res.push("test".to_string()); - if let Some(spec) = spec { - spec.push_to(&mut res); - } - res.push("--".to_string()); - res.push(test_id.to_string()); - if let TestId::Path(_) = test_id { - res.push("--exact".to_string()); - } - res.push("--nocapture".to_string()); - } - RunnableKind::TestMod { path } => { - res.push("test".to_string()); - if let Some(spec) = spec { - spec.push_to(&mut res); - } - res.push("--".to_string()); - res.push(path.to_string()); - res.push("--nocapture".to_string()); - } - RunnableKind::Bench { test_id } => { - res.push("bench".to_string()); - if let Some(spec) = spec { - spec.push_to(&mut res); - } - res.push("--".to_string()); - res.push(test_id.to_string()); - if let TestId::Path(_) = test_id { - res.push("--exact".to_string()); - } - res.push("--nocapture".to_string()); - } - RunnableKind::Bin => { - res.push("run".to_string()); - if let Some(spec) = spec { - spec.push_to(&mut res); - } - } - } - Ok(res) -} - pub(crate) struct CargoTargetSpec { pub(crate) package: String, pub(crate) target: String, @@ -61,6 +12,55 @@ pub(crate) struct CargoTargetSpec { } impl CargoTargetSpec { + pub(crate) fn runnable_args( + spec: Option, + kind: &RunnableKind, + ) -> Result> { + let mut res = Vec::new(); + match kind { + RunnableKind::Test { test_id } => { + res.push("test".to_string()); + if let Some(spec) = spec { + spec.push_to(&mut res); + } + res.push("--".to_string()); + res.push(test_id.to_string()); + if let TestId::Path(_) = test_id { + res.push("--exact".to_string()); + } + res.push("--nocapture".to_string()); + } + RunnableKind::TestMod { path } => { + res.push("test".to_string()); + if let Some(spec) = spec { + spec.push_to(&mut res); + } + res.push("--".to_string()); + res.push(path.to_string()); + res.push("--nocapture".to_string()); + } + RunnableKind::Bench { test_id } => { + res.push("bench".to_string()); + if let Some(spec) = spec { + spec.push_to(&mut res); + } + res.push("--".to_string()); + res.push(test_id.to_string()); + if let TestId::Path(_) = test_id { + res.push("--exact".to_string()); + } + res.push("--nocapture".to_string()); + } + RunnableKind::Bin => { + res.push("run".to_string()); + if let Some(spec) = spec { + spec.push_to(&mut res); + } + } + } + Ok(res) + } + pub(crate) fn for_file( world: &WorldSnapshot, file_id: FileId, diff --git a/crates/ra_lsp_server/src/main_loop/handlers.rs b/crates/ra_lsp_server/src/main_loop/handlers.rs index 833f31d96..92f219e28 100644 --- a/crates/ra_lsp_server/src/main_loop/handlers.rs +++ b/crates/ra_lsp_server/src/main_loop/handlers.rs @@ -29,7 +29,7 @@ use serde::{Deserialize, Serialize}; use serde_json::to_value; use crate::{ - cargo_target_spec::{runnable_args, CargoTargetSpec}, + cargo_target_spec::CargoTargetSpec, conv::{ to_call_hierarchy_item, to_location, Conv, ConvWith, FoldConvCtx, MapConvWith, TryConvWith, TryConvWithToVec, @@ -921,8 +921,8 @@ fn to_lsp_runnable( file_id: FileId, runnable: Runnable, ) -> Result { - let spec: Option = CargoTargetSpec::for_file(world, file_id)?; - let args = runnable_args(spec, &runnable.kind)?; + let spec = CargoTargetSpec::for_file(world, file_id)?; + let args = CargoTargetSpec::runnable_args(spec, &runnable.kind)?; let line_index = world.analysis().file_line_index(file_id)?; let label = match &runnable.kind { RunnableKind::Test { test_id } => format!("test {}", test_id), -- cgit v1.2.3