ide: Generate monikers for local crates.

This commit is contained in:
Emilio Cobos Álvarez
2022-10-22 15:10:03 +02:00
parent 19efa0b110
commit 8039a07a5e
3 changed files with 56 additions and 18 deletions

View File

@@ -106,12 +106,12 @@ impl LsifManager<'_> {
manager: "cargo".to_string(),
uri: None,
content: None,
repository: Some(lsif::Repository {
url: pi.repo,
repository: pi.repo.map(|url| lsif::Repository {
url,
r#type: "git".to_string(),
commit_id: None,
}),
version: Some(pi.version),
version: pi.version,
}));
self.package_map.insert(package_information, result_set_id);
result_set_id

View File

@@ -231,7 +231,7 @@ fn token_to_symbol(token: &TokenStaticData) -> Option<scip_types::Symbol> {
package: Some(scip_types::Package {
manager: "cargo".to_string(),
name: package_name,
version,
version: version.unwrap_or_else(|| ".".to_string()),
..Default::default()
})
.into(),
@@ -415,4 +415,42 @@ pub mod module {
"",
);
}
#[test]
fn global_symbol_for_pub_struct() {
check_symbol(
r#"
//- /lib.rs crate:main
mod foo;
fn main() {
let _bar = foo::Bar { i: 0 };
}
//- /foo.rs
pub struct Bar$0 {
pub i: i32,
}
"#,
"rust-analyzer cargo main . foo/Bar#",
);
}
#[test]
fn global_symbol_for_pub_struct_reference() {
check_symbol(
r#"
//- /lib.rs crate:main
mod foo;
fn main() {
let _bar = foo::Bar$0 { i: 0 };
}
//- /foo.rs
pub struct Bar {
pub i: i32,
}
"#,
"rust-analyzer cargo main . foo/Bar#",
);
}
}