Skip to content

Commit cdaadb6

Browse files
committed
Auto merge of #15632 - emilio:scip-build-rs, r=lnicola
scip: Use load_workspace_at. This honors the build script config, and is also simpler.
2 parents 258b15c + c372431 commit cdaadb6

File tree

1 file changed

+11
-14
lines changed
  • crates/rust-analyzer/src/cli

1 file changed

+11
-14
lines changed

crates/rust-analyzer/src/cli/scip.rs

+11-14
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,9 @@ use ide::{
1111
TokenStaticData,
1212
};
1313
use ide_db::LineIndexDatabase;
14-
use load_cargo::{load_workspace, LoadCargoConfig, ProcMacroServerChoice};
15-
use project_model::{CargoConfig, ProjectManifest, ProjectWorkspace, RustLibSource};
14+
use load_cargo::{load_workspace_at, LoadCargoConfig, ProcMacroServerChoice};
15+
use project_model::{CargoConfig, RustLibSource};
1616
use scip::types as scip_types;
17-
use std::env;
1817

1918
use crate::{
2019
cli::flags,
@@ -34,14 +33,13 @@ impl flags::Scip {
3433
with_proc_macro_server: ProcMacroServerChoice::Sysroot,
3534
prefill_caches: true,
3635
};
37-
let path = vfs::AbsPathBuf::assert(env::current_dir()?.join(&self.path));
38-
let rootpath = path.normalize();
39-
let manifest = ProjectManifest::discover_single(&path)?;
40-
41-
let workspace = ProjectWorkspace::load(manifest, &cargo_config, no_progress)?;
42-
43-
let (host, vfs, _) =
44-
load_workspace(workspace, &cargo_config.extra_env, &load_cargo_config)?;
36+
let root = vfs::AbsPathBuf::assert(std::env::current_dir()?.join(&self.path)).normalize();
37+
let (host, vfs, _) = load_workspace_at(
38+
root.as_path().as_ref(),
39+
&cargo_config,
40+
&load_cargo_config,
41+
&no_progress,
42+
)?;
4543
let db = host.raw_database();
4644
let analysis = host.analysis();
4745

@@ -58,8 +56,7 @@ impl flags::Scip {
5856
.into(),
5957
project_root: format!(
6058
"file://{}",
61-
path.normalize()
62-
.as_os_str()
59+
root.as_os_str()
6360
.to_str()
6461
.ok_or(anyhow::format_err!("Unable to normalize project_root path"))?
6562
),
@@ -80,7 +77,7 @@ impl flags::Scip {
8077
new_symbol
8178
};
8279

83-
let relative_path = match get_relative_filepath(&vfs, &rootpath, file_id) {
80+
let relative_path = match get_relative_filepath(&vfs, &root, file_id) {
8481
Some(relative_path) => relative_path,
8582
None => continue,
8683
};

0 commit comments

Comments
 (0)