aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_def/src/path/lower.rs
diff options
context:
space:
mode:
authorJonas Schievink <[email protected]>2021-04-01 19:35:21 +0100
committerJonas Schievink <[email protected]>2021-04-01 19:35:21 +0100
commit39d992ef559c9cd67551819a9d63ef52ef7b725f (patch)
tree49e1e59d00e46a8bb110d2b28d911c07d4a058f9 /crates/hir_def/src/path/lower.rs
parentb00266b79f0e2c2a5e332b30f7e6aba83b5e6e5a (diff)
Intern Attr, MacroCall and Path components
Diffstat (limited to 'crates/hir_def/src/path/lower.rs')
-rw-r--r--crates/hir_def/src/path/lower.rs8
1 files changed, 5 insertions, 3 deletions
diff --git a/crates/hir_def/src/path/lower.rs b/crates/hir_def/src/path/lower.rs
index 4de951fd3..28f6244da 100644
--- a/crates/hir_def/src/path/lower.rs
+++ b/crates/hir_def/src/path/lower.rs
@@ -2,6 +2,7 @@
2 2
3mod lower_use; 3mod lower_use;
4 4
5use crate::intern::Interned;
5use std::sync::Arc; 6use std::sync::Arc;
6 7
7use either::Either; 8use either::Either;
@@ -74,10 +75,11 @@ pub(super) fn lower_path(mut path: ast::Path, hygiene: &Hygiene) -> Option<Path>
74 // <T as Trait<A>>::Foo desugars to Trait<Self=T, A>::Foo 75 // <T as Trait<A>>::Foo desugars to Trait<Self=T, A>::Foo
75 Some(trait_ref) => { 76 Some(trait_ref) => {
76 let path = Path::from_src(trait_ref.path()?, hygiene)?; 77 let path = Path::from_src(trait_ref.path()?, hygiene)?;
78 let mod_path = (*path.mod_path).clone();
77 let num_segments = path.mod_path.segments.len(); 79 let num_segments = path.mod_path.segments.len();
78 kind = path.mod_path.kind; 80 kind = mod_path.kind;
79 81
80 let mut prefix_segments = path.mod_path.segments; 82 let mut prefix_segments = mod_path.segments;
81 prefix_segments.reverse(); 83 prefix_segments.reverse();
82 segments.extend(prefix_segments); 84 segments.extend(prefix_segments);
83 85
@@ -140,7 +142,7 @@ pub(super) fn lower_path(mut path: ast::Path, hygiene: &Hygiene) -> Option<Path>
140 } 142 }
141 } 143 }
142 144
143 let mod_path = ModPath::from_segments(kind, segments); 145 let mod_path = Interned::new(ModPath::from_segments(kind, segments));
144 return Some(Path { type_anchor, mod_path, generic_args }); 146 return Some(Path { type_anchor, mod_path, generic_args });
145 147
146 fn qualifier(path: &ast::Path) -> Option<ast::Path> { 148 fn qualifier(path: &ast::Path) -> Option<ast::Path> {