Skip to content

Commit aa093f5

Browse files
committed
Fix PackageInformation having the crate name instead of package name
1 parent 1a24003 commit aa093f5

File tree

5 files changed

+40
-24
lines changed

5 files changed

+40
-24
lines changed

crates/base-db/src/fixture.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ impl ChangeFixture {
196196
Env::default(),
197197
Ok(Vec::new()),
198198
false,
199-
CrateOrigin::CratesIo { repo: None },
199+
CrateOrigin::CratesIo { repo: None, name: None },
200200
);
201201
} else {
202202
for (from, to, prelude) in crate_deps {
@@ -270,7 +270,7 @@ impl ChangeFixture {
270270
Env::default(),
271271
Ok(proc_macro),
272272
true,
273-
CrateOrigin::CratesIo { repo: None },
273+
CrateOrigin::CratesIo { repo: None, name: None },
274274
);
275275

276276
for krate in all_crates {
@@ -398,7 +398,7 @@ fn parse_crate(crate_str: String) -> (String, CrateOrigin, Option<String>) {
398398
let (version, origin) = match b.split_once(':') {
399399
Some(("CratesIo", data)) => match data.split_once(',') {
400400
Some((version, url)) => {
401-
(version, CrateOrigin::CratesIo { repo: Some(url.to_owned()) })
401+
(version, CrateOrigin::CratesIo { repo: Some(url.to_owned()), name: None })
402402
}
403403
_ => panic!("Bad crates.io parameter: {}", data),
404404
},
@@ -409,7 +409,7 @@ fn parse_crate(crate_str: String) -> (String, CrateOrigin, Option<String>) {
409409
let crate_origin = match &*crate_str {
410410
"std" => CrateOrigin::Lang(LangCrateOrigin::Std),
411411
"core" => CrateOrigin::Lang(LangCrateOrigin::Core),
412-
_ => CrateOrigin::CratesIo { repo: None },
412+
_ => CrateOrigin::CratesIo { repo: None, name: None },
413413
};
414414
(crate_str, crate_origin, None)
415415
}

crates/base-db/src/input.rs

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,10 @@ impl ops::Deref for CrateName {
136136
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
137137
pub enum CrateOrigin {
138138
/// Crates that are from crates.io official registry,
139-
CratesIo { repo: Option<String> },
139+
CratesIo {
140+
repo: Option<String>,
141+
name: Option<String>,
142+
},
140143
/// Crates that are provided by the language, like std, core, proc-macro, ...
141144
Lang(LangCrateOrigin),
142145
}
@@ -648,7 +651,7 @@ mod tests {
648651
Env::default(),
649652
Ok(Vec::new()),
650653
false,
651-
CrateOrigin::CratesIo { repo: None },
654+
CrateOrigin::CratesIo { repo: None, name: None },
652655
);
653656
let crate2 = graph.add_crate_root(
654657
FileId(2u32),
@@ -660,7 +663,7 @@ mod tests {
660663
Env::default(),
661664
Ok(Vec::new()),
662665
false,
663-
CrateOrigin::CratesIo { repo: None },
666+
CrateOrigin::CratesIo { repo: None, name: None },
664667
);
665668
let crate3 = graph.add_crate_root(
666669
FileId(3u32),
@@ -672,7 +675,7 @@ mod tests {
672675
Env::default(),
673676
Ok(Vec::new()),
674677
false,
675-
CrateOrigin::CratesIo { repo: None },
678+
CrateOrigin::CratesIo { repo: None, name: None },
676679
);
677680
assert!(graph
678681
.add_dep(crate1, Dependency::new(CrateName::new("crate2").unwrap(), crate2))
@@ -698,7 +701,7 @@ mod tests {
698701
Env::default(),
699702
Ok(Vec::new()),
700703
false,
701-
CrateOrigin::CratesIo { repo: None },
704+
CrateOrigin::CratesIo { repo: None, name: None },
702705
);
703706
let crate2 = graph.add_crate_root(
704707
FileId(2u32),
@@ -710,7 +713,7 @@ mod tests {
710713
Env::default(),
711714
Ok(Vec::new()),
712715
false,
713-
CrateOrigin::CratesIo { repo: None },
716+
CrateOrigin::CratesIo { repo: None, name: None },
714717
);
715718
assert!(graph
716719
.add_dep(crate1, Dependency::new(CrateName::new("crate2").unwrap(), crate2))
@@ -733,7 +736,7 @@ mod tests {
733736
Env::default(),
734737
Ok(Vec::new()),
735738
false,
736-
CrateOrigin::CratesIo { repo: None },
739+
CrateOrigin::CratesIo { repo: None, name: None },
737740
);
738741
let crate2 = graph.add_crate_root(
739742
FileId(2u32),
@@ -745,7 +748,7 @@ mod tests {
745748
Env::default(),
746749
Ok(Vec::new()),
747750
false,
748-
CrateOrigin::CratesIo { repo: None },
751+
CrateOrigin::CratesIo { repo: None, name: None },
749752
);
750753
let crate3 = graph.add_crate_root(
751754
FileId(3u32),
@@ -757,7 +760,7 @@ mod tests {
757760
Env::default(),
758761
Ok(Vec::new()),
759762
false,
760-
CrateOrigin::CratesIo { repo: None },
763+
CrateOrigin::CratesIo { repo: None, name: None },
761764
);
762765
assert!(graph
763766
.add_dep(crate1, Dependency::new(CrateName::new("crate2").unwrap(), crate2))
@@ -780,7 +783,7 @@ mod tests {
780783
Env::default(),
781784
Ok(Vec::new()),
782785
false,
783-
CrateOrigin::CratesIo { repo: None },
786+
CrateOrigin::CratesIo { repo: None, name: None },
784787
);
785788
let crate2 = graph.add_crate_root(
786789
FileId(2u32),
@@ -792,7 +795,7 @@ mod tests {
792795
Env::default(),
793796
Ok(Vec::new()),
794797
false,
795-
CrateOrigin::CratesIo { repo: None },
798+
CrateOrigin::CratesIo { repo: None, name: None },
796799
);
797800
assert!(graph
798801
.add_dep(

crates/ide/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ impl Analysis {
236236
Env::default(),
237237
Ok(Vec::new()),
238238
false,
239-
CrateOrigin::CratesIo { repo: None },
239+
CrateOrigin::CratesIo { repo: None, name: None },
240240
);
241241
change.change_file(file_id, Some(Arc::new(text)));
242242
change.set_crate_graph(crate_graph);

crates/ide/src/moniker.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -253,10 +253,14 @@ pub(crate) fn def_to_moniker(
253253
},
254254
kind: if krate == from_crate { MonikerKind::Export } else { MonikerKind::Import },
255255
package_information: {
256-
let name = krate.display_name(db)?.to_string();
257-
let (repo, version) = match krate.origin(db) {
258-
CrateOrigin::CratesIo { repo } => (repo?, krate.version(db)?),
256+
let (name, repo, version) = match krate.origin(db) {
257+
CrateOrigin::CratesIo { repo, name } => (
258+
name.unwrap_or(krate.display_name(db)?.canonical_name().to_string()),
259+
repo?,
260+
krate.version(db)?,
261+
),
259262
CrateOrigin::Lang(lang) => (
263+
krate.display_name(db)?.canonical_name().to_string(),
260264
"https://github.com/rust-lang/rust/".to_string(),
261265
match lang {
262266
LangCrateOrigin::Other => {

crates/project-model/src/workspace.rs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -518,9 +518,15 @@ fn project_json_to_crate_graph(
518518
proc_macro,
519519
krate.is_proc_macro,
520520
if krate.display_name.is_some() {
521-
CrateOrigin::CratesIo { repo: krate.repository.clone() }
521+
CrateOrigin::CratesIo {
522+
repo: krate.repository.clone(),
523+
name: krate
524+
.display_name
525+
.clone()
526+
.map(|n| n.canonical_name().to_string()),
527+
}
522528
} else {
523-
CrateOrigin::CratesIo { repo: None }
529+
CrateOrigin::CratesIo { repo: None, name: None }
524530
},
525531
),
526532
)
@@ -740,14 +746,17 @@ fn detached_files_to_crate_graph(
740746
let detached_file_crate = crate_graph.add_crate_root(
741747
file_id,
742748
Edition::CURRENT,
743-
display_name,
749+
display_name.clone(),
744750
None,
745751
cfg_options.clone(),
746752
cfg_options.clone(),
747753
Env::default(),
748754
Ok(Vec::new()),
749755
false,
750-
CrateOrigin::CratesIo { repo: None },
756+
CrateOrigin::CratesIo {
757+
repo: None,
758+
name: display_name.map(|n| n.canonical_name().to_string()),
759+
},
751760
);
752761

753762
public_deps.add(detached_file_crate, &mut crate_graph);
@@ -923,7 +932,7 @@ fn add_target_crate_root(
923932
env,
924933
proc_macro,
925934
is_proc_macro,
926-
CrateOrigin::CratesIo { repo: pkg.repository.clone() },
935+
CrateOrigin::CratesIo { repo: pkg.repository.clone(), name: Some(pkg.name.clone()) },
927936
)
928937
}
929938

0 commit comments

Comments
 (0)