Propagate cargo.target to checkOnSave

This commit is contained in:
Aleksey Kladov 2020-07-21 10:30:54 +02:00
parent 3432afcbd2
commit a20b8d751b
2 changed files with 11 additions and 2 deletions

View file

@ -22,6 +22,7 @@ pub use cargo_metadata::diagnostic::{
pub enum FlycheckConfig {
CargoCommand {
command: String,
target_tripple: Option<String>,
all_targets: bool,
all_features: bool,
features: Vec<String>,
@ -178,6 +179,7 @@ impl FlycheckActor {
let mut cmd = match &self.config {
FlycheckConfig::CargoCommand {
command,
target_tripple,
all_targets,
all_features,
extra_args,
@ -187,6 +189,10 @@ impl FlycheckActor {
cmd.arg(command);
cmd.args(&["--workspace", "--message-format=json", "--manifest-path"])
.arg(self.workspace_root.join("Cargo.toml"));
if let Some(target) = target_tripple {
cmd.args(&["--target", target.as_str()]);
}
if *all_targets {
cmd.arg("--all-targets");
}

View file

@ -148,6 +148,7 @@ impl Config {
rustfmt: RustfmtConfig::Rustfmt { extra_args: Vec::new() },
flycheck: Some(FlycheckConfig::CargoCommand {
command: "check".to_string(),
target_tripple: None,
all_targets: true,
all_features: false,
extra_args: Vec::new(),
@ -198,7 +199,7 @@ impl Config {
all_features: data.cargo_allFeatures,
features: data.cargo_features.clone(),
load_out_dirs_from_check: data.cargo_loadOutDirsFromCheck,
target: data.cargo_target,
target: data.cargo_target.clone(),
};
self.proc_macro_srv = if data.procMacro_enable {
@ -223,6 +224,7 @@ impl Config {
}
Some(_) | None => FlycheckConfig::CargoCommand {
command: data.checkOnSave_command,
target_tripple: data.checkOnSave_target.or(data.cargo_target),
all_targets: data.checkOnSave_allTargets,
all_features: data.checkOnSave_allFeatures.unwrap_or(data.cargo_allFeatures),
features: data.checkOnSave_features.unwrap_or(data.cargo_features),
@ -384,10 +386,11 @@ config_data! {
cargo_noDefaultFeatures: bool = false,
cargo_target: Option<String> = None,
checkOnSave_enable: bool = false,
checkOnSave_allFeatures: Option<bool> = None,
checkOnSave_allTargets: bool = true,
checkOnSave_command: String = "check".into(),
checkOnSave_enable: bool = false,
checkOnSave_target: Option<String> = None,
checkOnSave_extraArgs: Vec<String> = Vec::new(),
checkOnSave_features: Option<Vec<String>> = None,
checkOnSave_overrideCommand: Option<Vec<String>> = None,