mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-01 06:11:35 +00:00
Make edition handling a bit nicer and allow specifying edition in crate_graph macro
This commit is contained in:
parent
d5ad38cbb8
commit
70839b7ef8
5 changed files with 28 additions and 25 deletions
|
@ -59,12 +59,12 @@ impl MockDatabase {
|
|||
pub fn set_crate_graph_from_fixture(&mut self, graph: CrateGraphFixture) {
|
||||
let mut ids = FxHashMap::default();
|
||||
let mut crate_graph = CrateGraph::default();
|
||||
for (crate_name, (crate_root, _)) in graph.0.iter() {
|
||||
for (crate_name, (crate_root, edition, _)) in graph.0.iter() {
|
||||
let crate_root = self.file_id_of(&crate_root);
|
||||
let crate_id = crate_graph.add_crate_root(crate_root, Edition::Edition2018);
|
||||
let crate_id = crate_graph.add_crate_root(crate_root, *edition);
|
||||
ids.insert(crate_name, crate_id);
|
||||
}
|
||||
for (crate_name, (_, deps)) in graph.0.iter() {
|
||||
for (crate_name, (_, _, deps)) in graph.0.iter() {
|
||||
let from = ids[crate_name];
|
||||
for dep in deps {
|
||||
let to = ids[dep];
|
||||
|
@ -233,16 +233,19 @@ impl MockDatabase {
|
|||
}
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct CrateGraphFixture(pub FxHashMap<String, (String, Vec<String>)>);
|
||||
pub struct CrateGraphFixture(pub FxHashMap<String, (String, Edition, Vec<String>)>);
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! crate_graph {
|
||||
($($crate_name:literal: ($crate_path:literal, [$($dep:literal),*]),)*) => {{
|
||||
($($crate_name:literal: ($crate_path:literal, $($edition:literal,)? [$($dep:literal),*]),)*) => {{
|
||||
let mut res = $crate::mock::CrateGraphFixture::default();
|
||||
$(
|
||||
#[allow(unused_mut, unused_assignments)]
|
||||
let mut edition = ra_db::Edition::Edition2018;
|
||||
$(edition = ra_db::Edition::from_string($edition);)?
|
||||
res.0.insert(
|
||||
$crate_name.to_string(),
|
||||
($crate_path.to_string(), vec![$($dep.to_string()),*])
|
||||
($crate_path.to_string(), edition, vec![$($dep.to_string()),*])
|
||||
);
|
||||
)*
|
||||
res
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue