about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2024-08-12 12:34:31 +0000
committerbors <bors@rust-lang.org>2024-08-12 12:34:31 +0000
commite66f3db9fa890fa6eb85ff5d55ff837455f81124 (patch)
treeb1bd743d9954d77ff099aa4021478ce5ff46ee7f /src
parentff63552892f8a45d1e85aea35eed2d50231b343a (diff)
parent1b983e33c694dd279ecd892e75e18b0a8c790593 (diff)
downloadrust-e66f3db9fa890fa6eb85ff5d55ff837455f81124.tar.gz
rust-e66f3db9fa890fa6eb85ff5d55ff837455f81124.zip
Auto merge of #17864 - Veykril:lsif, r=Veykril
fix: Build and run build scripts in lsif command
Diffstat (limited to 'src')
-rw-r--r--src/tools/rust-analyzer/crates/load-cargo/src/lib.rs10
-rw-r--r--src/tools/rust-analyzer/crates/rust-analyzer/src/cli/lsif.rs11
2 files changed, 16 insertions, 5 deletions
diff --git a/src/tools/rust-analyzer/crates/load-cargo/src/lib.rs b/src/tools/rust-analyzer/crates/load-cargo/src/lib.rs
index db4e10f7ba1..abad7e9f7d2 100644
--- a/src/tools/rust-analyzer/crates/load-cargo/src/lib.rs
+++ b/src/tools/rust-analyzer/crates/load-cargo/src/lib.rs
@@ -25,6 +25,7 @@ use vfs::{
     AbsPath, AbsPathBuf, VfsPath,
 };
 
+#[derive(Debug)]
 pub struct LoadCargoConfig {
     pub load_out_dirs_from_check: bool,
     pub with_proc_macro_server: ProcMacroServerChoice,
@@ -68,6 +69,7 @@ pub fn load_workspace(
         Box::new(loader)
     };
 
+    tracing::debug!(?load_config, "LoadCargoConfig");
     let proc_macro_server = match &load_config.with_proc_macro_server {
         ProcMacroServerChoice::Sysroot => ws
             .find_sysroot_proc_macro_srv()
@@ -80,6 +82,14 @@ pub fn load_workspace(
             Err((anyhow::format_err!("proc macro server disabled"), false))
         }
     };
+    match &proc_macro_server {
+        Ok(server) => {
+            tracing::info!(path=%server.path(), "Proc-macro server started")
+        }
+        Err((e, _)) => {
+            tracing::info!(%e, "Failed to start proc-macro server")
+        }
+    }
 
     let (crate_graph, proc_macros) = ws.to_crate_graph(
         &mut |path: &AbsPath| {
diff --git a/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/lsif.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/lsif.rs
index e67ddb9d060..016f0edc2dd 100644
--- a/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/lsif.rs
+++ b/src/tools/rust-analyzer/crates/rust-analyzer/src/cli/lsif.rs
@@ -276,7 +276,7 @@ impl flags::Lsif {
         eprintln!("Generating LSIF started...");
         let now = Instant::now();
         let cargo_config =
-            CargoConfig { sysroot: Some(RustLibSource::Discover), ..Default::default() };
+            &CargoConfig { sysroot: Some(RustLibSource::Discover), ..Default::default() };
         let no_progress = &|_| ();
         let load_cargo_config = LoadCargoConfig {
             load_out_dirs_from_check: true,
@@ -284,10 +284,11 @@ impl flags::Lsif {
             prefill_caches: false,
         };
         let path = AbsPathBuf::assert_utf8(env::current_dir()?.join(self.path));
-        let manifest = ProjectManifest::discover_single(&path)?;
+        let root = ProjectManifest::discover_single(&path)?;
+        let mut workspace = ProjectWorkspace::load(root, cargo_config, no_progress)?;
 
-        let workspace = ProjectWorkspace::load(manifest, &cargo_config, no_progress)?;
-        let root = workspace.workspace_root().to_owned();
+        let build_scripts = workspace.run_build_scripts(cargo_config, no_progress)?;
+        workspace.set_build_scripts(build_scripts);
 
         let (db, vfs, _proc_macro) =
             load_workspace(workspace, &cargo_config.extra_env, &load_cargo_config)?;
@@ -295,7 +296,7 @@ impl flags::Lsif {
         let db = host.raw_database();
         let analysis = host.analysis();
 
-        let si = StaticIndex::compute(&analysis, &root.into());
+        let si = StaticIndex::compute(&analysis, &path.clone().into());
 
         let mut lsif = LsifManager::new(&analysis, db, &vfs);
         lsif.add_vertex(lsif::Vertex::MetaData(lsif::MetaData {