Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/project_model/src/workspace.rs')
| -rw-r--r-- | crates/project_model/src/workspace.rs | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/crates/project_model/src/workspace.rs b/crates/project_model/src/workspace.rs index 2fc88bf505..a5c9c8945a 100644 --- a/crates/project_model/src/workspace.rs +++ b/crates/project_model/src/workspace.rs @@ -6,7 +6,8 @@ use std::{collections::VecDeque, fmt, fs, process::Command}; use anyhow::{format_err, Context, Result}; use base_db::{ - CrateDisplayName, CrateGraph, CrateId, CrateName, Dependency, Edition, Env, FileId, ProcMacro, + CrateDisplayName, CrateGraph, CrateId, CrateName, CrateOrigin, Dependency, Edition, Env, + FileId, ProcMacro, }; use cfg::{CfgDiff, CfgOptions}; use paths::{AbsPath, AbsPathBuf}; @@ -473,6 +474,15 @@ fn project_json_to_crate_graph( cfg_options, env, proc_macro.unwrap_or_default(), + if let Some(name) = &krate.display_name { + CrateOrigin::CratesIo { + repo: krate.repository.clone(), + name: name.crate_name().to_string(), + version: krate.version.clone().unwrap_or_else(|| "".to_string()), + } + } else { + CrateOrigin::Unknown + }, ), ) }) @@ -681,6 +691,7 @@ fn detached_files_to_crate_graph( cfg_options.clone(), Env::default(), Vec::new(), + CrateOrigin::Unknown, ); public_deps.add(detached_file_crate, &mut crate_graph); @@ -821,7 +832,7 @@ fn add_target_crate_root( .iter() .map(|feat| CfgFlag::KeyValue { key: "feature".into(), value: feat.0.into() }), ); - + let crate_name = display_name.crate_name().to_string(); crate_graph.add_crate_root( file_id, edition, @@ -831,6 +842,11 @@ fn add_target_crate_root( potential_cfg_options, env, proc_macro, + CrateOrigin::CratesIo { + name: crate_name, + repo: pkg.repository.clone(), + version: pkg.version.to_string(), + }, ) } @@ -874,6 +890,7 @@ fn sysroot_to_crate_graph( cfg_options.clone(), env, proc_macro, + CrateOrigin::Lang(sysroot[krate].name.clone()), ); Some((krate, crate_id)) }) |