]> git.lizzy.rs Git - rust.git/commitdiff
Move resolve raw name in name.rs
authorAlexander Andreev <andreevlex.as@gmail.com>
Wed, 3 Jul 2019 19:01:41 +0000 (22:01 +0300)
committerAlexander Andreev <andreevlex.as@gmail.com>
Wed, 3 Jul 2019 19:01:41 +0000 (22:01 +0300)
Added test for check module resolution with raw name

crates/ra_hir/src/name.rs
crates/ra_hir/src/nameres/collector.rs
crates/ra_hir/src/nameres/tests.rs

index ba17958eb9f146b0b01f8ea39fe7051191d21a1e..0bb7cae9959fd06bd0718d1c2a6ed3bd09bc6bc9 100644 (file)
@@ -98,13 +98,15 @@ pub(crate) trait AsName {
 
 impl AsName for ast::NameRef {
     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 {
     fn as_name(&self) -> Name {
-        Name::new(self.text().clone())
+        let name = resolve_name(self.text().clone());
+        Name::new(name)
     }
 }
 
@@ -184,3 +186,12 @@ fn as_name(&self) -> Name {
         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
+    }
+}
index e11198e02b31a4e5f9c57c39f1175509223d820e..ef4d1ed70f10a15b7b2badebb860624ed5d911f1 100644 (file)
@@ -643,7 +643,6 @@ fn resolve_submodule(
     let mod_name = path.file_stem().unwrap_or("unknown");
     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 dir_mod = dir_path.join(format!("{}/mod.rs", 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)]
 mod tests {
     use ra_db::SourceDatabase;
index adac814d913e2183e7cca42cc1bd00a2535a927d..78332ce7c4db37b61ea9a59b40ad9c7721703e6c 100644 (file)
@@ -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]
 fn name_res_works_for_broken_modules() {
     covers!(name_res_works_for_broken_modules);