Skip to content

Commit 02e9e46

Browse files
committed
Move resolve raw name in name.rs
Added test for check module resolution with raw name
1 parent 018bf3d commit 02e9e46

File tree

3 files changed

+40
-11
lines changed

3 files changed

+40
-11
lines changed

crates/ra_hir/src/name.rs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,13 +98,15 @@ pub(crate) trait AsName {
9898

9999
impl AsName for ast::NameRef {
100100
fn as_name(&self) -> Name {
101-
Name::new(self.text().clone())
101+
let name = resolve_name(self.text().clone());
102+
Name::new(name)
102103
}
103104
}
104105

105106
impl AsName for ast::Name {
106107
fn as_name(&self) -> Name {
107-
Name::new(self.text().clone())
108+
let name = resolve_name(self.text().clone());
109+
Name::new(name)
108110
}
109111
}
110112

@@ -184,3 +186,12 @@ impl AsName for KnownName {
184186
Name::new(s.into())
185187
}
186188
}
189+
190+
fn resolve_name(text: SmolStr) -> SmolStr {
191+
let raw_start = "r#";
192+
if text.as_str().starts_with(raw_start) {
193+
SmolStr::new(&text[raw_start.len()..])
194+
} else {
195+
text
196+
}
197+
}

crates/ra_hir/src/nameres/collector.rs

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -643,7 +643,6 @@ fn resolve_submodule(
643643
let mod_name = path.file_stem().unwrap_or("unknown");
644644
let is_dir_owner = is_root || mod_name == "mod";
645645

646-
let name = resolve_mod_name(name.to_string());
647646
let file_mod = dir_path.join(format!("{}.rs", name));
648647
let dir_mod = dir_path.join(format!("{}/mod.rs", name));
649648
let file_dir_mod = dir_path.join(format!("{}/{}.rs", mod_name, name));
@@ -663,14 +662,6 @@ fn resolve_submodule(
663662
}
664663
}
665664

666-
fn resolve_mod_name(name: String) -> String {
667-
if name.starts_with("r#") {
668-
name.replace("r#", "")
669-
} else {
670-
name
671-
}
672-
}
673-
674665
#[cfg(test)]
675666
mod tests {
676667
use ra_db::SourceDatabase;

crates/ra_hir/src/nameres/tests.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,33 @@ fn module_resolution_works_for_non_standard_filenames() {
338338
"###);
339339
}
340340

341+
#[test]
342+
fn module_resolution_works_for_raw_modules() {
343+
let map = def_map_with_crate_graph(
344+
"
345+
//- /library.rs
346+
mod r#async;
347+
use self::r#async::Bar;
348+
349+
//- /async.rs
350+
pub struct Bar;
351+
",
352+
crate_graph! {
353+
"library": ("/library.rs", []),
354+
},
355+
);
356+
357+
assert_snapshot_matches!(map, @r###"
358+
⋮crate
359+
⋮Bar: t v
360+
⋮async: t
361+
362+
⋮crate::async
363+
⋮Bar: t v
364+
"###);
365+
366+
}
367+
341368
#[test]
342369
fn name_res_works_for_broken_modules() {
343370
covers!(name_res_works_for_broken_modules);

0 commit comments

Comments
 (0)