Skip to content

Commit 66fe84d

Browse files
committed
accepting review suggestions
1 parent c372fb3 commit 66fe84d

File tree

13 files changed

+67
-97
lines changed

13 files changed

+67
-97
lines changed

crates/base-db/src/fixture.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,6 @@ impl ChangeFixture {
165165
meta.edition,
166166
Some(crate_name.clone().into()),
167167
version,
168-
None,
169168
meta.cfg,
170169
Default::default(),
171170
meta.env,
@@ -206,7 +205,6 @@ impl ChangeFixture {
206205
Edition::CURRENT,
207206
Some(CrateName::new("test").unwrap().into()),
208207
None,
209-
None,
210208
default_cfg,
211209
Default::default(),
212210
Env::default(),
@@ -251,7 +249,6 @@ impl ChangeFixture {
251249
Edition::Edition2021,
252250
Some(CrateDisplayName::from_canonical_name("core".to_string())),
253251
None,
254-
None,
255252
Default::default(),
256253
Default::default(),
257254
Env::default(),
@@ -291,7 +288,6 @@ impl ChangeFixture {
291288
Edition::Edition2021,
292289
Some(CrateDisplayName::from_canonical_name("proc_macros".to_string())),
293290
None,
294-
None,
295291
Default::default(),
296292
Default::default(),
297293
Env::default(),

crates/base-db/src/input.rs

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,6 @@ pub struct CrateData {
304304
/// For purposes of analysis, crates are anonymous (only names in
305305
/// `Dependency` matters), this name should only be used for UI.
306306
pub display_name: Option<CrateDisplayName>,
307-
pub crate_root_path: Option<AbsPathBuf>,
308307
pub cfg_options: CfgOptions,
309308
/// The cfg options that could be used by the crate
310309
pub potential_cfg_options: Option<CfgOptions>,
@@ -362,7 +361,6 @@ impl CrateGraph {
362361
edition: Edition,
363362
display_name: Option<CrateDisplayName>,
364363
version: Option<String>,
365-
crate_root_path: Option<AbsPathBuf>,
366364
cfg_options: CfgOptions,
367365
potential_cfg_options: Option<CfgOptions>,
368366
env: Env,
@@ -376,7 +374,6 @@ impl CrateGraph {
376374
edition,
377375
version,
378376
display_name,
379-
crate_root_path,
380377
cfg_options,
381378
potential_cfg_options,
382379
env,
@@ -743,7 +740,6 @@ mod tests {
743740
Edition2018,
744741
None,
745742
None,
746-
None,
747743
Default::default(),
748744
Default::default(),
749745
Env::default(),
@@ -757,7 +753,6 @@ mod tests {
757753
Edition2018,
758754
None,
759755
None,
760-
None,
761756
Default::default(),
762757
Default::default(),
763758
Env::default(),
@@ -771,7 +766,6 @@ mod tests {
771766
Edition2018,
772767
None,
773768
None,
774-
None,
775769
Default::default(),
776770
Default::default(),
777771
Env::default(),
@@ -799,7 +793,6 @@ mod tests {
799793
Edition2018,
800794
None,
801795
None,
802-
None,
803796
Default::default(),
804797
Default::default(),
805798
Env::default(),
@@ -813,7 +806,6 @@ mod tests {
813806
Edition2018,
814807
None,
815808
None,
816-
None,
817809
Default::default(),
818810
Default::default(),
819811
Env::default(),
@@ -838,7 +830,6 @@ mod tests {
838830
Edition2018,
839831
None,
840832
None,
841-
None,
842833
Default::default(),
843834
Default::default(),
844835
Env::default(),
@@ -852,7 +843,6 @@ mod tests {
852843
Edition2018,
853844
None,
854845
None,
855-
None,
856846
Default::default(),
857847
Default::default(),
858848
Env::default(),
@@ -866,7 +856,6 @@ mod tests {
866856
Edition2018,
867857
None,
868858
None,
869-
None,
870859
Default::default(),
871860
Default::default(),
872861
Env::default(),
@@ -891,7 +880,6 @@ mod tests {
891880
Edition2018,
892881
None,
893882
None,
894-
None,
895883
Default::default(),
896884
Default::default(),
897885
Env::default(),
@@ -905,7 +893,6 @@ mod tests {
905893
Edition2018,
906894
None,
907895
None,
908-
None,
909896
Default::default(),
910897
Default::default(),
911898
Env::default(),

crates/ide/src/fetch_crates.rs

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
use ide_db::{
2-
base_db::{CrateOrigin, SourceDatabase},
2+
base_db::{CrateOrigin, FileId, SourceDatabase},
33
FxIndexSet, RootDatabase,
44
};
55

66
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
77
pub struct CrateInfo {
8-
pub name: String,
9-
pub version: String,
10-
pub path: String,
8+
pub name: Option<String>,
9+
pub version: Option<String>,
10+
pub root_file_id: FileId,
1111
}
1212

1313
// Feature: Show Dependency Tree
@@ -22,24 +22,16 @@ pub(crate) fn fetch_crates(db: &RootDatabase) -> FxIndexSet<CrateInfo> {
2222
.iter()
2323
.map(|crate_id| &crate_graph[crate_id])
2424
.filter(|&data| !matches!(data.origin, CrateOrigin::Local { .. }))
25-
.filter_map(|data| crate_info(data))
25+
.map(|data| crate_info(data))
2626
.collect()
2727
}
2828

29-
fn crate_info(data: &ide_db::base_db::CrateData) -> Option<CrateInfo> {
29+
fn crate_info(data: &ide_db::base_db::CrateData) -> CrateInfo {
3030
let crate_name = crate_name(data);
31-
let crate_path = data.crate_root_path.as_ref().map(|p| p.display().to_string());
32-
if let Some(crate_path) = crate_path {
33-
let version = data.version.clone().unwrap_or_else(|| "".to_owned());
34-
Some(CrateInfo { name: crate_name, version, path: crate_path })
35-
} else {
36-
None
37-
}
31+
let version = data.version.clone();
32+
CrateInfo { name: crate_name, version, root_file_id: data.root_file_id }
3833
}
3934

40-
fn crate_name(data: &ide_db::base_db::CrateData) -> String {
41-
data.display_name
42-
.clone()
43-
.map(|it| it.canonical_name().to_owned())
44-
.unwrap_or("unknown".to_string())
35+
fn crate_name(data: &ide_db::base_db::CrateData) -> Option<String> {
36+
data.display_name.as_ref().map(|it| it.canonical_name().to_owned())
4537
}

crates/ide/src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,6 @@ impl Analysis {
239239
Edition::CURRENT,
240240
None,
241241
None,
242-
None,
243242
cfg_options.clone(),
244243
None,
245244
Env::default(),

crates/ide/src/shuffle_crate_graph.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ pub(crate) fn shuffle_crate_graph(db: &mut RootDatabase) {
3434
data.edition,
3535
data.display_name.clone(),
3636
data.version.clone(),
37-
data.crate_root_path.clone(),
3837
data.cfg_options.clone(),
3938
data.potential_cfg_options.clone(),
4039
data.env.clone(),

crates/paths/src/lib.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,13 @@ impl AbsPath {
184184
self.0.ends_with(&suffix.0)
185185
}
186186

187+
pub fn name_and_extension(&self) -> Option<(&str, Option<&str>)> {
188+
Some((
189+
self.file_stem()?.to_str()?,
190+
self.extension().and_then(|extension| extension.to_str()),
191+
))
192+
}
193+
187194
// region:delegate-methods
188195

189196
// Note that we deliberately don't implement `Deref<Target = Path>` here.
@@ -213,13 +220,6 @@ impl AbsPath {
213220
pub fn exists(&self) -> bool {
214221
self.0.exists()
215222
}
216-
217-
pub fn name_and_extension(&self) -> Option<(&str, Option<&str>)> {
218-
Some((
219-
self.file_stem()?.to_str()?,
220-
self.extension().and_then(|extension| extension.to_str()),
221-
))
222-
}
223223
// endregion:delegate-methods
224224
}
225225

crates/project-model/src/workspace.rs

Lines changed: 13 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -766,7 +766,6 @@ fn project_json_to_crate_graph(
766766
proc_macro_dylib_path,
767767
is_proc_macro,
768768
repository,
769-
root_module,
770769
..
771770
},
772771
file_id,
@@ -785,7 +784,6 @@ fn project_json_to_crate_graph(
785784
*edition,
786785
display_name.clone(),
787786
version.clone(),
788-
crate_path(display_name.as_ref(), root_module),
789787
target_cfgs.iter().chain(cfg.iter()).cloned().collect(),
790788
None,
791789
env,
@@ -834,30 +832,6 @@ fn project_json_to_crate_graph(
834832
res
835833
}
836834

837-
//Thats a best effort to try and find the crate path for a project configured using JsonProject model
838-
fn crate_path(
839-
crate_name: Option<&CrateDisplayName>,
840-
root_module_path: &AbsPathBuf,
841-
) -> Option<AbsPathBuf> {
842-
crate_name.and_then(|crate_name| {
843-
let mut crate_path = None;
844-
let mut root_path = root_module_path.as_path();
845-
while let Some(path) = root_path.parent() {
846-
match path.name_and_extension() {
847-
Some((name, _)) => {
848-
if name.starts_with(crate_name.canonical_name()) {
849-
crate_path = Some(path.to_path_buf());
850-
break;
851-
}
852-
}
853-
None => break,
854-
}
855-
root_path = path;
856-
}
857-
crate_path
858-
})
859-
}
860-
861835
fn cargo_to_crate_graph(
862836
load: &mut dyn FnMut(&AbsPath) -> Option<FileId>,
863837
rustc: Option<&(CargoWorkspace, WorkspaceBuildScripts)>,
@@ -1079,7 +1053,6 @@ fn detached_files_to_crate_graph(
10791053
Edition::CURRENT,
10801054
display_name.clone(),
10811055
None,
1082-
None,
10831056
cfg_options.clone(),
10841057
None,
10851058
Env::default(),
@@ -1276,7 +1249,6 @@ fn add_target_crate_root(
12761249
edition,
12771250
Some(display_name),
12781251
Some(pkg.version.to_string()),
1279-
Some(pkg.manifest.parent().to_owned()),
12801252
cfg_options,
12811253
potential_cfg_options,
12821254
env,
@@ -1345,27 +1317,24 @@ fn sysroot_to_crate_graph(
13451317
.filter_map(|krate| {
13461318
let file_id = load(&sysroot[krate].root)?;
13471319

1348-
let env = Env::default();
1349-
let display_name =
1350-
CrateDisplayName::from_canonical_name(sysroot[krate].name.clone());
1351-
let crate_root_path = sysroot.src_root().join(display_name.canonical_name());
1320+
let env = Env::default();
1321+
let display_name = CrateDisplayName::from_canonical_name(sysroot[krate].name.clone());
13521322
let crate_id = crate_graph.add_crate_root(
13531323
file_id,
13541324
Edition::CURRENT,
13551325
Some(display_name),
13561326
None,
1357-
Some(crate_root_path),
1358-
cfg_options.clone(),
1359-
None,
1360-
env,
1361-
false,
1362-
CrateOrigin::Lang(LangCrateOrigin::from(&*sysroot[krate].name)),
1363-
target_layout.clone(),
1364-
channel,
1365-
);
1366-
Some((krate, crate_id))
1367-
})
1368-
.collect(),
1327+
cfg_options.clone(),
1328+
None,
1329+
env,
1330+
false,
1331+
CrateOrigin::Lang(LangCrateOrigin::from(&*sysroot[krate].name)),
1332+
target_layout.clone(),
1333+
channel,
1334+
);
1335+
Some((krate, crate_id))
1336+
})
1337+
.collect(),
13691338
};
13701339
for from in sysroot.crates() {
13711340
for &to in sysroot[from].deps.iter() {

crates/rust-analyzer/src/handlers.rs

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,35 @@ pub(crate) fn fetch_dependency_list(
5757
Ok(FetchDependencyListResult {
5858
crates: crates
5959
.into_iter()
60-
.map(|it| CrateInfoResult { name: it.name, version: it.version, path: it.path })
60+
.filter_map(|it| {
61+
let root_file_path = state.file_id_to_file_path(it.root_file_id);
62+
crate_path(it.name.as_ref(), root_file_path).map(|crate_path| CrateInfoResult {
63+
name: it.name,
64+
version: it.version,
65+
path: crate_path.to_string(),
66+
})
67+
})
6168
.collect(),
6269
})
6370
}
71+
72+
//Thats a best effort to try and find the crate path
73+
fn crate_path(crate_name: Option<&String>, root_file_path: VfsPath) -> Option<VfsPath> {
74+
crate_name.and_then(|crate_name| {
75+
let mut crate_path = None;
76+
let mut root_path = root_file_path;
77+
while let Some(path) = root_path.parent() {
78+
match path.name_and_extension() {
79+
Some((name, _)) => {
80+
if name.starts_with(crate_name.as_str()) {
81+
crate_path = Some(path);
82+
break;
83+
}
84+
}
85+
None => break,
86+
}
87+
root_path = path;
88+
}
89+
crate_path
90+
})
91+
}

crates/rust-analyzer/src/lsp_ext.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ pub struct AnalyzerStatusParams {
3030
#[derive(Deserialize, Serialize, Debug)]
3131
#[serde(rename_all = "camelCase")]
3232
pub struct CrateInfoResult {
33-
pub name: String,
34-
pub version: String,
33+
pub name: Option<String>,
34+
pub version: Option<String>,
3535
pub path: String,
3636
}
3737
pub enum FetchDependencyList {}

crates/rust-analyzer/tests/slow-tests/tidy.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ fn check_lsp_extensions_docs() {
4545
sh.read_file(sourcegen::project_root().join("docs/dev/lsp-extensions.md")).unwrap();
4646
let text = lsp_extensions_md
4747
.lines()
48-
.find_map(|line| dbg!(line.strip_prefix("lsp_ext.rs hash:")))
48+
.find_map(|line| line.strip_prefix("lsp_ext.rs hash:"))
4949
.unwrap()
5050
.trim();
5151
u64::from_str_radix(text, 16).unwrap()

0 commit comments

Comments
 (0)