mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-01 06:11:35 +00:00
Support disabling rustc build scripts
This commit is contained in:
parent
877f745551
commit
ddce6bb282
10 changed files with 61 additions and 12 deletions
|
@ -68,6 +68,9 @@ impl BenchCmd {
|
|||
let load_cargo_config = LoadCargoConfig {
|
||||
load_out_dirs_from_check: self.load_output_dirs,
|
||||
with_proc_macro: self.with_proc_macro,
|
||||
// This will currently never have rustcSource set, however if in
|
||||
// future it does this will handle that case
|
||||
run_rustc_build_scripts: true,
|
||||
};
|
||||
let (mut host, vfs, _proc_macro) =
|
||||
load_workspace_at(&self.path, &cargo_config, &load_cargo_config, &|_| {})?;
|
||||
|
|
|
@ -63,6 +63,9 @@ impl AnalysisStatsCmd {
|
|||
let load_cargo_config = LoadCargoConfig {
|
||||
load_out_dirs_from_check: self.load_output_dirs,
|
||||
with_proc_macro: self.with_proc_macro,
|
||||
// This will currently never have rustcSource set, however if in
|
||||
// future it does this will handle that case
|
||||
run_rustc_build_scripts: true,
|
||||
};
|
||||
let (host, vfs, _proc_macro) =
|
||||
load_workspace_at(&self.path, &cargo_config, &load_cargo_config, &|_| {})?;
|
||||
|
|
|
@ -34,7 +34,13 @@ pub fn diagnostics(
|
|||
with_proc_macro: bool,
|
||||
) -> Result<()> {
|
||||
let cargo_config = Default::default();
|
||||
let load_cargo_config = LoadCargoConfig { load_out_dirs_from_check, with_proc_macro };
|
||||
let load_cargo_config = LoadCargoConfig {
|
||||
load_out_dirs_from_check,
|
||||
with_proc_macro,
|
||||
// This will currently never have rustcSource set, however if in
|
||||
// future it does this will handle that case
|
||||
run_rustc_build_scripts: true,
|
||||
};
|
||||
let (host, _vfs, _proc_macro) =
|
||||
load_workspace_at(path, &cargo_config, &load_cargo_config, &|_| {})?;
|
||||
let db = host.raw_database();
|
||||
|
|
|
@ -14,6 +14,7 @@ use vfs::{loader::Handle, AbsPath, AbsPathBuf};
|
|||
use crate::reload::{ProjectFolders, SourceRootConfig};
|
||||
|
||||
pub struct LoadCargoConfig {
|
||||
pub run_rustc_build_scripts: bool,
|
||||
pub load_out_dirs_from_check: bool,
|
||||
pub with_proc_macro: bool,
|
||||
}
|
||||
|
@ -53,7 +54,7 @@ pub fn load_workspace(
|
|||
|
||||
let build_data = if config.load_out_dirs_from_check {
|
||||
let mut collector = BuildDataCollector::default();
|
||||
ws.collect_build_data_configs(&mut collector);
|
||||
ws.collect_build_data_configs(&mut collector, config.run_rustc_build_scripts);
|
||||
Some(collector.collect(progress)?)
|
||||
} else {
|
||||
None
|
||||
|
@ -136,8 +137,11 @@ mod tests {
|
|||
fn test_loading_rust_analyzer() -> Result<()> {
|
||||
let path = Path::new(env!("CARGO_MANIFEST_DIR")).parent().unwrap().parent().unwrap();
|
||||
let cargo_config = Default::default();
|
||||
let load_cargo_config =
|
||||
LoadCargoConfig { load_out_dirs_from_check: false, with_proc_macro: false };
|
||||
let load_cargo_config = LoadCargoConfig {
|
||||
load_out_dirs_from_check: false,
|
||||
with_proc_macro: false,
|
||||
run_rustc_build_scripts: false,
|
||||
};
|
||||
let (host, _vfs, _proc_macro) =
|
||||
load_workspace_at(path, &cargo_config, &load_cargo_config, &|_| {})?;
|
||||
|
||||
|
|
|
@ -9,8 +9,13 @@ use ide_ssr::{MatchFinder, SsrPattern, SsrRule};
|
|||
pub fn apply_ssr_rules(rules: Vec<SsrRule>) -> Result<()> {
|
||||
use ide_db::base_db::SourceDatabaseExt;
|
||||
let cargo_config = Default::default();
|
||||
let load_cargo_config =
|
||||
LoadCargoConfig { load_out_dirs_from_check: true, with_proc_macro: true };
|
||||
let load_cargo_config = LoadCargoConfig {
|
||||
load_out_dirs_from_check: true,
|
||||
with_proc_macro: true,
|
||||
// This will currently never have rustcSource set, however if in
|
||||
// future it does this will handle that case
|
||||
run_rustc_build_scripts: true,
|
||||
};
|
||||
let (host, vfs, _proc_macro) =
|
||||
load_workspace_at(&std::env::current_dir()?, &cargo_config, &load_cargo_config, &|_| {})?;
|
||||
let db = host.raw_database();
|
||||
|
@ -36,8 +41,13 @@ pub fn search_for_patterns(patterns: Vec<SsrPattern>, debug_snippet: Option<Stri
|
|||
use ide_db::base_db::SourceDatabaseExt;
|
||||
use ide_db::symbol_index::SymbolsDatabase;
|
||||
let cargo_config = Default::default();
|
||||
let load_cargo_config =
|
||||
LoadCargoConfig { load_out_dirs_from_check: true, with_proc_macro: true };
|
||||
let load_cargo_config = LoadCargoConfig {
|
||||
load_out_dirs_from_check: true,
|
||||
with_proc_macro: true,
|
||||
// This will currently never have rustcSource set, however if in
|
||||
// future it does this will handle that case
|
||||
run_rustc_build_scripts: true,
|
||||
};
|
||||
let (host, _vfs, _proc_macro) =
|
||||
load_workspace_at(&std::env::current_dir()?, &cargo_config, &load_cargo_config, &|_| {})?;
|
||||
let db = host.raw_database();
|
||||
|
|
|
@ -49,6 +49,8 @@ config_data! {
|
|||
/// Run build scripts (`build.rs`) for more precise code analysis.
|
||||
cargo_runBuildScripts |
|
||||
cargo_loadOutDirsFromCheck: bool = "false",
|
||||
/// Disable running build scripts (`build.rs`) for the `rustc_private` crates in `rustcSource`.
|
||||
cargo_disableRustcBuildScripts: bool = "false",
|
||||
/// Do not activate the `default` feature.
|
||||
cargo_noDefaultFeatures: bool = "false",
|
||||
/// Compilation target (target triple).
|
||||
|
@ -482,6 +484,9 @@ impl Config {
|
|||
pub fn run_build_scripts(&self) -> bool {
|
||||
self.data.cargo_runBuildScripts || self.data.procMacro_enable
|
||||
}
|
||||
pub fn run_rustc_build_scripts(&self) -> bool {
|
||||
self.run_build_scripts() && !self.data.cargo_disableRustcBuildScripts
|
||||
}
|
||||
pub fn cargo(&self) -> CargoConfig {
|
||||
let rustc_source = self.data.rustcSource.as_ref().map(|rustc_src| {
|
||||
if rustc_src == "discover" {
|
||||
|
|
|
@ -340,7 +340,10 @@ impl GlobalState {
|
|||
if self.config.run_build_scripts() && workspace_build_data.is_none() {
|
||||
let mut collector = BuildDataCollector::default();
|
||||
for ws in &workspaces {
|
||||
ws.collect_build_data_configs(&mut collector);
|
||||
ws.collect_build_data_configs(
|
||||
&mut collector,
|
||||
self.config.run_rustc_build_scripts(),
|
||||
);
|
||||
}
|
||||
self.fetch_build_data_request(collector)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue