diff options
author | Alexander Andreev <[email protected]> | 2019-07-03 20:01:41 +0100 |
---|---|---|
committer | Alexander Andreev <[email protected]> | 2019-07-03 20:01:41 +0100 |
commit | 02e9e46ed6443f053d2c22335ff57f98d5f64f05 (patch) | |
tree | 9fda20ca35f6193e9ebcb05aa0d01b8b3e19e94b /crates/ra_hir/src/name.rs | |
parent | 018bf3d7b1cdc070aa1a0926df0840f1cf9a03b9 (diff) |
Move resolve raw name in name.rs
Added test for check module resolution with raw name
Diffstat (limited to 'crates/ra_hir/src/name.rs')
-rw-r--r-- | crates/ra_hir/src/name.rs | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/crates/ra_hir/src/name.rs b/crates/ra_hir/src/name.rs index ba17958eb..0bb7cae99 100644 --- a/crates/ra_hir/src/name.rs +++ b/crates/ra_hir/src/name.rs | |||
@@ -98,13 +98,15 @@ pub(crate) trait AsName { | |||
98 | 98 | ||
99 | impl AsName for ast::NameRef { | 99 | impl AsName for ast::NameRef { |
100 | fn as_name(&self) -> Name { | 100 | fn as_name(&self) -> Name { |
101 | Name::new(self.text().clone()) | 101 | let name = resolve_name(self.text().clone()); |
102 | Name::new(name) | ||
102 | } | 103 | } |
103 | } | 104 | } |
104 | 105 | ||
105 | impl AsName for ast::Name { | 106 | impl AsName for ast::Name { |
106 | fn as_name(&self) -> Name { | 107 | fn as_name(&self) -> Name { |
107 | Name::new(self.text().clone()) | 108 | let name = resolve_name(self.text().clone()); |
109 | Name::new(name) | ||
108 | } | 110 | } |
109 | } | 111 | } |
110 | 112 | ||
@@ -184,3 +186,12 @@ impl AsName for KnownName { | |||
184 | Name::new(s.into()) | 186 | Name::new(s.into()) |
185 | } | 187 | } |
186 | } | 188 | } |
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 | } | ||