mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-12 15:04:03 +00:00
Move resolve raw name in name.rs
Added test for check module resolution with raw name
This commit is contained in:
parent
018bf3d7b1
commit
02e9e46ed6
@ -98,13 +98,15 @@ pub(crate) trait AsName {
|
|||||||
|
|
||||||
impl AsName for ast::NameRef {
|
impl AsName for ast::NameRef {
|
||||||
fn as_name(&self) -> Name {
|
fn as_name(&self) -> Name {
|
||||||
Name::new(self.text().clone())
|
let name = resolve_name(self.text().clone());
|
||||||
|
Name::new(name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AsName for ast::Name {
|
impl AsName for ast::Name {
|
||||||
fn as_name(&self) -> Name {
|
fn as_name(&self) -> Name {
|
||||||
Name::new(self.text().clone())
|
let name = resolve_name(self.text().clone());
|
||||||
|
Name::new(name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -184,3 +186,12 @@ impl AsName for KnownName {
|
|||||||
Name::new(s.into())
|
Name::new(s.into())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn resolve_name(text: SmolStr) -> SmolStr {
|
||||||
|
let raw_start = "r#";
|
||||||
|
if text.as_str().starts_with(raw_start) {
|
||||||
|
SmolStr::new(&text[raw_start.len()..])
|
||||||
|
} else {
|
||||||
|
text
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -643,7 +643,6 @@ fn resolve_submodule(
|
|||||||
let mod_name = path.file_stem().unwrap_or("unknown");
|
let mod_name = path.file_stem().unwrap_or("unknown");
|
||||||
let is_dir_owner = is_root || mod_name == "mod";
|
let is_dir_owner = is_root || mod_name == "mod";
|
||||||
|
|
||||||
let name = resolve_mod_name(name.to_string());
|
|
||||||
let file_mod = dir_path.join(format!("{}.rs", name));
|
let file_mod = dir_path.join(format!("{}.rs", name));
|
||||||
let dir_mod = dir_path.join(format!("{}/mod.rs", name));
|
let dir_mod = dir_path.join(format!("{}/mod.rs", name));
|
||||||
let file_dir_mod = dir_path.join(format!("{}/{}.rs", mod_name, name));
|
let file_dir_mod = dir_path.join(format!("{}/{}.rs", mod_name, name));
|
||||||
@ -663,14 +662,6 @@ fn resolve_submodule(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn resolve_mod_name(name: String) -> String {
|
|
||||||
if name.starts_with("r#") {
|
|
||||||
name.replace("r#", "")
|
|
||||||
} else {
|
|
||||||
name
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use ra_db::SourceDatabase;
|
use ra_db::SourceDatabase;
|
||||||
|
@ -338,6 +338,33 @@ fn module_resolution_works_for_non_standard_filenames() {
|
|||||||
"###);
|
"###);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn module_resolution_works_for_raw_modules() {
|
||||||
|
let map = def_map_with_crate_graph(
|
||||||
|
"
|
||||||
|
//- /library.rs
|
||||||
|
mod r#async;
|
||||||
|
use self::r#async::Bar;
|
||||||
|
|
||||||
|
//- /async.rs
|
||||||
|
pub struct Bar;
|
||||||
|
",
|
||||||
|
crate_graph! {
|
||||||
|
"library": ("/library.rs", []),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_snapshot_matches!(map, @r###"
|
||||||
|
⋮crate
|
||||||
|
⋮Bar: t v
|
||||||
|
⋮async: t
|
||||||
|
⋮
|
||||||
|
⋮crate::async
|
||||||
|
⋮Bar: t v
|
||||||
|
"###);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn name_res_works_for_broken_modules() {
|
fn name_res_works_for_broken_modules() {
|
||||||
covers!(name_res_works_for_broken_modules);
|
covers!(name_res_works_for_broken_modules);
|
||||||
|
Loading…
Reference in New Issue
Block a user